Warning: Permanently added '2620:52:6:1161:dead:beef:cafe:c348' (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/10164392-fedora-rawhide-x86_64 --chroot fedora-rawhide-x86_64 Version: 1.6 PID: 3025 Logging PID: 3027 Task: {'allow_user_ssh': False, 'appstream': False, 'background': False, 'build_id': 10164392, 'buildroot_pkgs': [], 'chroot': 'fedora-rawhide-x86_64', 'enable_net': False, 'fedora_review': False, 'git_hash': 'f9396bb1ed6f2bdb817de238f1398b3a08e310b9', '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}], 'sandbox': 'r0x0d/python-pydocket--r0x0d', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': 0, 'submitter': 'r0x0d', 'tags': [], 'task_id': '10164392-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-py9mtfzz/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-py9mtfzz/python-pydocket', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/python-pydocket'... Running: git checkout f9396bb1ed6f2bdb817de238f1398b3a08e310b9 -- cmd: ['git', 'checkout', 'f9396bb1ed6f2bdb817de238f1398b3a08e310b9', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/python-pydocket rc: 0 stdout: stderr: Note: switching to 'f9396bb1ed6f2bdb817de238f1398b3a08e310b9'. 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 f9396bb automatic import of python-pydocket Running: dist-git-client sources cmd: ['dist-git-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/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 100 340k 100 340k 0 0 3707k 0 --:--:-- --:--:-- --:--:-- 3740k INFO: Reading stdout from command: md5sum pydocket-0.17.9.tar.gz tail: /var/lib/copr-rpmbuild/main.log: file truncated Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/python-pydocket/python-pydocket.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/python-pydocket --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1771936605.746189 -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-py9mtfzz/python-pydocket/python-pydocket.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-py9mtfzz/python-pydocket --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1771936605.746189 -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-py9mtfzz/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-1771936605.746189/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-3a91210a-81d1-4fec-8750-132738735064 INFO: Checking that e6ad0f369b736af8f9883012495dcb81ebc71dbecf8004e059f9750ffc514133 image matches host's architecture INFO: Copy content of container e6ad0f369b736af8f9883012495dcb81ebc71dbecf8004e059f9750ffc514133 to /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1771936605.746189/root INFO: mounting e6ad0f369b736af8f9883012495dcb81ebc71dbecf8004e059f9750ffc514133 with podman image mount INFO: image e6ad0f369b736af8f9883012495dcb81ebc71dbecf8004e059f9750ffc514133 as /var/lib/containers/storage/overlay/6dd5203d49955bfc7a8c08ab7834bb597f8ef440b7c296c9fa3385e73635e264/merged INFO: umounting image e6ad0f369b736af8f9883012495dcb81ebc71dbecf8004e059f9750ffc514133 (/var/lib/containers/storage/overlay/6dd5203d49955bfc7a8c08ab7834bb597f8ef440b7c296c9fa3385e73635e264/merged) with podman image umount INFO: Removing image mock-bootstrap-3a91210a-81d1-4fec-8750-132738735064 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-1771936605.746189/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: Copr repository 100% | 2.2 KiB/s | 1.6 KiB | 00m01s fedora 100% | 21.2 MiB/s | 21.9 MiB | 00m01s 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-1.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.3.2-3.fc44 fedora 1.8 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-1.fc45 fedora 10.7 MiB crypto-policies noarch 0:20251128-3.git19878fe.fc44 fedora 132.6 KiB curl x86_64 0:8.19.0~rc1-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~rc1-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, 223 MiB extra will be used (install 223 MiB, remove 0 B). [ 1/184] bzip2-0:1.0.8-23.fc44.x86_64 100% | 3.0 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% | 75.8 MiB/s | 1.9 MiB | 00m00s [ 4/184] coreutils-0:9.10-1.fc45.x86_6 100% | 44.1 MiB/s | 1.2 MiB | 00m00s [ 5/184] diffutils-0:3.12-5.fc44.x86_6 100% | 64.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% | 41.0 MiB/s | 83.9 KiB | 00m00s [ 8/184] findutils-1:4.10.0-7.fc44.x86 100% | 134.9 MiB/s | 552.5 KiB | 00m00s [ 9/184] grep-0:3.12-3.fc44.x86_64 100% | 98.2 MiB/s | 301.6 KiB | 00m00s [ 10/184] gzip-0:1.14-2.fc44.x86_64 100% | 174.9 MiB/s | 179.1 KiB | 00m00s [ 11/184] info-0:7.2-9.fc45.x86_64 100% | 91.2 MiB/s | 186.7 KiB | 00m00s [ 12/184] patch-0:2.8-4.fc44.x86_64 100% | 56.3 MiB/s | 115.2 KiB | 00m00s [ 13/184] redhat-rpm-config-0:343-20.fc 100% | 76.6 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% | 103.8 MiB/s | 319.0 KiB | 00m00s [ 16/184] shadow-utils-2:4.19.3-1.fc45. 100% | 216.1 MiB/s | 1.3 MiB | 00m00s [ 17/184] unzip-0:6.0-69.fc44.x86_64 100% | 48.7 MiB/s | 199.6 KiB | 00m00s [ 18/184] tar-2:1.35-8.fc44.x86_64 100% | 141.3 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.3.2-3.fc44.x86_64 100% | 141.9 MiB/s | 1.1 MiB | 00m00s [ 22/184] util-linux-0:2.41.3-12.fc44.x 100% | 133.8 MiB/s | 1.2 MiB | 00m00s [ 23/184] filesystem-0:3.18-52.fc44.x86 100% | 133.4 MiB/s | 1.3 MiB | 00m00s [ 24/184] ncurses-libs-0:6.6-1.fc44.x86 100% | 84.0 MiB/s | 344.1 KiB | 00m00s [ 25/184] bzip2-libs-0:1.0.8-23.fc44.x8 100% | 42.8 MiB/s | 43.8 KiB | 00m00s [ 26/184] glibc-0:2.43.9000-2.fc45.x86_ 100% | 158.4 MiB/s | 2.4 MiB | 00m00s [ 27/184] gmp-1:6.3.0-5.fc44.x86_64 100% | 52.5 MiB/s | 322.5 KiB | 00m00s [ 28/184] libacl-0:2.3.2-6.fc44.x86_64 100% | 24.2 MiB/s | 24.8 KiB | 00m00s [ 29/184] libattr-0:2.5.2-8.fc44.x86_64 100% | 17.5 MiB/s | 17.9 KiB | 00m00s [ 30/184] libcap-0:2.77-2.fc44.x86_64 100% | 86.5 MiB/s | 88.5 KiB | 00m00s [ 31/184] libselinux-0:3.10-1.fc44.x86_ 100% | 99.6 MiB/s | 102.0 KiB | 00m00s [ 32/184] coreutils-common-0:9.10-1.fc4 100% | 164.1 MiB/s | 2.1 MiB | 00m00s [ 33/184] fedora-repos-0:45-0.1.noarch 100% | 9.0 MiB/s | 9.2 KiB | 00m00s [ 34/184] systemd-libs-0:259.1-1.fc45.x 100% | 141.2 MiB/s | 867.4 KiB | 00m00s [ 35/184] glibc-common-0:2.43.9000-2.fc 100% | 122.8 MiB/s | 377.2 KiB | 00m00s [ 36/184] pcre2-0:10.47-1.fc44.1.x86_64 100% | 135.6 MiB/s | 277.7 KiB | 00m00s [ 37/184] ed-0:1.22.5-2.fc45.x86_64 100% | 83.4 MiB/s | 85.4 KiB | 00m00s [ 38/184] R-srpm-macros-0:1.3.5-1.fc45. 100% | 10.6 MiB/s | 10.8 KiB | 00m00s [ 39/184] ansible-srpm-macros-0:1-20.1. 100% | 19.6 MiB/s | 20.1 KiB | 00m00s [ 40/184] openssl-libs-1:3.5.5-1.fc44.x 100% | 196.0 MiB/s | 2.7 MiB | 00m00s [ 41/184] build-reproducibility-srpm-ma 100% | 3.2 MiB/s | 13.1 KiB | 00m00s [ 42/184] cmake-srpm-macros-0:4.2.3-2.f 100% | 3.4 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% | 26.0 MiB/s | 26.6 KiB | 00m00s [ 47/184] forge-srpm-macros-0:0.4.0-4.f 100% | 19.5 MiB/s | 20.0 KiB | 00m00s [ 48/184] fonts-srpm-macros-1:5.0.0-3.f 100% | 26.6 MiB/s | 27.2 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% | 8.9 MiB/s | 9.1 KiB | 00m00s [ 51/184] ghc-srpm-macros-0:1.10-1.fc44 100% | 8.6 MiB/s | 8.8 KiB | 00m00s [ 52/184] gnat-srpm-macros-0:7-2.fc44.n 100% | 8.5 MiB/s | 8.7 KiB | 00m00s [ 53/184] java-srpm-macros-0:1-8.fc44.n 100% | 7.9 MiB/s | 8.1 KiB | 00m00s [ 54/184] go-srpm-macros-0:3.8.0-2.fc44 100% | 13.8 MiB/s | 28.2 KiB | 00m00s [ 55/184] kernel-srpm-macros-0:1.0-28.f 100% | 8.8 MiB/s | 9.0 KiB | 00m00s [ 56/184] lua-srpm-macros-0:1-17.fc44.n 100% | 8.7 MiB/s | 8.9 KiB | 00m00s [ 57/184] openblas-srpm-macros-0:2-21.f 100% | 7.6 MiB/s | 7.8 KiB | 00m00s [ 58/184] ocaml-srpm-macros-0:11-3.fc44 100% | 9.1 MiB/s | 9.3 KiB | 00m00s [ 59/184] package-notes-srpm-macros-0:0 100% | 9.5 MiB/s | 9.7 KiB | 00m00s [ 60/184] perl-srpm-macros-0:1-61.fc44. 100% | 8.2 MiB/s | 8.4 KiB | 00m00s [ 61/184] pyproject-srpm-macros-0:1.18. 100% | 13.2 MiB/s | 13.5 KiB | 00m00s [ 62/184] python-srpm-macros-0:3.14-10. 100% | 23.4 MiB/s | 24.0 KiB | 00m00s [ 63/184] qt5-srpm-macros-0:5.15.18-2.f 100% | 8.5 MiB/s | 8.7 KiB | 00m00s [ 64/184] qt6-srpm-macros-0:6.10.2-1.fc 100% | 8.9 MiB/s | 9.1 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% | 141.2 MiB/s | 578.3 KiB | 00m00s [ 68/184] zig-srpm-macros-0:1-8.fc44.no 100% | 8.6 MiB/s | 8.8 KiB | 00m00s [ 69/184] zip-0:3.0-45.fc44.x86_64 100% | 129.1 MiB/s | 264.4 KiB | 00m00s [ 70/184] debugedit-0:5.2-6.fc44.x86_64 100% | 42.3 MiB/s | 86.7 KiB | 00m00s [ 71/184] elfutils-libelf-0:0.194-3.fc4 100% | 100.2 MiB/s | 205.1 KiB | 00m00s [ 72/184] elfutils-0:0.194-3.fc44.x86_6 100% | 142.6 MiB/s | 583.9 KiB | 00m00s [ 73/184] libgcc-0:16.0.1-0.7.fc45.x86_ 100% | 58.7 MiB/s | 120.3 KiB | 00m00s [ 74/184] libarchive-0:3.8.4-2.fc44.x86 100% | 107.8 MiB/s | 441.4 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% | 184.2 MiB/s | 943.3 KiB | 00m00s [ 77/184] readline-0:8.3-4.fc44.x86_64 100% | 74.8 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% | 94.0 MiB/s | 192.5 KiB | 00m00s [ 80/184] audit-libs-0:4.1.3-1.fc44.x86 100% | 69.4 MiB/s | 142.1 KiB | 00m00s [ 81/184] rpm-libs-0:6.0.1-5.fc45.x86_6 100% | 101.4 MiB/s | 415.5 KiB | 00m00s [ 82/184] libeconf-0:0.7.9-3.fc44.x86_6 100% | 35.4 MiB/s | 36.2 KiB | 00m00s [ 83/184] libsemanage-0:3.10-1.fc44.x86 100% | 124.3 MiB/s | 127.3 KiB | 00m00s [ 84/184] pam-libs-0:1.7.2-1.fc44.x86_6 100% | 57.7 MiB/s | 59.1 KiB | 00m00s [ 85/184] libxcrypt-0:4.5.2-3.fc44.x86_ 100% | 64.1 MiB/s | 131.2 KiB | 00m00s [ 86/184] setup-0:2.15.0-28.fc44.noarch 100% | 153.5 MiB/s | 157.2 KiB | 00m00s [ 87/184] xz-libs-1:5.8.2-2.fc44.x86_64 100% | 114.1 MiB/s | 116.8 KiB | 00m00s [ 88/184] libblkid-0:2.41.3-12.fc44.x86 100% | 63.2 MiB/s | 129.4 KiB | 00m00s [ 89/184] mpfr-0:4.2.2-3.fc44.x86_64 100% | 116.5 MiB/s | 357.8 KiB | 00m00s [ 90/184] libcap-ng-0:0.9.1-1.fc45.x86_ 100% | 32.1 MiB/s | 32.8 KiB | 00m00s [ 91/184] libfdisk-0:2.41.3-12.fc44.x86 100% | 82.1 MiB/s | 168.1 KiB | 00m00s [ 92/184] liblastlog2-0:2.41.3-12.fc44. 100% | 22.9 MiB/s | 23.5 KiB | 00m00s [ 93/184] libmount-0:2.41.3-12.fc44.x86 100% | 83.5 MiB/s | 171.0 KiB | 00m00s [ 94/184] libsmartcols-0:2.41.3-12.fc44 100% | 42.4 MiB/s | 86.9 KiB | 00m00s [ 95/184] libuuid-0:2.41.3-12.fc44.x86_ 100% | 26.0 MiB/s | 26.6 KiB | 00m00s [ 96/184] util-linux-core-0:2.41.3-12.f 100% | 136.2 MiB/s | 557.8 KiB | 00m00s [ 97/184] zlib-ng-compat-0:2.3.3-5.fc45 100% | 29.7 MiB/s | 91.2 KiB | 00m00s [ 98/184] ncurses-base-0:6.6-1.fc44.noa 100% | 85.9 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] glibc-gconv-extra-0:2.43.9000 100% | 207.1 MiB/s | 1.7 MiB | 00m00s [101/184] crypto-policies-0:20251128-3. 100% | 48.0 MiB/s | 98.3 KiB | 00m00s [102/184] libsepol-0:3.10-1.fc44.x86_64 100% | 59.8 MiB/s | 367.6 KiB | 00m00s [103/184] ca-certificates-0:2025.2.80_v 100% | 135.8 MiB/s | 973.5 KiB | 00m00s [104/184] fedora-gpg-keys-0:45-0.1.noar 100% | 69.0 MiB/s | 141.3 KiB | 00m00s [105/184] fedora-repos-rawhide-0:45-0.1 100% | 4.3 MiB/s | 8.8 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% | 112.9 MiB/s | 347.0 KiB | 00m00s [108/184] add-determinism-0:0.7.2-4.fc4 100% | 168.4 MiB/s | 862.4 KiB | 00m00s [109/184] curl-0:8.19.0~rc1-1.fc45.x86_ 100% | 78.3 MiB/s | 240.6 KiB | 00m00s [110/184] file-libs-0:5.46-9.fc44.x86_6 100% | 166.7 MiB/s | 853.4 KiB | 00m00s [111/184] elfutils-debuginfod-client-0: 100% | 22.8 MiB/s | 46.7 KiB | 00m00s [112/184] elfutils-libs-0:0.194-3.fc44. 100% | 92.1 MiB/s | 282.8 KiB | 00m00s [113/184] lz4-libs-0:1.10.0-4.fc44.x86_ 100% | 37.9 MiB/s | 77.7 KiB | 00m00s [114/184] libzstd-0:1.5.7-5.fc44.x86_64 100% | 88.9 MiB/s | 364.2 KiB | 00m00s [115/184] libxml2-0:2.12.10-6.fc44.x86_ 100% | 141.5 MiB/s | 724.6 KiB | 00m00s [116/184] lua-libs-0:5.5.0-1.fc45.x86_6 100% | 140.3 MiB/s | 143.6 KiB | 00m00s [117/184] libgomp-0:16.0.1-0.7.fc45.x86 100% | 123.9 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% | 11.6 MiB/s | 11.9 KiB | 00m00s [120/184] sqlite-libs-0:3.51.2-1.fc44.x 100% | 195.1 MiB/s | 799.2 KiB | 00m00s [121/184] json-c-0:0.18-8.fc44.x86_64 100% | 22.6 MiB/s | 46.3 KiB | 00m00s [122/184] rpm-sequoia-0:1.10.1-1.fc45.x 100% | 127.5 MiB/s | 914.2 KiB | 00m00s [123/184] ima-evm-utils-libs-0:1.6.2-8. 100% | 29.3 MiB/s | 30.0 KiB | 00m00s [124/184] libfsverity-0:1.6-4.fc44.x86_ 100% | 18.8 MiB/s | 19.2 KiB | 00m00s [125/184] gpgverify-0:2.2-4.fc44.noarch 100% | 11.0 MiB/s | 11.2 KiB | 00m00s [126/184] gnupg2-dirmngr-0:2.4.9-5.fc44 100% | 137.9 MiB/s | 282.4 KiB | 00m00s [127/184] gnupg2-0:2.4.9-5.fc44.x86_64 100% | 206.6 MiB/s | 1.7 MiB | 00m00s [128/184] gnupg2-gpg-agent-0:2.4.9-5.fc 100% | 68.7 MiB/s | 281.3 KiB | 00m00s [129/184] gnupg2-gpgconf-0:2.4.9-5.fc44 100% | 57.2 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] gnupg2-verify-0:2.4.9-5.fc44. 100% | 86.3 MiB/s | 176.8 KiB | 00m00s [132/184] libassuan-0:2.5.7-5.fc44.x86_ 100% | 33.6 MiB/s | 68.9 KiB | 00m00s [133/184] npth-0:1.8-4.fc44.x86_64 100% | 25.1 MiB/s | 25.8 KiB | 00m00s [134/184] libgcrypt-0:1.12.1-1.fc45.x86 100% | 204.9 MiB/s | 629.4 KiB | 00m00s [135/184] libgpg-error-0:1.59-1.fc45.x8 100% | 62.0 MiB/s | 253.8 KiB | 00m00s [136/184] tpm2-tss-0:4.1.3-9.fc44.x86_6 100% | 143.5 MiB/s | 440.9 KiB | 00m00s [137/184] libksba-0:1.6.8-1.fc45.x86_64 100% | 82.5 MiB/s | 168.9 KiB | 00m00s [138/184] openldap-0:2.6.10-7.fc44.x86_ 100% | 88.2 MiB/s | 271.1 KiB | 00m00s [139/184] libusb1-0:1.0.29-5.fc44.x86_6 100% | 80.8 MiB/s | 82.8 KiB | 00m00s [140/184] gnutls-0:3.8.12-1.fc45.x86_64 100% | 200.3 MiB/s | 1.4 MiB | 00m00s [141/184] libtasn1-0:4.20.0-3.fc44.x86_ 100% | 37.2 MiB/s | 76.2 KiB | 00m00s [142/184] libidn2-0:2.3.8-3.fc44.x86_64 100% | 85.7 MiB/s | 175.5 KiB | 00m00s [143/184] libunistring-0:1.1-11.fc44.x8 100% | 133.7 MiB/s | 547.8 KiB | 00m00s [144/184] p11-kit-0:0.26.2-1.fc45.x86_6 100% | 108.6 MiB/s | 555.9 KiB | 00m00s [145/184] nettle-0:3.10.1-3.fc44.x86_64 100% | 69.7 MiB/s | 428.0 KiB | 00m00s [146/184] libtool-ltdl-0:2.5.4-10.fc44. 100% | 36.2 MiB/s | 37.0 KiB | 00m00s [147/184] cyrus-sasl-lib-0:2.1.28-35.fc 100% | 156.4 MiB/s | 800.7 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% | 41.4 MiB/s | 42.4 KiB | 00m00s [150/184] alternatives-0:1.33-5.fc44.x8 100% | 19.9 MiB/s | 40.8 KiB | 00m00s [151/184] gdbm-libs-1:1.23-11.fc44.x86_ 100% | 28.7 MiB/s | 58.8 KiB | 00m00s [152/184] jansson-0:2.14-4.fc44.x86_64 100% | 46.0 MiB/s | 47.1 KiB | 00m00s [153/184] pkgconf-pkg-config-0:2.5.1-1. 100% | 9.2 MiB/s | 9.5 KiB | 00m00s [154/184] pkgconf-0:2.5.1-1.fc45.x86_64 100% | 47.5 MiB/s | 48.7 KiB | 00m00s [155/184] pkgconf-m4-0:2.5.1-1.fc45.noa 100% | 13.4 MiB/s | 13.8 KiB | 00m00s [156/184] libpkgconf-0:2.5.1-1.fc45.x86 100% | 41.7 MiB/s | 42.7 KiB | 00m00s [157/184] p11-kit-trust-0:0.26.2-1.fc45 100% | 71.5 MiB/s | 146.4 KiB | 00m00s [158/184] fedora-release-0:45-0.1.noarc 100% | 12.8 MiB/s | 13.1 KiB | 00m00s [159/184] systemd-standalone-sysusers-0 100% | 73.3 MiB/s | 150.1 KiB | 00m00s [160/184] xxhash-libs-0:0.8.3-4.fc44.x8 100% | 20.1 MiB/s | 41.2 KiB | 00m00s [161/184] fedora-release-identity-basic 100% | 13.6 MiB/s | 13.9 KiB | 00m00s [162/184] libcurl-0:8.19.0~rc1-1.fc45.x 100% | 111.5 MiB/s | 456.6 KiB | 00m00s [163/184] binutils-0:2.46-1.fc45.x86_64 100% | 197.0 MiB/s | 6.1 MiB | 00m00s [164/184] krb5-libs-0:1.22.2-2.fc45.x86 100% | 71.3 MiB/s | 803.3 KiB | 00m00s [165/184] libbrotli-0:1.2.0-3.fc44.x86_ 100% | 113.2 MiB/s | 347.8 KiB | 00m00s [166/184] libnghttp2-0:1.68.0-3.fc44.x8 100% | 37.7 MiB/s | 77.2 KiB | 00m00s [167/184] libnghttp3-0:1.15.0-1.fc44.x8 100% | 72.2 MiB/s | 73.9 KiB | 00m00s [168/184] libpsl-0:0.21.5-7.fc44.x86_64 100% | 63.7 MiB/s | 65.3 KiB | 00m00s [169/184] gdb-minimal-0:17.1-4.fc45.x86 100% | 152.7 MiB/s | 4.7 MiB | 00m00s [170/184] ngtcp2-0:1.19.0-2.fc44.x86_64 100% | 30.2 MiB/s | 154.8 KiB | 00m00s [171/184] libssh-0:0.12.0-1.fc45.x86_64 100% | 57.4 MiB/s | 293.7 KiB | 00m00s [172/184] ngtcp2-crypto-ossl-0:1.19.0-2 100% | 26.7 MiB/s | 27.4 KiB | 00m00s [173/184] keyutils-libs-0:1.6.3-7.fc44. 100% | 30.8 MiB/s | 31.5 KiB | 00m00s [174/184] libcom_err-0:1.47.3-4.fc44.x8 100% | 26.5 MiB/s | 27.1 KiB | 00m00s [175/184] libverto-0:0.3.2-12.fc44.x86_ 100% | 20.6 MiB/s | 21.1 KiB | 00m00s [176/184] libfido2-0:1.16.0-5.fc44.x86_ 100% | 102.1 MiB/s | 104.5 KiB | 00m00s [177/184] publicsuffix-list-dafsa-0:202 100% | 29.4 MiB/s | 60.3 KiB | 00m00s [178/184] libssh-config-0:0.12.0-1.fc45 100% | 9.2 MiB/s | 9.4 KiB | 00m00s [179/184] libcbor-0:0.13.0-2.fc44.x86_6 100% | 35.1 MiB/s | 36.0 KiB | 00m00s [180/184] selinux-policy-0:42.24-1.fc45 100% | 33.7 MiB/s | 69.0 KiB | 00m00s [181/184] policycoreutils-0:3.10-2.fc45 100% | 84.3 MiB/s | 258.8 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% | 340.5 MiB/s | 6.8 MiB | 00m00s -------------------------------------------------------------------------------- [184/184] Total 100% | 251.3 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% | 652.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% | 69.4 MiB/s | 71.1 KiB | 00m00s [ 6/186] Installing fedora-release-ide 100% | 0.0 B/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% | 288.8 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% | 235.6 MiB/s | 8.5 MiB | 00m00s [ 20/186] Installing glibc-common-0:2.4 100% | 57.2 MiB/s | 1.0 MiB | 00m00s [ 21/186] Installing glibc-gconv-extra- 100% | 215.5 MiB/s | 7.8 MiB | 00m00s [ 22/186] Installing glibc-0:2.43.9000- 100% | 165.8 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% | 233.7 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% | 134.5 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% | 265.1 MiB/s | 1.6 MiB | 00m00s [ 44/186] Installing gnupg2-gpgconf-0:2 100% | 18.9 MiB/s | 251.8 KiB | 00m00s [ 45/186] Installing libattr-0:2.5.2-8. 100% | 24.7 MiB/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% | 50.1 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% | 49.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% | 20.4 MiB/s | 292.3 KiB | 00m00s [ 60/186] Installing mpfr-0:4.2.2-3.fc4 100% | 166.2 MiB/s | 850.8 KiB | 00m00s [ 61/186] Installing gawk-0:5.3.2-3.fc4 100% | 83.3 MiB/s | 1.8 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% | 29.3 MiB/s | 449.3 KiB | 00m00s [ 64/186] Installing file-libs-0:5.46-9 100% | 515.7 MiB/s | 11.9 MiB | 00m00s [ 65/186] Installing file-0:5.46-9.fc44 100% | 7.1 MiB/s | 101.6 KiB | 00m00s [ 66/186] Installing diffutils-0:3.12-5 100% | 78.6 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% | 14.1 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% | 292.4 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% | 108.1 MiB/s | 2.6 MiB | 00m00s [ 78/186] Installing alternatives-0:1.3 100% | 4.8 MiB/s | 63.6 KiB | 00m00s [ 79/186] Installing p11-kit-trust-0:0. 100% | 21.3 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% | 316.8 MiB/s | 9.2 MiB | 00m00s [ 82/186] Installing coreutils-0:9.10-1 100% | 132.4 MiB/s | 5.7 MiB | 00m00s [ 83/186] Installing ca-certificates-0: 100% | 1.5 MiB/s | 2.5 MiB | 00m02s [ 84/186] Installing gzip-0:1.14-2.fc44 100% | 24.8 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% | 70.6 MiB/s | 1.5 MiB | 00m00s [ 90/186] Installing zip-0:3.0-45.fc44. 100% | 45.7 MiB/s | 701.9 KiB | 00m00s [ 91/186] Installing gnupg2-keyboxd-0:2 100% | 24.7 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% | 124.1 MiB/s | 3.0 MiB | 00m00s [ 94/186] Installing linkdupes-0:0.7.2- 100% | 48.3 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% | 5.6 MiB/s | 39.8 KiB | 00m00s [ 97/186] Installing systemd-standalone 100% | 19.9 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% | 81.4 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.2 MiB/s | 33.6 KiB | 00m00s [103/186] Installing selinux-policy-tar 100% | 131.1 MiB/s | 14.8 MiB | 00m00s [104/186] Installing zstd-0:1.5.7-5.fc4 100% | 29.1 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% | 0.0 B/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% | 10.6 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% | 163.9 MiB/s | 671.3 KiB | 00m00s [125/186] Installing gnupg2-dirmngr-0:2 100% | 28.3 MiB/s | 636.6 KiB | 00m00s [126/186] Installing gnupg2-0:2.4.9-5.f 100% | 191.4 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% | 6.6 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~rc1- 100% | 18.1 MiB/s | 482.0 KiB | 00m00s [146/186] Installing rpm-0:6.0.1-5.fc45 100% | 53.1 MiB/s | 2.6 MiB | 00m00s [147/186] Installing cmake-srpm-macros- 100% | 785.2 KiB/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% | 9.1 MiB/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% | 38.0 MiB/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% | 4.9 MiB/s | 86.0 KiB | 00m00s [157/186] Installing elfutils-0:0.194-3 100% | 128.6 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% | 211.8 MiB/s | 14.2 MiB | 00m00s [160/186] Installing debugedit-0:5.2-6. 100% | 10.8 MiB/s | 221.6 KiB | 00m00s [161/186] Installing rpm-build-libs-0:6 100% | 135.3 MiB/s | 277.2 KiB | 00m00s [162/186] Installing rust-srpm-macros-0 100% | 6.2 MiB/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% | 35.4 MiB/s | 36.2 KiB | 00m00s [175/186] Installing redhat-rpm-config- 100% | 18.5 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% | 13.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% | 5.6 MiB/s | 85.6 KiB | 00m00s [185/186] Installing shadow-utils-2:4.1 100% | 108.7 MiB/s | 4.0 MiB | 00m00s [186/186] Installing info-0:7.2-9.fc45. 100% | 39.9 KiB/s | 366.0 KiB | 00m09s 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-1.fc45.x86_64 coreutils-common-9.10-1.fc45.x86_64 cpio-2.15-9.fc44.x86_64 crypto-policies-20251128-3.git19878fe.fc44.noarch curl-8.19.0~rc1-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.3.2-3.fc44.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~rc1-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=1771891200 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-1771936605.746189/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-py9mtfzz/python-pydocket/python-pydocket.spec) Config(child) 0 minutes 31 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-1771936605.746189/root. INFO: reusing tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1771936605.746189/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-1771936605.746189/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=1771891200 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.src.rpm Updating and loading repositories: fedora 100% | 166.7 KiB/s | 41.0 KiB | 00m00s Copr repository 100% | 6.9 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-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 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-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:25.0-8.fc44 fedora 607.4 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-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-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: 26 packages Total size of inbound packages is 19 MiB. Need to download 19 MiB. After this operation, 89 MiB extra will be used (install 89 MiB, remove 0 B). [ 1/26] python3-docker-0:7.1.0-10.fc44. 100% | 16.1 MiB/s | 297.3 KiB | 00m00s [ 2/26] python3-pytest-asyncio-0:1.1.0- 100% | 2.1 MiB/s | 41.3 KiB | 00m00s [ 3/26] tomcli-0:0.10.1-4.fc44.noarch 100% | 36.6 MiB/s | 75.0 KiB | 00m00s [ 4/26] python3-requests-0:2.32.5-3.fc4 100% | 52.1 MiB/s | 160.1 KiB | 00m00s [ 5/26] python3-devel-0:3.14.3-1.fc45.x 100% | 71.2 MiB/s | 437.2 KiB | 00m00s [ 6/26] python3-pytest-0:8.4.2-2.fc44.n 100% | 79.9 MiB/s | 2.3 MiB | 00m00s [ 7/26] python3-packaging-0:25.0-8.fc44 100% | 17.5 MiB/s | 161.2 KiB | 00m00s [ 8/26] python3-urllib3-0:2.6.3-2.fc44. 100% | 22.7 MiB/s | 301.9 KiB | 00m00s [ 9/26] python3-iniconfig-0:2.3.0-2.fc4 100% | 2.0 MiB/s | 26.3 KiB | 00m00s [10/26] python3-click-1:8.1.7-12.fc44.n 100% | 49.7 MiB/s | 254.5 KiB | 00m00s [11/26] python3-pluggy-0:1.6.0-5.fc44.n 100% | 10.0 MiB/s | 61.7 KiB | 00m00s [12/26] python3-charset-normalizer-0:3. 100% | 38.2 MiB/s | 117.3 KiB | 00m00s [13/26] python3-idna-0:3.11-2.fc44.noar 100% | 30.4 MiB/s | 124.7 KiB | 00m00s [14/26] expat-0:2.7.3-2.fc44.x86_64 100% | 40.6 MiB/s | 124.8 KiB | 00m00s [15/26] python3-pygments-0:2.19.1-9.fc4 100% | 116.0 MiB/s | 2.7 MiB | 00m00s [16/26] mpdecimal-0:4.0.1-3.fc44.x86_64 100% | 24.2 MiB/s | 99.1 KiB | 00m00s [17/26] tzdata-0:2025c-2.fc44.noarch 100% | 77.5 MiB/s | 714.2 KiB | 00m00s [18/26] python-pip-wheel-0:25.3-2.fc44. 100% | 94.3 MiB/s | 1.1 MiB | 00m00s [19/26] python3-0:3.14.3-1.fc45.x86_64 100% | 9.2 MiB/s | 28.2 KiB | 00m00s [20/26] tomcli+tomlkit-0:0.10.1-4.fc44. 100% | 2.0 MiB/s | 8.4 KiB | 00m00s [21/26] python3-tomlkit-0:0.13.2-7.fc44 100% | 24.7 MiB/s | 126.7 KiB | 00m00s [22/26] pyproject-rpm-macros-0:1.18.6-2 100% | 21.9 MiB/s | 44.8 KiB | 00m00s [23/26] python-rpm-macros-0:3.14-10.fc4 100% | 9.7 MiB/s | 19.8 KiB | 00m00s [24/26] python3-rpm-generators-0:14-14. 100% | 27.9 MiB/s | 28.6 KiB | 00m00s [25/26] python3-libs-0:3.14.3-1.fc45.x8 100% | 206.2 MiB/s | 10.1 MiB | 00m00s [26/26] python3-rpm-macros-0:3.14-10.fc 100% | 1.3 MiB/s | 12.3 KiB | 00m00s -------------------------------------------------------------------------------- [26/26] Total 100% | 198.0 MiB/s | 19.4 MiB | 00m00s Running transaction [ 1/28] Verify package files 100% | 361.0 B/s | 26.0 B | 00m00s [ 2/28] Prepare transaction 100% | 464.0 B/s | 26.0 B | 00m00s [ 3/28] Installing python-rpm-macros-0: 100% | 27.8 MiB/s | 28.5 KiB | 00m00s [ 4/28] Installing python3-rpm-macros-0 100% | 0.0 B/s | 6.8 KiB | 00m00s [ 5/28] Installing pyproject-rpm-macros 100% | 23.0 MiB/s | 117.5 KiB | 00m00s [ 6/28] Installing tzdata-0:2025c-2.fc4 100% | 30.9 MiB/s | 1.5 MiB | 00m00s [ 7/28] Installing python-pip-wheel-0:2 100% | 401.4 MiB/s | 1.2 MiB | 00m00s [ 8/28] Installing mpdecimal-0:4.0.1-3. 100% | 213.5 MiB/s | 218.6 KiB | 00m00s [ 9/28] Installing expat-0:2.7.3-2.fc44 100% | 15.6 MiB/s | 318.9 KiB | 00m00s [10/28] Installing python3-libs-0:3.14. 100% | 269.1 MiB/s | 44.1 MiB | 00m00s [11/28] Installing python3-0:3.14.3-1.f 100% | 2.1 MiB/s | 30.5 KiB | 00m00s [12/28] Installing python3-packaging-0: 100% | 151.3 MiB/s | 619.9 KiB | 00m00s [13/28] Installing python3-idna-0:3.11- 100% | 242.5 MiB/s | 744.9 KiB | 00m00s [14/28] Installing python3-urllib3-0:2. 100% | 189.6 MiB/s | 1.1 MiB | 00m00s [15/28] Installing python3-rpm-generato 100% | 81.0 MiB/s | 82.9 KiB | 00m00s [16/28] Installing python3-iniconfig-0: 100% | 52.9 MiB/s | 54.1 KiB | 00m00s [17/28] Installing python3-pluggy-0:1.6 100% | 53.2 MiB/s | 217.9 KiB | 00m00s [18/28] Installing python3-pygments-0:2 100% | 171.5 MiB/s | 11.5 MiB | 00m00s [19/28] Installing python3-pytest-0:8.4 100% | 294.5 MiB/s | 22.7 MiB | 00m00s [20/28] Installing python3-click-1:8.1. 100% | 234.0 MiB/s | 1.2 MiB | 00m00s [21/28] Installing python3-charset-norm 100% | 23.9 MiB/s | 366.4 KiB | 00m00s [22/28] Installing python3-requests-0:2 100% | 159.1 MiB/s | 488.9 KiB | 00m00s [23/28] Installing python3-tomlkit-0:0. 100% | 163.8 MiB/s | 503.2 KiB | 00m00s [24/28] Installing tomcli-0:0.10.1-4.fc 100% | 9.9 MiB/s | 162.9 KiB | 00m00s [25/28] Installing tomcli+tomlkit-0:0.1 100% | 121.1 KiB/s | 124.0 B | 00m00s [26/28] Installing python3-docker-0:7.1 100% | 123.7 MiB/s | 1.1 MiB | 00m00s [27/28] Installing python3-pytest-async 100% | 66.0 MiB/s | 135.2 KiB | 00m00s [28/28] Installing python3-devel-0:3.14 100% | 37.7 MiB/s | 2.0 MiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771891200 Wrote: /builddir/build/SRPMS/python-pydocket-0.17.9-1.fc45.src.rpm Updating and loading repositories: fedora 100% | 166.7 KiB/s | 41.0 KiB | 00m00s Copr repository 100% | 6.7 KiB/s | 1.5 KiB | 00m00s Repositories loaded. Package "python3-devel-3.14.3-1.fc45.x86_64" is already installed.Nothing to do. Package "python3-docker-7.1.0-10.fc44.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 "tomcli-0.10.1-4.fc44.noarch" is already installed. 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=1771891200 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.7XVIJZ Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.nCZDuH + 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,<6' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.MqAeDa + 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% | 170.9 KiB/s | 41.0 KiB | 00m00s Copr repository 100% | 7.1 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-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-packaging-25.0-8.fc44.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.28.0-2.fc44 fedora 657.8 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.28.0-2.fc44 100% | 11.2 MiB/s | 229.1 KiB | 00m00s [3/7] python3-setuptools_scm-0:9.2.2-5. 100% | 38.9 MiB/s | 159.4 KiB | 00m00s [4/7] python3-pathspec-0:1.0.3-2.fc44.n 100% | 26.3 MiB/s | 107.8 KiB | 00m00s [5/7] python3-trove-classifiers-0:2026. 100% | 11.1 MiB/s | 34.2 KiB | 00m00s [6/7] python3-pip-0:25.3-2.fc44.noarch 100% | 77.0 MiB/s | 2.6 MiB | 00m00s [7/7] python3-setuptools-0:80.10.2-1.fc 100% | 116.9 MiB/s | 1.8 MiB | 00m00s -------------------------------------------------------------------------------- [7/7] Total 100% | 111.8 MiB/s | 4.9 MiB | 00m00s Running transaction [1/9] Verify package files 100% | 388.0 B/s | 7.0 B | 00m00s [2/9] Prepare transaction 100% | 218.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% | 28.6 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% | 77.1 MiB/s | 394.6 KiB | 00m00s [7/9] Installing python3-hatchling-0:1. 100% | 30.0 MiB/s | 707.0 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% | 113.7 MiB/s | 11.5 MiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771891200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.7mdFsV + 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.28.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<6,>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement not satisfied: croniter<6,>=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 not satisfied: fakeredis[lua]>=2.32.1 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 not satisfied: redis>=5 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% | 134.9 KiB/s | 41.0 KiB | 00m00s Copr repository 100% | 5.4 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-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-hatch-vcs-0.5.0-6.fc44.noarch" is already installed. Package "python3-hatchling-1.28.0-2.fc44.noarch" is already installed. Package "python3-packaging-25.0-8.fc44.noarch" is already installed. Package "python3-pip-25.3-2.fc44.noarch" is already installed. Package "tomcli-0.10.1-4.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 noarch 0:2.34.0-1.fc45 fedora 1.2 MiB python3-fakeredis+lua noarch 0:2.34.0-1.fc45 fedora 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-redis noarch 0:5.2.1-8.fc44 fedora 2.5 MiB python3-rich noarch 0:14.3.2-1.fc44 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-sortedcontainers noarch 0:2.4.0-26.fc44 fedora 392.9 KiB python3-zipp noarch 0:3.23.0-3.fc44 fedora 60.7 KiB Transaction Summary: Installing: 30 packages Total size of inbound packages is 6 MiB. Need to download 6 MiB. After this operation, 24 MiB extra will be used (install 24 MiB, remove 0 B). [ 1/30] python3-croniter-0:5.0.1-7.fc45 100% | 2.7 MiB/s | 52.8 KiB | 00m00s [ 2/30] python3-cloudpickle-0:3.1.2-2.f 100% | 2.5 MiB/s | 48.2 KiB | 00m00s [ 3/30] python3-fakeredis+lua-0:2.34.0- 100% | 3.7 MiB/s | 7.7 KiB | 00m00s [ 4/30] python3-fakeredis-0:2.34.0-1.fc 100% | 15.0 MiB/s | 352.7 KiB | 00m00s [ 5/30] python3-opentelemetry-api-0:1.3 100% | 44.6 MiB/s | 137.1 KiB | 00m00s [ 6/30] python3-prometheus_client-0:0.2 100% | 49.2 MiB/s | 151.1 KiB | 00m00s [ 7/30] python3-py-key-value-aio+memory 100% | 3.7 MiB/s | 7.5 KiB | 00m00s [ 8/30] python3-py-key-value-aio-0:0.3. 100% | 60.5 MiB/s | 247.6 KiB | 00m00s [ 9/30] python3-py-key-value-aio+redis- 100% | 2.4 MiB/s | 7.5 KiB | 00m00s [10/30] python3-json-logger-0:4.0.0-2.f 100% | 13.6 MiB/s | 41.6 KiB | 00m00s [11/30] python3-redis-0:5.2.1-8.fc44.no 100% | 97.3 MiB/s | 597.5 KiB | 00m00s [12/30] python3-typer-0:0.23.1-1.fc45.n 100% | 42.4 MiB/s | 173.8 KiB | 00m00s [13/30] python3-rich-0:14.3.2-1.fc44.no 100% | 92.6 MiB/s | 663.8 KiB | 00m00s [14/30] python3-typing-extensions-0:4.1 100% | 54.9 MiB/s | 112.3 KiB | 00m00s [15/30] python3-dateutil-1:2.9.0.post0- 100% | 168.1 MiB/s | 344.4 KiB | 00m00s [16/30] python3-pytz-0:2025.2-6.fc44.no 100% | 21.5 MiB/s | 66.2 KiB | 00m00s [17/30] python3-sortedcontainers-0:2.4. 100% | 31.2 MiB/s | 64.0 KiB | 00m00s [18/30] python3-lupa-0:2.6-3.fc44.x86_6 100% | 53.1 MiB/s | 163.0 KiB | 00m00s [19/30] python3-decorator-0:5.2.1-6.fc4 100% | 31.3 MiB/s | 32.0 KiB | 00m00s [20/30] python3-importlib-metadata-0:8. 100% | 36.0 MiB/s | 73.7 KiB | 00m00s [21/30] python3-py-key-value-shared-0:0 100% | 32.7 MiB/s | 67.0 KiB | 00m00s [22/30] python3-cachetools-0:7.0.1-1.fc 100% | 13.2 MiB/s | 54.1 KiB | 00m00s [23/30] python3-annotated-doc-0:0.0.4-3 100% | 7.4 MiB/s | 15.2 KiB | 00m00s [24/30] python3-markdown-it-py-0:4.0.0- 100% | 50.0 MiB/s | 205.0 KiB | 00m00s [25/30] python3-beartype-0:0.21.0^20240 100% | 159.5 MiB/s | 1.6 MiB | 00m00s [26/30] python3-shellingham-0:1.5.4-14. 100% | 11.1 MiB/s | 34.1 KiB | 00m00s [27/30] python3-six-0:1.17.0-8.fc44.noa 100% | 20.5 MiB/s | 42.0 KiB | 00m00s [28/30] python3-zipp-0:3.23.0-3.fc44.no 100% | 18.2 MiB/s | 37.3 KiB | 00m00s [29/30] python3-mdurl-0:0.1.2-14.fc44.n 100% | 15.3 MiB/s | 31.4 KiB | 00m00s [30/30] luajit-0:2.1.1767980792-1.fc44. 100% | 108.0 MiB/s | 442.5 KiB | 00m00s -------------------------------------------------------------------------------- [30/30] Total 100% | 97.8 MiB/s | 5.8 MiB | 00m00s Running transaction [ 1/32] Verify package files 100% | 1.2 KiB/s | 30.0 B | 00m00s [ 2/32] Prepare transaction 100% | 576.0 B/s | 30.0 B | 00m00s [ 3/32] Installing python3-beartype-0:0 100% | 121.9 MiB/s | 8.8 MiB | 00m00s [ 4/32] Installing python3-typing-exten 100% | 176.1 MiB/s | 541.1 KiB | 00m00s [ 5/32] Installing python3-redis-0:5.2. 100% | 184.7 MiB/s | 2.6 MiB | 00m00s [ 6/32] Installing python3-py-key-value 100% | 28.7 MiB/s | 146.7 KiB | 00m00s [ 7/32] Installing python3-py-key-value 100% | 50.3 MiB/s | 823.7 KiB | 00m00s [ 8/32] Installing python3-mdurl-0:0.1. 100% | 24.1 MiB/s | 49.4 KiB | 00m00s [ 9/32] Installing python3-markdown-it- 100% | 24.8 MiB/s | 584.7 KiB | 00m00s [10/32] Installing python3-rich-0:14.3. 100% | 217.2 MiB/s | 3.5 MiB | 00m00s [11/32] Installing python3-zipp-0:3.23. 100% | 32.7 MiB/s | 67.0 KiB | 00m00s [12/32] Installing python3-importlib-me 100% | 62.1 MiB/s | 190.8 KiB | 00m00s [13/32] Installing luajit-0:2.1.1767980 100% | 73.2 MiB/s | 1.4 MiB | 00m00s [14/32] Installing python3-lupa-0:2.6-3 100% | 155.4 MiB/s | 477.3 KiB | 00m00s [15/32] Installing python3-six-0:1.17.0 100% | 117.5 MiB/s | 120.3 KiB | 00m00s [16/32] Installing python3-dateutil-1:2 100% | 174.1 MiB/s | 891.5 KiB | 00m00s [17/32] Installing python3-shellingham- 100% | 24.5 MiB/s | 50.2 KiB | 00m00s [18/32] Installing python3-annotated-do 100% | 19.7 MiB/s | 20.1 KiB | 00m00s [19/32] Installing python3-cachetools-0 100% | 75.3 MiB/s | 154.1 KiB | 00m00s [20/32] Installing python3-decorator-0: 100% | 82.5 MiB/s | 84.5 KiB | 00m00s [21/32] Installing python3-sortedcontai 100% | 194.0 MiB/s | 397.3 KiB | 00m00s [22/32] Installing python3-fakeredis-0: 100% | 140.2 MiB/s | 1.3 MiB | 00m00s [23/32] Installing python3-pytz-0:2025. 100% | 112.0 MiB/s | 229.4 KiB | 00m00s [24/32] Installing python3-croniter-0:5 100% | 99.3 MiB/s | 203.3 KiB | 00m00s [25/32] Installing python3-fakeredis+lu 100% | 0.0 B/s | 124.0 B | 00m00s [26/32] Installing python3-prometheus_c 100% | 108.2 MiB/s | 443.4 KiB | 00m00s [27/32] Installing python3-py-key-value 100% | 0.0 B/s | 124.0 B | 00m00s [28/32] Installing python3-typer-0:0.23 100% | 44.5 MiB/s | 865.9 KiB | 00m00s [29/32] Installing python3-opentelemetr 100% | 65.0 MiB/s | 465.9 KiB | 00m00s [30/32] Installing python3-py-key-value 100% | 0.0 B/s | 124.0 B | 00m00s [31/32] Installing python3-json-logger- 100% | 44.2 MiB/s | 90.5 KiB | 00m00s [32/32] Installing python3-cloudpickle- 100% | 4.8 MiB/s | 133.5 KiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1771891200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.YdO0t9 + 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.28.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<6,>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: croniter<6,>=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.2) 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% | 129.4 KiB/s | 41.0 KiB | 00m00s Copr repository 100% | 5.1 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-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-cloudpickle-3.1.2-2.fc44.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.28.0-2.fc44.noarch" is already installed. Package "python3-opentelemetry-api-1.39.1-1.fc45.noarch" is already installed. Package "python3-packaging-25.0-8.fc44.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.2-1.fc44.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=1771891200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.JP2SbC + 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.28.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<6,>=5 from hook generated metadata: Requires-Dist (pydocket) Requirement satisfied: croniter<6,>=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.2) 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.5PPtuT + 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=94508 sha256=306ef96e51406ba09a9215cc677911bcfa2bc02ce2b7d4a32a27ba878e29f271 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.lI3nHG + 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 ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + 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__/_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__/_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__/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__/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__/_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__/_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__/_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__/_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__/_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/__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__/_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/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__/_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__/_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__/_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__/_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__/_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__/_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__/_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.6lGmMJ + 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 + 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 asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function collected 688 items tests/cli/test_clear.py EEEEEEEEE [ 1%] tests/cli/test_iterate_with_timeout.py EEEEE [ 2%] tests/cli/test_module.py E [ 2%] tests/cli/test_parsing.py EEEEEEEEEE [ 3%] tests/cli/test_snapshot.py EEEEEEEEEEEEE [ 5%] tests/cli/test_striking.py EEEEEEEEEEEEEEEEE [ 7%] tests/cli/test_tasks.py EEE [ 8%] tests/cli/test_url_validation.py EEEEEEEEEEEEEE [ 10%] tests/cli/test_version.py EE [ 10%] tests/cli/test_watch.py EEEEEEEEEEEE [ 12%] tests/cli/test_worker.py EEEEEEEE [ 13%] tests/cli/test_workers.py EE [ 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_clear_command_empty_docket _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 23 async def test_clear_command_empty_docket(docket: Docket): """Should clear empty docket and report 0 tasks cleared""" result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 0 tasks" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_clear_command_with_immediate_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 36 async def test_clear_command_with_immediate_tasks(docket: Docket, the_task: AsyncMock): """Should clear immediate tasks and report count""" docket.register(the_task) await docket.add(the_task)("arg1") await docket.add(the_task)("arg2") await docket.add(the_task)("arg3") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 3 tasks" in result.output snapshot = await docket.snapshot() assert len(snapshot.future) == 0 assert len(snapshot.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_clear_command_with_scheduled_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 59 async def test_clear_command_with_scheduled_tasks(docket: Docket, the_task: AsyncMock): """Should clear scheduled tasks and report count""" docket.register(the_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future)("scheduled1") await docket.add(the_task, when=future + timedelta(seconds=1))("scheduled2") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 2 tasks" in result.output snapshot = await docket.snapshot() assert len(snapshot.future) == 0 assert len(snapshot.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_clear_command_with_mixed_tasks _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 82 async def test_clear_command_with_mixed_tasks( docket: Docket, the_task: AsyncMock, another_task: AsyncMock ): """Should clear both immediate and scheduled tasks""" docket.register(the_task) docket.register(another_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task)("immediate1") await docket.add(another_task)("immediate2") await docket.add(the_task, when=future)("scheduled1") await docket.add(another_task, when=future + timedelta(seconds=1))("scheduled2") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 4 tasks" in result.output snapshot = await docket.snapshot() assert len(snapshot.future) == 0 assert len(snapshot.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_clear_command_with_keyed_tasks _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 111 async def test_clear_command_with_keyed_tasks(docket: Docket, the_task: AsyncMock): """Should clear tasks with keys""" docket.register(the_task) await docket.add(the_task, key="task1")("arg1") await docket.add(the_task, key="task2")("arg2") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 2 tasks" in result.output snapshot = await docket.snapshot() assert len(snapshot.future) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_clear_command_basic_functionality ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 132 async def test_clear_command_basic_functionality(docket: Docket, the_task: AsyncMock): """Should clear tasks via CLI command""" docket.register(the_task) # Add some tasks to clear await docket.add(the_task)("task1") future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future)("scheduled_task") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared" in result.output snapshot_after_clear = await docket.snapshot() assert len(snapshot_after_clear.future) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_clear_command_preserves_strikes ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 155 async def test_clear_command_preserves_strikes(docket: Docket, the_task: AsyncMock): """Should not affect strikes when clearing""" docket.register(the_task) await docket.strike("the_task") await docket.add(the_task)("arg1") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared" in result.output # Strikes should still be in effect - clear doesn't affect strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_clear_command_with_custom_url _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 175 async def test_clear_command_with_custom_url(): """Should handle custom Redis URL""" result = await run_cli( "clear", "--url", "redis://nonexistent:12345/0", "--docket", "test-docket", ) assert result.exit_code != 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_clear_command_with_custom_docket_name _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_clear.py, line 187 async def test_clear_command_with_custom_docket_name( docket: Docket, the_task: AsyncMock ): """Should handle custom docket name""" docket.register(the_task) await docket.add(the_task)("test") result = await run_cli( "clear", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "Cleared 1 tasks" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_iterate_with_timeout_normal_iteration _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_iterate_with_timeout.py, line 9 async def test_iterate_with_timeout_normal_iteration(): """iterate_with_timeout yields items from iterator normally.""" async def mock_iterator(): for i in range(3): yield {"value": i} results: list[dict[str, Any] | None] = [] async for item in iterate_with_timeout(mock_iterator(), timeout=1.0): results.append(item) assert results == [{"value": 0}, {"value": 1}, {"value": 2}] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_iterate_with_timeout_yields_none_on_timeout ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_iterate_with_timeout.py, line 23 async def test_iterate_with_timeout_yields_none_on_timeout(): """iterate_with_timeout yields None when asyncio.TimeoutError occurs.""" async def slow_iterator(): await asyncio.sleep(2.0) yield {"value": 1} # pragma: no cover results: list[dict[str, Any] | None] = [] async for item in iterate_with_timeout( slow_iterator(), timeout=0.1 ): # pragma: no branch results.append(item) if item is None: # pragma: no branch break # pragma: no cover - we always timeout in this test assert results[0] is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_iterate_with_timeout_stops_on_stop_iteration ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_iterate_with_timeout.py, line 42 async def test_iterate_with_timeout_stops_on_stop_iteration(): """iterate_with_timeout breaks and cleans up on StopAsyncIteration.""" async def finite_iterator(): yield {"value": 1} results: list[dict[str, Any] | None] = [] async for item in iterate_with_timeout(finite_iterator(), timeout=1.0): results.append(item) assert results == [{"value": 1}] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_iterate_with_timeout_cleanup_on_break _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_iterate_with_timeout.py, line 55 async def test_iterate_with_timeout_cleanup_on_break(): """iterate_with_timeout ensures aclose() is called in finally block.""" close_called = False class MockAsyncIterator: def __aiter__(self): # pragma: no cover file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_iterate_with_timeout_cleanup_on_exception _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_iterate_with_timeout.py, line 80 async def test_iterate_with_timeout_cleanup_on_exception(): """iterate_with_timeout ensures aclose() even when exception occurs.""" close_called = False class MockAsyncIterator: def __aiter__(self): # pragma: no cover file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_module_invocation_as_cli_entrypoint __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_module.py, line 5 async def test_module_invocation_as_cli_entrypoint(): """Should allow invoking docket as a module with python -m docket.""" result = await run_cli("version") assert result.exit_code == 0, result.stderr assert result.stdout.strip() == docket.__version__ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_duration_parsing_passes_through_defaults ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 15 def test_duration_parsing_passes_through_defaults(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_duration_parsing_plain_seconds _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 20 def test_duration_parsing_plain_seconds(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_duration_parsing_seconds_with_suffix __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 27 def test_duration_parsing_seconds_with_suffix(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_duration_parsing_minutes_with_suffix __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 34 def test_duration_parsing_minutes_with_suffix(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_duration_parsing_hours_with_suffix ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 41 def test_duration_parsing_hours_with_suffix(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_duration_parsing_minutes_seconds_format ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 48 def test_duration_parsing_minutes_seconds_format(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_duration_parsing_hours_minutes_seconds_format _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 55 def test_duration_parsing_hours_minutes_seconds_format(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_duration_parsing_invalid_format[1:2:3:4] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 62 @pytest.mark.parametrize( "invalid_duration", [ "1:2:3:4", # Too many parts "abc", # Not a number ":", # Empty parts ], ) def test_duration_parsing_invalid_format(invalid_duration: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_duration_parsing_invalid_format[abc] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 62 @pytest.mark.parametrize( "invalid_duration", [ "1:2:3:4", # Too many parts "abc", # Not a number ":", # Empty parts ], ) def test_duration_parsing_invalid_format(invalid_duration: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_duration_parsing_invalid_format[:] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_parsing.py, line 62 @pytest.mark.parametrize( "invalid_duration", [ "1:2:3:4", # Too many parts "abc", # Not a number ":", # Empty parts ], ) def test_duration_parsing_invalid_format(invalid_duration: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_snapshot_empty_docket _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 33 async def test_snapshot_empty_docket(docket: Docket): """Should show an empty snapshot when no tasks are scheduled""" result = await run_cli( "snapshot", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "0 workers, 0/0 running" in result.output, result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_snapshot_with_scheduled_tasks _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 47 async def test_snapshot_with_scheduled_tasks(docket: Docket): """Should show scheduled tasks in the snapshot""" when = datetime.now(timezone.utc) + timedelta(seconds=5) await docket.add(tasks.trace, when=when, key="future-task")("hiya!") result = await run_cli( "snapshot", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "0 workers, 0/1 running" in result.output, result.output assert "future-task" in result.output, result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_snapshot_with_running_tasks ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 65 async def test_snapshot_with_running_tasks( docket: Docket, key_leak_checker: KeyCountChecker ): """Should show running tasks in the snapshot""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat # Use tasks.sleep for CLI tests since the subprocess needs importable tasks execution = await docket.add(tasks.sleep)(5) # This test cancels worker mid-execution, leaving incomplete tasks key_leak_checker.add_exemption(f"{docket.name}:runs:{execution.key}") async with Worker(docket, name="test-worker") as worker: worker_running = asyncio.create_task(worker.run_until_finished()) await asyncio.sleep(0.05) # Let worker pick up task result = await run_cli( "snapshot", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "1 workers, 1/1 running" in result.output, result.output assert "sleep" in result.output, result.output assert "test-worker" in result.output, result.output worker_running.cancel() await worker_running file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_snapshot_with_mixed_tasks _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 100 async def test_snapshot_with_mixed_tasks( docket: Docket, key_leak_checker: KeyCountChecker ): """Should show both running and scheduled tasks in the snapshot""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat future = datetime.now(timezone.utc) + timedelta(seconds=5) execution1 = await docket.add(tasks.trace, when=future)("hi!") # Use tasks.sleep for CLI tests since the subprocess needs importable tasks executions: list[Execution] = [] for _ in range(5): executions.append(await docket.add(tasks.sleep)(4)) # This test cancels worker mid-execution, leaving incomplete tasks key_leak_checker.add_exemption(f"{docket.name}:runs:{execution1.key}") for ex in executions: key_leak_checker.add_exemption(f"{docket.name}:runs:{ex.key}") async with Worker(docket, name="test-worker", concurrency=2) as worker: worker_running = asyncio.create_task(worker.run_until_finished()) await asyncio.sleep(0.1) # Let worker pick up tasks result = await run_cli( "snapshot", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "1 workers, 2/6 running" in result.output, result.output assert "sleep" in result.output, result.output assert "test-worker" in result.output, result.output assert "trace" in result.output, result.output worker_running.cancel() await worker_running file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_relative_time[now0-when0-in 0:15:00] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 143 @pytest.mark.parametrize( "now, when, expected", [ # Near future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 12, 15, 0, tzinfo=timezone.utc), "in 0:15:00", ), # Distant future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc), "at 2023-01-02 12:00:00 +0000", ), # Recent past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 11, 45, 0, tzinfo=timezone.utc), "0:15:00 ago", ), # Distant past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 10, 0, 0, tzinfo=timezone.utc), "at 2023-01-01 10:00:00 +0000", ), ], ) def test_relative_time( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_relative_time[now1-when1-at 2023-01-02 12:00:00 +0000] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 143 @pytest.mark.parametrize( "now, when, expected", [ # Near future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 12, 15, 0, tzinfo=timezone.utc), "in 0:15:00", ), # Distant future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc), "at 2023-01-02 12:00:00 +0000", ), # Recent past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 11, 45, 0, tzinfo=timezone.utc), "0:15:00 ago", ), # Distant past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 10, 0, 0, tzinfo=timezone.utc), "at 2023-01-01 10:00:00 +0000", ), ], ) def test_relative_time( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_relative_time[now2-when2-0:15:00 ago] _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 143 @pytest.mark.parametrize( "now, when, expected", [ # Near future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 12, 15, 0, tzinfo=timezone.utc), "in 0:15:00", ), # Distant future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc), "at 2023-01-02 12:00:00 +0000", ), # Recent past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 11, 45, 0, tzinfo=timezone.utc), "0:15:00 ago", ), # Distant past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 10, 0, 0, tzinfo=timezone.utc), "at 2023-01-01 10:00:00 +0000", ), ], ) def test_relative_time( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_relative_time[now3-when3-at 2023-01-01 10:00:00 +0000] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 143 @pytest.mark.parametrize( "now, when, expected", [ # Near future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 12, 15, 0, tzinfo=timezone.utc), "in 0:15:00", ), # Distant future ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc), "at 2023-01-02 12:00:00 +0000", ), # Recent past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 11, 45, 0, tzinfo=timezone.utc), "0:15:00 ago", ), # Distant past ( datetime(2023, 1, 1, 12, 0, 0, tzinfo=timezone.utc), datetime(2023, 1, 1, 10, 0, 0, tzinfo=timezone.utc), "at 2023-01-01 10:00:00 +0000", ), ], ) def test_relative_time( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_snapshot_with_stats_flag_empty _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 185 async def test_snapshot_with_stats_flag_empty(docket: Docket): """Should show empty stats when no tasks are scheduled""" result = await run_cli( "snapshot", "--stats", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output # Should still show the normal summary assert "0 workers, 0/0 running" in result.output, result.output # With empty docket, stats table shouldn't appear since there are no tasks file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_snapshot_with_stats_flag_mixed_tasks __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 202 async def test_snapshot_with_stats_flag_mixed_tasks( docket: Docket, key_leak_checker: KeyCountChecker ): """Should show task count statistics when --stats flag is used""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat # Add multiple tasks of different types future = datetime.now(timezone.utc) + timedelta(seconds=5) await docket.add(tasks.trace, when=future, key="trace-1")("hi!") await docket.add(tasks.trace, when=future, key="trace-2")("hello!") # This test cancels worker mid-execution, leaving incomplete tasks key_leak_checker.add_exemption(f"{docket.name}:runs:trace-1") key_leak_checker.add_exemption(f"{docket.name}:runs:trace-2") # Use tasks.sleep for CLI tests since the subprocess needs importable tasks for i in range(3): await docket.add(tasks.sleep, key=f"sleep-{i}")(4) key_leak_checker.add_exemption(f"{docket.name}:runs:sleep-{i}") async with Worker(docket, name="test-worker", concurrency=2) as worker: worker_running = asyncio.create_task(worker.run_until_finished()) await asyncio.sleep(0.1) # Let worker pick up tasks result = await run_cli( "snapshot", "--stats", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output # Should show the normal summary assert "1 workers, 2/5 running" in result.output, result.output # Should show task statistics table with enhanced columns assert "Task Count Statistics by Function" in result.output assert "Function" in result.output assert "Total" in result.output assert "Running" in result.output assert "Queued" in result.output assert "Oldest Queued" in result.output assert "Latest Queued" in result.output # Should show the task counts assert "sleep" in result.output assert "trace" in result.output worker_running.cancel() await worker_running file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_snapshot_with_stats_shows_timestamp_columns ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 258 async def test_snapshot_with_stats_shows_timestamp_columns(docket: Docket): """Should show oldest and latest queued timestamps in stats table""" # Add multiple tasks with different scheduled times now = datetime.now(timezone.utc) early_time = now + timedelta(seconds=1) late_time = now + timedelta(minutes=2) await docket.add(tasks.trace, when=early_time)("early task") await docket.add(tasks.trace, when=late_time)("late task") await docket.add(tasks.sleep, when=early_time)(1) result = await run_cli( "snapshot", "--stats", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output # Should show enhanced stats table with timestamp columns assert "Task Count Statistics by Function" in result.output assert "Oldest Queued" in result.output assert "Latest Queued" in result.output # Should show the task functions assert "trace" in result.output assert "sleep" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_snapshot_stats_with_running_tasks_only _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 289 async def test_snapshot_stats_with_running_tasks_only(docket: Docket): """Should handle stats display correctly when tasks are running but none queued""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat # Add tasks that will be picked up immediately by worker # Use tasks.sleep for CLI tests since the subprocess needs importable tasks await docket.add(tasks.sleep)(5) await docket.add(tasks.sleep)(5) async with Worker(docket, name="test-worker", concurrency=2) as worker: worker_running = asyncio.create_task(worker.run_until_finished()) await asyncio.sleep(0.1) # Let worker pick up tasks result = await run_cli( "snapshot", "--stats", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output # Should show stats table even with no queued tasks assert "Task Count Statistics by Function" in result.output assert "Oldest Queued" in result.output assert "Latest Queued" in result.output assert "sleep" in result.output worker_running.cancel() await worker_running file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_snapshot_cli_stats_skips_table_when_empty _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_snapshot.py, line 332 def test_snapshot_cli_stats_skips_table_when_empty(monkeypatch: MonkeyPatch) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, empty_docket, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________________ ERROR at setup of test_strike _________________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 21 async def test_strike(docket: Docket): """Should strike a task""" result = await run_cli( "strike", "--url", docket.url, "--docket", docket.name, "example_task", "some_parameter", "==", "some_value", ) assert result.exit_code == 0, result.output assert "Striking example_task some_parameter == 'some_value'" in result.output await asyncio.sleep(0.25) assert "example_task" in docket.strike_list.task_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________________ ERROR at setup of test_restore ________________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 44 async def test_restore(docket: Docket): """Should restore a task""" await docket.strike("example_task", "some_parameter", "==", "some_value") assert "example_task" in docket.strike_list.task_strikes result = await run_cli( "restore", "--url", docket.url, "--docket", docket.name, "example_task", "some_parameter", "==", "some_value", ) assert result.exit_code == 0, result.output assert "Restoring example_task some_parameter == 'some_value'" in result.output await asyncio.sleep(0.25) assert "example_task" not in docket.strike_list.task_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_task_only_strike ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 70 async def test_task_only_strike(docket: Docket): """Should strike a task without specifying parameter conditions""" result = await run_cli( "strike", "--url", docket.url, "--docket", docket.name, "example_task", ) assert result.exit_code == 0, result.output assert "Striking example_task" in result.output await asyncio.sleep(0.25) assert "example_task" in docket.strike_list.task_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_task_only_restore ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 89 async def test_task_only_restore(docket: Docket): """Should restore a task without specifying parameter conditions""" await docket.strike("example_task") result = await run_cli( "restore", "--url", docket.url, "--docket", docket.name, "example_task", ) assert result.exit_code == 0, result.output assert "Restoring example_task" in result.output await asyncio.sleep(0.25) assert "example_task" not in docket.strike_list.task_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_parameter_only_strike _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 110 async def test_parameter_only_strike(docket: Docket): """Should strike tasks with matching parameter conditions regardless of task name""" result = await run_cli( "strike", "--url", docket.url, "--docket", docket.name, "", "some_parameter", "==", "some_value", ) assert result.exit_code == 0, result.output assert "Striking (all tasks) some_parameter == 'some_value'" in result.output await asyncio.sleep(0.25) assert "some_parameter" in docket.strike_list.parameter_strikes parameter_strikes = docket.strike_list.parameter_strikes["some_parameter"] assert ("==", "some_value") in parameter_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_parameter_only_restore _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 134 async def test_parameter_only_restore(docket: Docket): """Should restore tasks with matching parameter conditions regardless of task name""" await docket.strike("", "some_parameter", "==", "some_value") result = await run_cli( "restore", "--url", docket.url, "--docket", docket.name, "", "some_parameter", "==", "some_value", ) assert result.exit_code == 0, result.output assert "Restoring (all tasks) some_parameter == 'some_value'" in result.output await asyncio.sleep(0.25) assert "some_parameter" not in docket.strike_list.parameter_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_strike_with_no_function_or_parameter[strike] ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 159 @pytest.mark.parametrize("operation", ["strike", "restore"]) async def test_strike_with_no_function_or_parameter(docket: Docket, operation: str): """Should fail when neither function nor parameter is provided""" result = await run_cli( operation, "--url", docket.url, "--docket", docket.name, "", ) assert result.exit_code != 0, result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_strike_with_no_function_or_parameter[restore] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 159 @pytest.mark.parametrize("operation", ["strike", "restore"]) async def test_strike_with_no_function_or_parameter(docket: Docket, operation: str): """Should fail when neither function nor parameter is provided""" result = await run_cli( operation, "--url", docket.url, "--docket", docket.name, "", ) assert result.exit_code != 0, result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_interpret_python_value[None-None] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_interpret_python_value[hello-hello] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_interpret_python_value[int:42-42] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_interpret_python_value[float:3.14-3.14] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_interpret_python_value[decimal.Decimal:3.14-expected_result4] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_interpret_python_value[bool:True-True] _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_interpret_python_value[bool:False-False] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_interpret_python_value[datetime.timedelta:10-expected_result7] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_interpret_python_value[uuid.UUID:123e4567-e89b-12d3-a456-426614174000-expected_result8] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_striking.py, line 174 @pytest.mark.parametrize( "input_value,expected_result", [ (None, None), ("hello", "hello"), ("int:42", 42), ("float:3.14", 3.14), ("decimal.Decimal:3.14", decimal.Decimal("3.14")), ("bool:True", True), ("bool:False", False), ("datetime.timedelta:10", timedelta(seconds=10)), ( "uuid.UUID:123e4567-e89b-12d3-a456-426614174000", UUID("123e4567-e89b-12d3-a456-426614174000"), ), ], ) def test_interpret_python_value(input_value: str | None, expected_result: Any): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________________ ERROR at setup of test_trace_command _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_tasks.py, line 17 async def test_trace_command( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, ): """Should add a trace task to the docket""" result = await run_cli( "tasks", "trace", "hiya!", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "Added trace task" in result.stdout.strip() with caplog.at_level(logging.INFO): await worker.run_until_finished() assert "hiya!" in caplog.text assert "ERROR" not in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________________ ERROR at setup of test_fail_command ______________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_tasks.py, line 42 async def test_fail_command( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, ): """Should add a trace task to the docket""" result = await run_cli( "tasks", "fail", "hiya!", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "Added fail task" in result.stdout.strip() with caplog.at_level(logging.INFO): await worker.run_until_finished() assert "hiya!" in caplog.text assert "ERROR" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________________ ERROR at setup of test_sleep_command _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_tasks.py, line 67 async def test_sleep_command( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, ): """Should add a trace task to the docket""" result = await run_cli( "tasks", "sleep", "0.1", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "Added sleep task" in result.stdout.strip() with caplog.at_level(logging.INFO): await worker.run_until_finished() assert "Sleeping for 0.1 seconds" in caplog.text assert "ERROR" not in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args0] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args1] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args2] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args3] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args4] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args5] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args6] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args7] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_rejected[cli_args8] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 6 @pytest.mark.parametrize( "cli_args", [ ["strike", "--url", "memory://", "--docket", "test-docket", "example_task"], ["clear", "--url", "memory://", "--docket", "test-docket"], ["restore", "--url", "memory://", "--docket", "test-docket", "example_task"], ["tasks", "trace", "--url", "memory://", "--docket", "test-docket", "hello"], ["tasks", "fail", "--url", "memory://", "--docket", "test-docket", "test"], ["tasks", "sleep", "--url", "memory://", "--docket", "test-docket", "1"], ["snapshot", "--url", "memory://", "--docket", "test-docket"], ["workers", "ls", "--url", "memory://", "--docket", "test-docket"], [ "workers", "for-task", "--url", "memory://", "--docket", "test-docket", "trace", ], ], ) async def test_memory_url_rejected(cli_args: list[str]): """Should reject memory:// URLs with a clear error message""" result = await run_cli(*cli_args) # Should fail with non-zero exit code assert result.exit_code != 0, f"Expected non-zero exit code for {cli_args[0]}" # Should contain helpful error message assert "memory://" in result.output.lower() assert "not supported" in result.output.lower() or "error" in result.output.lower() # Should mention Redis as an alternative assert "redis" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_valid_urls_accepted[redis://localhost:6379/0] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 43 @pytest.mark.parametrize( "valid_url", [ "redis://localhost:6379/0", "redis://user:pass@host:6379/1", "rediss://secure.example.com:6380/0", "unix:///var/run/redis.sock", ], ) def test_valid_urls_accepted(valid_url: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_valid_urls_accepted[redis://user:pass@host:6379/1] ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 43 @pytest.mark.parametrize( "valid_url", [ "redis://localhost:6379/0", "redis://user:pass@host:6379/1", "rediss://secure.example.com:6380/0", "unix:///var/run/redis.sock", ], ) def test_valid_urls_accepted(valid_url: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_valid_urls_accepted[rediss://secure.example.com:6380/0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 43 @pytest.mark.parametrize( "valid_url", [ "redis://localhost:6379/0", "redis://user:pass@host:6379/1", "rediss://secure.example.com:6380/0", "unix:///var/run/redis.sock", ], ) def test_valid_urls_accepted(valid_url: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_valid_urls_accepted[unix:///var/run/redis.sock] ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 43 @pytest.mark.parametrize( "valid_url", [ "redis://localhost:6379/0", "redis://user:pass@host:6379/1", "rediss://secure.example.com:6380/0", "unix:///var/run/redis.sock", ], ) def test_valid_urls_accepted(valid_url: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_worker_accepts_memory_url _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_url_validation.py, line 61 async def test_worker_accepts_memory_url(): """Worker command should accept memory:// URLs for single-process services""" result = await run_cli( "worker", "--until-finished", "--url", "memory://", "--docket", "test-memory-worker", ) # Should NOT fail with URL validation error assert "not supported" not in result.output.lower() # Exit code 0 means worker ran successfully (no tasks = immediate exit with --until-finished) assert result.exit_code == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_version_command ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_version.py, line 7 async def test_version_command(): """Should print the current version of Docket.""" result = await run_cli("version") assert result.exit_code == 0 assert result.stdout.strip() == __version__ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_version_matches_semantic_versioning __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_version.py, line 14 async def test_version_matches_semantic_versioning(): """Should ensure the version follows semantic versioning format.""" result = await run_cli("version") version = result.stdout.strip() parsed_version = Version(version) assert len(parsed_version.release) >= 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_watch_completed_task __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 29 async def test_watch_completed_task(docket: Docket, the_task: AsyncMock): """Watch should display completed task and exit immediately.""" docket.register(the_task) # Create and complete a task execution = await docket.add(the_task, key="completed-task")() await execution.claim("worker-1") await execution.mark_as_completed() # Watch should show completion and exit result = await run_cli( "watch", "completed-task", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "completed-task" in result.output assert "COMPLETED" in result.output.upper() assert docket.name in result.output assert "✓" in result.output or "completed successfully" in result.output.lower() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_watch_failed_task ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 55 async def test_watch_failed_task(docket: Docket, the_task: AsyncMock): """Watch should display failed task with error message.""" docket.register(the_task) execution = await docket.add(the_task, key="failed-task")() await execution.claim("worker-1") await execution.mark_as_failed("Test error message") result = await run_cli( "watch", "failed-task", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "failed-task" in result.output assert "FAILED" in result.output.upper() assert docket.name in result.output assert "✗" in result.output or "failed" in result.output.lower() assert "Test error message" in result.output or "Error" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_watch_running_task_until_completion __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 80 async def test_watch_running_task_until_completion(docket: Docket, worker: Worker): """Watch should monitor task from running to completion.""" # Coordination key for synchronization ready_key = f"{docket.name}:test:watch:ready" async def coordinated_task(): # Wait for watch to be subscribed before completing async with docket.redis() as redis: while not await redis.get(ready_key): # type: ignore[misc] await asyncio.sleep(0.01) # Now do the work await asyncio.sleep(0.5) docket.register(coordinated_task) await docket.add(coordinated_task, key="slower-task")() # Start worker in background worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for worker to claim the task await wait_for_execution_state(docket, "slower-task", ExecutionState.RUNNING) # Start watch subprocess in background watch_task = asyncio.create_task( run_cli( "watch", "slower-task", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) ) # Wait for watch to subscribe (deterministic synchronization) await wait_for_watch_subscribed(docket, "slower-task") # Signal task it can complete now async with docket.redis() as redis: await redis.set(ready_key, "1", ex=10) # Wait for watch to finish result = await watch_task await worker_task assert result.exit_code == 0 assert "slower-task" in result.output assert docket.name in result.output assert "RUNNING" in result.output.upper() or "COMPLETED" in result.output.upper() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_watch_with_progress_updates ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 133 async def test_watch_with_progress_updates(docket: Docket, worker: Worker): """Watch should display progress bar updates.""" async def task_with_progress(progress: Progress = Progress()): await progress.set_total(10) await progress.set_message("Starting") for i in range(10): # Slower so watch has time to connect and receive events await asyncio.sleep(0.1) await progress.increment() await progress.set_message(f"Step {i + 1}") docket.register(task_with_progress) await docket.add(task_with_progress, key="progress-task")() worker_task = asyncio.create_task(worker.run_until_finished()) result = await run_cli( "watch", "progress-task", "--url", docket.url, "--docket", docket.name, ) await worker_task assert result.exit_code == 0 assert "progress-task" in result.output assert docket.name in result.output # State should be shown assert "COMPLETED" in result.output.upper() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_watch_scheduled_task_transition ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 168 async def test_watch_scheduled_task_transition(docket: Docket, worker: Worker): """Watch should show task transition from scheduled to completed.""" async def scheduled_task(): await asyncio.sleep(0.01) docket.register(scheduled_task) # Schedule for near future when = datetime.now(timezone.utc) + timedelta(seconds=2) await docket.add(scheduled_task, when=when, key="scheduled-task")() worker_task = asyncio.create_task(worker.run_until_finished()) result = await run_cli( "watch", "scheduled-task", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "scheduled-task" in result.output assert docket.name in result.output # Should show final completed state assert "COMPLETED" in result.output.upper() or "SCHEDULED" in result.output.upper() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_watch_task_with_initial_progress ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 201 async def test_watch_task_with_initial_progress(docket: Docket, worker: Worker): """Watch should handle task that already has progress when monitoring starts.""" async def task_with_initial_progress(progress: Progress = Progress()): # Set progress before watch likely connects await progress.set_total(20) await progress.increment(5) # Then continue slowly for _ in range(15): await asyncio.sleep(0.1) await progress.increment() docket.register(task_with_initial_progress) await docket.add(task_with_initial_progress, key="initial-progress")() worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for task to report progress data await wait_for_progress_data( docket, "initial-progress", min_current=1, min_total=20 ) result = await run_cli( "watch", "initial-progress", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_watch_task_with_worker_assignment ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 238 async def test_watch_task_with_worker_assignment(docket: Docket, worker: Worker): """Watch should show worker name when task is claimed.""" async def long_running_task(): # Long enough for watch to definitely connect await asyncio.sleep(3.0) docket.register(long_running_task) await docket.add(long_running_task, key="worker-assigned")() worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for worker to claim task await wait_for_worker_assignment(docket, "worker-assigned") result = await run_cli( "watch", "worker-assigned", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "worker-assigned" in result.output assert docket.name in result.output assert "Worker" in result.output or worker.name in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_watch_task_that_starts_while_watching _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 271 async def test_watch_task_that_starts_while_watching(docket: Docket, worker: Worker): """Watch should receive started_at event and update progress bar timing.""" async def task_that_waits_then_progresses(progress: Progress = Progress()): # Immediately report progress so watch sees it await progress.set_total(10) await progress.increment(1) await progress.set_message("Started") # Then continue for _ in range(9): await asyncio.sleep(0.15) await progress.increment() docket.register(task_that_waits_then_progresses) # Schedule task for slightly in future so watch can connect first when = datetime.now(timezone.utc) + timedelta(seconds=2) await docket.add(task_that_waits_then_progresses, when=when, key="timing-test")() worker_task = asyncio.create_task(worker.run_until_finished()) # Start watching BEFORE task starts result = await run_cli( "watch", "timing-test", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "timing-test" in result.output assert docket.name in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_watch_receives_progress_events_during_execution ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 310 async def test_watch_receives_progress_events_during_execution( docket: Docket, worker: Worker ): """Watch should receive and process progress events as they occur.""" async def task_with_many_updates(progress: Progress = Progress()): await progress.set_total(20) for i in range(20): await asyncio.sleep(0.08) # 1.6 seconds total await progress.increment() if i % 5 == 0: await progress.set_message(f"Checkpoint {i}") docket.register(task_with_many_updates) await docket.add(task_with_many_updates, key="many-updates")() worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for worker to start processing await wait_for_execution_state(docket, "many-updates", ExecutionState.RUNNING) result = await run_cli( "watch", "many-updates", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "many-updates" in result.output assert docket.name in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_watch_already_running_task_with_progress ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 348 async def test_watch_already_running_task_with_progress(docket: Docket, worker: Worker): """Watch a task that's already running with progress when watch starts.""" async def task_already_running(progress: Progress = Progress()): # Set up some initial state quickly await progress.set_total(30) await progress.increment(10) await progress.set_message("Already started") # Then run slowly so watch can observe for _ in range(20): await asyncio.sleep(0.1) await progress.increment() docket.register(task_already_running) await docket.add(task_already_running, key="already-running")() # Start worker worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for task to start and report progress data await wait_for_execution_state(docket, "already-running", ExecutionState.RUNNING) await wait_for_progress_data(docket, "already-running", min_current=1, min_total=30) # Now start watching - task should already be RUNNING with progress result = await run_cli( "watch", "already-running", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "already-running" in result.output assert docket.name in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_watch_task_with_worker_in_state_event _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 389 async def test_watch_task_with_worker_in_state_event(docket: Docket, worker: Worker): """Watch should handle state events containing worker name.""" async def task_with_delays(progress: Progress = Progress()): # Publish progress to create progress bar await progress.set_total(15) await progress.increment(1) # Long delay so watch receives events for _ in range(14): await asyncio.sleep(0.15) await progress.increment() docket.register(task_with_delays) # Schedule slightly in future when = datetime.now(timezone.utc) + timedelta(milliseconds=150) await docket.add(task_with_delays, when=when, key="worker-event")() worker_task = asyncio.create_task(worker.run_until_finished()) # Start watch early so it's listening when task starts result = await run_cli( "watch", "worker-event", "--url", docket.url, "--docket", docket.name, timeout=10.0, ) await worker_task assert result.exit_code == 0 assert "worker-event" in result.output assert docket.name in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_watch_task_with_incomplete_data ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_watch.py, line 427 async def test_watch_task_with_incomplete_data( docket: Docket, key_leak_checker: KeyCountChecker ): """Watch should show error when task has incomplete data in Redis.""" # This test manually creates incomplete test data key_leak_checker.add_exemption(f"{docket.name}:runs:incomplete-task") # Manually create runs hash with incomplete data (missing function/args/kwargs) async with docket.redis() as redis: runs_key = f"{docket.name}:runs:incomplete-task" await redis.hset(runs_key, mapping={"state": "scheduled"}) # type: ignore[misc] result = await run_cli( "watch", "incomplete-task", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "Error" in result.output assert "not found" in result.output or "incomplete-task" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_command_exposes_all_the_options_of_worker ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 24 def test_worker_command_exposes_all_the_options_of_worker(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_worker_command _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 60 async def test_worker_command( docket: Docket, ): """Should run a worker until there are no more tasks to process""" result = await run_cli( "worker", "--until-finished", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0 assert "Starting worker" in result.output assert "trace" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_worker_command_with_fallback_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 78 @pytest.mark.skipif( os.environ.get("REDIS_VERSION") == "memory", reason="Memory backend doesn't share state across processes", ) async def test_worker_command_with_fallback_task( docket: Docket, ): """Should accept --fallback-task option and use it for unknown tasks""" # Schedule a task that won't be registered with the worker async def unregistered_task() -> None: pass # pragma: no cover docket.register(unregistered_task) await docket.add(unregistered_task)() docket.tasks.pop("unregistered_task") # Use the default fallback from docket.worker result = await run_cli( "worker", "--until-finished", "--url", docket.url, "--docket", docket.name, "--fallback-task", "docket.worker:default_fallback_task", ) assert result.exit_code == 0 assert "Starting worker" in result.output assert "Unknown task 'unregistered_task'" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_rich_logging_format __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 112 async def test_rich_logging_format(docket: Docket): """Should use rich formatting for logs by default""" await docket.add(trace)("hello") logging.basicConfig(force=True) result = await run_cli( "worker", "--until-finished", "--url", docket.url, "--docket", docket.name, "--logging-format", "rich", ) assert result.exit_code == 0, result.output assert "Starting worker" in result.output assert "trace" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_plain_logging_format __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 135 async def test_plain_logging_format(docket: Docket): """Should use plain formatting for logs when specified""" await docket.add(trace)("hello") result = await run_cli( "worker", "--until-finished", "--url", docket.url, "--docket", docket.name, "--logging-format", "plain", ) assert result.exit_code == 0, result.output assert "Starting worker" in result.output assert "trace" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_json_logging_format __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 156 async def test_json_logging_format(docket: Docket): """Should use JSON formatting for logs when specified""" await docket.add(trace)("hello") start = datetime.now(timezone.utc) result = await run_cli( "worker", "--until-finished", "--url", docket.url, "--docket", docket.name, "--logging-format", "json", ) assert result.exit_code == 0, result.output # All output lines should be valid JSON for line in result.output.strip().split("\n"): parsed: dict[str, str] = json.loads(line) assert isinstance(parsed, dict) assert parsed["name"].startswith("docket.") assert parsed["levelname"] in ("INFO", "WARNING", "ERROR", "CRITICAL") assert "message" in parsed assert "exc_info" in parsed timestamp = datetime.strptime(parsed["asctime"], "%Y-%m-%d %H:%M:%S,%f") timestamp = timestamp.astimezone() assert timestamp >= start assert timestamp.tzinfo is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_sigterm_gracefully_drains_inflight_tasks ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 249 @pytest.mark.skipif( os.environ.get("REDIS_VERSION") == "memory", reason="Memory backend doesn't share state across processes", ) async def test_sigterm_gracefully_drains_inflight_tasks( docket: Docket, key_leak_checker: KeyCountChecker ) -> None: """Worker should finish in-flight tasks before exiting on SIGTERM. This is critical for Kubernetes deployments where SIGTERM is sent during pod termination. Without graceful handling, in-flight tasks are abruptly killed and must be redelivered after redelivery_timeout. """ await _test_signal_graceful_shutdown(docket, key_leak_checker, signal.SIGTERM) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_sigint_gracefully_drains_inflight_tasks ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_worker.py, line 265 @pytest.mark.skipif( os.environ.get("REDIS_VERSION") == "memory", reason="Memory backend doesn't share state across processes", ) async def test_sigint_gracefully_drains_inflight_tasks( docket: Docket, key_leak_checker: KeyCountChecker ) -> None: """Worker should finish in-flight tasks before exiting on SIGINT. This ensures consistent graceful shutdown behavior across Python 3.10+. """ await _test_signal_graceful_shutdown(docket, key_leak_checker, signal.SIGINT) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, reset_logging, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_list_workers_command __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_workers.py, line 19 async def test_list_workers_command(docket: Docket): """Should list all active workers""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 async with Worker(docket, name="worker-1"), Worker(docket, name="worker-2"): await asyncio.sleep(heartbeat.total_seconds() * 5) result = await run_cli( "workers", "ls", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "worker-1" in result.output assert "worker-2" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_list_workers_for_task _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/cli/test_workers.py, line 42 async def test_list_workers_for_task(docket: Docket): """Should list workers that can handle a specific task""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 async with Worker(docket, name="worker-1"), Worker(docket, name="worker-2"): await asyncio.sleep(heartbeat.total_seconds() * 5) result = await run_cli( "workers", "for-task", "trace", "--url", docket.url, "--docket", docket.name, ) assert result.exit_code == 0, result.output assert "worker-1" in result.output assert "worker-2" in result.output file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_basic_concurrency_limit ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 15 async def test_basic_concurrency_limit(docket: Docket, worker: Worker): """Test basic concurrency limiting functionality.""" results: list[str] = [] async def test_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): results.append(f"start_{customer_id}") await asyncio.sleep(0.01) # Short delay results.append(f"end_{customer_id}") # Schedule 2 tasks for the same customer await docket.add(test_task)(customer_id=1) await docket.add(test_task)(customer_id=1) # Run worker await worker.run_until_finished() # Should have 4 results: start_1, end_1, start_1, end_1 assert len(results) == 4 assert results[0] == "start_1" assert results[1] == "end_1" assert results[2] == "start_1" assert results[3] == "end_1" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_per_task_concurrency_limit _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 44 async def test_per_task_concurrency_limit(docket: Docket, worker: Worker): """Test concurrency limit without argument_name limits the task itself.""" execution_intervals: list[tuple[float, float]] = [] async def limited_task( task_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit(max_concurrent=2), ): start = time.monotonic() await asyncio.sleep(0.05) end = time.monotonic() execution_intervals.append((start, end)) # Schedule 4 tasks for i in range(4): await docket.add(limited_task)(task_id=i) await worker.run_until_finished() assert len(execution_intervals) == 4 # With max_concurrent=2, we should see overlapping pairs but not all 4 at once # Sort by start time intervals = sorted(execution_intervals) # First two should overlap (started together) assert_some_overlap([intervals[0], intervals[1]], "first batch tasks") # Third task should start after one of the first two finishes # (it can't start until a slot is free) first_batch_end = min(intervals[0][1], intervals[1][1]) assert intervals[2][0] >= first_batch_end - 0.01 # small tolerance file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_concurrency_limit_single_argument ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 78 async def test_concurrency_limit_single_argument(docket: Docket, worker: Worker): """Test that ConcurrencyLimit enforces single concurrent execution per argument value.""" execution_order: list[str] = [] execution_intervals: list[tuple[float, float]] = [] async def slow_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): start = time.monotonic() execution_order.append(f"start_{customer_id}") # Simulate some work await asyncio.sleep(0.2) end = time.monotonic() execution_order.append(f"end_{customer_id}") execution_intervals.append((start, end)) # Schedule multiple tasks for the same customer_id await docket.add(slow_task)(customer_id=1) await docket.add(slow_task)(customer_id=1) await docket.add(slow_task)(customer_id=1) await docket.add(slow_task)(customer_id=1) await docket.add(slow_task)(customer_id=1) # Run with limited concurrency worker.concurrency = 10 # High worker concurrency to test task-level limits await worker.run_until_finished() # Verify tasks ran sequentially for the same customer_id assert len(execution_order) == 10 assert execution_order == [ "start_1", "end_1", "start_1", "end_1", "start_1", "end_1", "start_1", "end_1", "start_1", "end_1", ] # Verify no overlap in execution times assert_no_overlaps(execution_intervals, "Same customer tasks") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_concurrency_limit_different_arguments _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 129 async def test_concurrency_limit_different_arguments(docket: Docket, worker: Worker): """Test that tasks with different argument values can run concurrently.""" execution_order: list[str] = [] execution_intervals: dict[int, tuple[float, float]] = {} async def slow_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): start = time.monotonic() execution_order.append(f"start_{customer_id}") # Simulate some work await asyncio.sleep(0.1) end = time.monotonic() execution_order.append(f"end_{customer_id}") execution_intervals[customer_id] = (start, end) # Schedule tasks for different customer_ids await docket.add(slow_task)(customer_id=1) await docket.add(slow_task)(customer_id=2) await docket.add(slow_task)(customer_id=3) # Run with high worker concurrency worker.concurrency = 10 await worker.run_until_finished() # Verify all tasks completed assert len(execution_order) == 6 # Verify tasks for different customers ran concurrently (at least one overlap) intervals = [execution_intervals[1], execution_intervals[2], execution_intervals[3]] assert_some_overlap(intervals, "Different customer tasks") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_concurrency_limit_max_concurrent ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 167 async def test_concurrency_limit_max_concurrent(docket: Docket, worker: Worker): """Test that max_concurrent parameter works correctly.""" execution_order: list[str] = [] active_tasks: list[int] = [] max_concurrent_seen = 0 lock = asyncio.Lock() async def slow_task( task_id: int, db_name: str, concurrency: ConcurrencyLimit = ConcurrencyLimit("db_name", max_concurrent=2), ): nonlocal max_concurrent_seen async with lock: active_tasks.append(task_id) max_concurrent_seen = max(max_concurrent_seen, len(active_tasks)) execution_order.append(f"start_{task_id}") # Simulate some work await asyncio.sleep(0.1) async with lock: active_tasks.remove(task_id) execution_order.append(f"end_{task_id}") # Schedule 5 tasks for the same db_name (should be limited to 2 concurrent) for i in range(5): await docket.add(slow_task)(task_id=i, db_name="postgres") # Run with high worker concurrency worker.concurrency = 10 await worker.run_until_finished() # Verify max concurrency was respected assert max_concurrent_seen <= 2, ( f"Expected max 2 concurrent, but saw {max_concurrent_seen}" ) assert len(execution_order) == 10 # 5 starts + 5 ends file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_concurrency_limit_missing_argument_error ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 208 async def test_concurrency_limit_missing_argument_error(docket: Docket, worker: Worker): """Test that missing argument causes proper error handling.""" async def task_with_missing_arg( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "missing_arg", max_concurrent=1 ), ): pass # pragma: no cover await docket.add(task_with_missing_arg)(customer_id=123) # This should cause the task to fail but not crash the worker await worker.run_until_finished() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_concurrency_limit_with_custom_scope __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 225 async def test_concurrency_limit_with_custom_scope(docket: Docket, worker: Worker): """Test that custom scope parameter works correctly.""" execution_order: list[str] = [] # Use my-application: prefix for custom scopes (allowed by ACL for user-managed keys) async def task_with_scope( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1, scope="my-application:custom" ), ): execution_order.append(f"task_{customer_id}") await docket.add(task_with_scope)(customer_id=1) await docket.add(task_with_scope)(customer_id=1) await worker.run_until_finished() # Should complete both tasks (testing that scope affects Redis key) assert len(execution_order) == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_concurrency_limit_single_dependency_validation _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 247 async def test_concurrency_limit_single_dependency_validation(docket: Docket): """Test that only one ConcurrencyLimit dependency is allowed per task.""" with pytest.raises( ValueError, match="Only one ConcurrencyLimit dependency is allowed per task", ): async def invalid_task( customer_id: int, limitA: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), limitB: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): pass # pragma: no cover await docket.add(invalid_task)(customer_id=1) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_concurrency_limit_without_concurrency_dependency ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 268 async def test_concurrency_limit_without_concurrency_dependency( docket: Docket, worker: Worker ): """Test that tasks without ConcurrencyLimit work normally.""" execution_count = 0 async def normal_task(customer_id: int): nonlocal execution_count execution_count += 1 # Schedule multiple tasks for i in range(5): await docket.add(normal_task)(customer_id=i) await worker.run_until_finished() # All tasks should complete normally assert execution_count == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_concurrency_limit_uninitialized ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 288 def test_concurrency_limit_uninitialized(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_concurrency_limit_initialized _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 296 def test_concurrency_limit_initialized(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_concurrency_limit_overlapping_execution ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 310 async def test_concurrency_limit_overlapping_execution(): """Test that properly sequenced tasks don't trigger overlap detection.""" # Simulate execution times that are properly sequenced times = [ (1.0, "start"), # Task 1 starts (2.0, "end"), # Task 1 ends (3.0, "start"), # Task 2 starts after Task 1 ends (4.0, "end"), # Task 2 ends ] times = sorted(times) for i in range(0, len(times) - 1, 2): end_time = times[i + 1][0] if i + 2 < len(times): next_start_time = times[i + 2][0] assert end_time <= next_start_time, "Tasks should not overlap" # Test different timing scenarios to ensure all branches are covered overlap_detected = False test_cases = [ # Case 1: Tasks with proper sequencing (no overlap) [(1.0, "start"), (2.0, "end"), (3.0, "start"), (4.0, "end")], # Case 2: Tasks with overlap - first task ends after second starts [(1.0, "start"), (4.0, "end"), (2.0, "start"), (3.0, "end")], ] for case_times in test_cases: # Don't sort - process tasks in the order they would be processed for i in range(0, len(case_times) - 1, 2): end_time = case_times[i + 1][0] if i + 2 < len(case_times): next_start_time = case_times[i + 2][0] if end_time > next_start_time: # This branch tests overlap detection - execution detected overlap_detected = True # At least one test case should have detected overlap assert overlap_detected, "Overlap detection logic should have been exercised" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_concurrency_limit_edge_cases ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 353 async def test_concurrency_limit_edge_cases(): """Test edge cases in timing validation.""" # Test single task pair - should take else branch single_pair = [(1.0, "start"), (2.0, "end")] single_pair = sorted(single_pair) for i in range(0, len(single_pair) - 1, 2): end_time = single_pair[i + 1][0] # For single pair, i + 2 >= len(single_pair) is always true assert i + 2 >= len(single_pair), "Single pair should not have next task" # Test case that exercises the if branch four_tasks = [(1.0, "start"), (2.0, "end"), (3.0, "start"), (4.0, "end")] four_tasks = sorted(four_tasks) for i in range(0, len(four_tasks) - 1, 2): end_time = four_tasks[i + 1][0] if i + 2 < len(four_tasks): # This SHOULD execute for multiple pairs to test lines 306-307 next_start_time = four_tasks[i + 2][0] assert end_time <= next_start_time else: pass # Test multiple task pairs - should take if branch multiple_pairs = [(1.0, "start"), (2.0, "end"), (3.0, "start"), (4.0, "end")] multiple_pairs = sorted(multiple_pairs) for i in range(0, len(multiple_pairs) - 1, 2): end_time = multiple_pairs[i + 1][0] if i + 2 < len(multiple_pairs): # This should execute for multiple pairs next_start_time = multiple_pairs[i + 2][0] assert end_time <= next_start_time else: pass file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_concurrency_keys_are_handled ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_basic.py, line 391 async def test_concurrency_keys_are_handled( docket: Docket, worker: Worker, ) -> None: """Verify that concurrency limit keys are properly handled. Concurrency keys have explicit TTLs and are self-cleaning via Lua script, so they should not leak after task completion. """ async def task_with_concurrency( resource_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit("resource_id", 1), ) -> None: pass await docket.add(task_with_concurrency)(resource_id=42) await worker.run_until_finished() # Verify the concurrency key is cleaned up after task completes async with docket.redis() as redis: concurrency_key = f"{docket.name}:concurrency:resource_id:42" exists = await redis.exists(concurrency_key) assert exists == 0, f"Concurrency key {concurrency_key} should be cleaned up" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_concurrency_with_task_failures _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 23 async def test_worker_concurrency_with_task_failures(docket: Docket): """Test that concurrency slots are properly released when tasks fail""" execution_count = 0 failure_count = 0 async def failing_task( customer_id: int, should_fail: bool, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal execution_count, failure_count execution_count += 1 await asyncio.sleep(0.01) if should_fail: failure_count += 1 raise ValueError("Task failed intentionally") await docket.add(failing_task)(customer_id=1, should_fail=True) await docket.add(failing_task)(customer_id=1, should_fail=False) await docket.add(failing_task)(customer_id=1, should_fail=False) async with Worker(docket) as worker: await worker.run_until_finished() assert execution_count == 3 assert failure_count == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_worker_concurrency_error_handling_during_execution ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 54 async def test_worker_concurrency_error_handling_during_execution(docket: Docket): """Test that concurrency management handles errors gracefully during task execution""" tasks_executed = 0 error_count = 0 async def task_that_may_error( customer_id: int, should_error: bool, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal tasks_executed, error_count tasks_executed += 1 if should_error: error_count += 1 raise RuntimeError("Task execution error") await docket.add(task_that_may_error)(customer_id=1, should_error=True) await docket.add(task_that_may_error)(customer_id=1, should_error=False) async with Worker(docket) as worker: await worker.run_until_finished() assert tasks_executed == 2 assert error_count == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_concurrency_multiple_workers_coordination ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 83 async def test_worker_concurrency_multiple_workers_coordination(docket: Docket): """Test that multiple workers coordinate concurrency limits correctly""" worker1_executions = 0 worker2_executions = 0 total_concurrent = 0 max_concurrent_observed = 0 async def coordinated_task( customer_id: int, worker_name: str, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): nonlocal total_concurrent, max_concurrent_observed nonlocal worker1_executions, worker2_executions total_concurrent += 1 max_concurrent_observed = max(max_concurrent_observed, total_concurrent) if worker_name == "worker1": worker1_executions += 1 else: worker2_executions += 1 await asyncio.sleep(0.02) total_concurrent -= 1 for _ in range(4): await docket.add(coordinated_task)(customer_id=1, worker_name="worker1") for _ in range(4): await docket.add(coordinated_task)(customer_id=1, worker_name="worker2") worker1 = Worker(docket, name="worker1", concurrency=5) worker2 = Worker(docket, name="worker2", concurrency=5) async with worker1, worker2: await asyncio.gather(worker1.run_until_finished(), worker2.run_until_finished()) assert worker1_executions + worker2_executions == 8 assert max_concurrent_observed <= 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_refresh_handles_redis_errors ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 126 async def test_worker_concurrency_refresh_handles_redis_errors(docket: Docket): """Test that concurrency refresh mechanism handles Redis errors gracefully""" task_completed = False async def task_with_concurrency( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal task_completed await asyncio.sleep(0.02) task_completed = True await docket.add(task_with_concurrency)(customer_id=1) worker = Worker(docket, reconnection_delay=timedelta(milliseconds=10)) error_count = 0 original_redis = docket.redis @asynccontextmanager async def flaky_redis(): nonlocal error_count if error_count == 1: error_count += 1 raise ConnectionError("Simulated Redis error") error_count += 1 async with original_redis() as redis: yield redis with patch.object(docket, "redis", flaky_redis): async with worker: await worker.run_until_finished() assert task_completed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_worker_concurrency_robustness_under_stress _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 164 async def test_worker_concurrency_robustness_under_stress(docket: Docket): """Test that concurrency management remains robust under stress conditions""" successful_executions = 0 max_concurrent = 0 current_concurrent = 0 async def stress_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=3 ), ): nonlocal successful_executions, max_concurrent, current_concurrent current_concurrent += 1 max_concurrent = max(max_concurrent, current_concurrent) try: await asyncio.sleep(0.005) successful_executions += 1 finally: current_concurrent -= 1 for _ in range(20): await docket.add(stress_task)(customer_id=1) worker1 = Worker(docket, name="worker1", concurrency=10) worker2 = Worker(docket, name="worker2", concurrency=10) async with worker1, worker2: await asyncio.gather(worker1.run_until_finished(), worker2.run_until_finished()) assert successful_executions == 20 assert max_concurrent <= 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_worker_concurrency_edge_cases _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 199 async def test_worker_concurrency_edge_cases(docket: Docket): """Test edge cases in concurrency management""" edge_case_handled = True async def edge_case_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): pass for _ in range(5): await docket.add(edge_case_task)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() assert edge_case_handled file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_graceful_shutdown_with_concurrency_management __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_errors_and_resilience.py, line 220 async def test_worker_graceful_shutdown_with_concurrency_management(docket: Docket): """Test that workers shut down gracefully while managing concurrency""" task_started = asyncio.Event() task_completed = asyncio.Event() async def simple_task(): task_started.set() await asyncio.sleep(0.01) task_completed.set() await docket.add(simple_task)() async with Worker(docket) as worker: await worker.run_until_finished() assert task_started.is_set(), "Task should have started" assert task_completed.is_set(), "Task should have completed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_limits_task_queuing_behavior ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 17 async def test_worker_concurrency_limits_task_queuing_behavior(docket: Docket): """Test that concurrency limits control task execution properly""" execution_log: ContextVar[list[tuple[str, int]]] = ContextVar("execution_log") execution_log.set([]) async def task_with_concurrency( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): log = execution_log.get() log.append(("start", customer_id)) execution_log.set(log) await asyncio.sleep(0.01) log = execution_log.get() log.append(("end", customer_id)) execution_log.set(log) await docket.add(task_with_concurrency)(customer_id=1) await docket.add(task_with_concurrency)(customer_id=2) await docket.add(task_with_concurrency)(customer_id=1) await docket.add(task_with_concurrency)(customer_id=2) await docket.add(task_with_concurrency)(customer_id=1) async with Worker(docket, concurrency=5) as worker: await worker.run_until_finished() log = execution_log.get() start_events = [event for event in log if event[0] == "start"] end_events = [event for event in log if event[0] == "end"] customer_1_starts = len([e for e in start_events if e[1] == 1]) customer_2_starts = len([e for e in start_events if e[1] == 2]) assert customer_1_starts == 3 assert customer_2_starts == 2 assert len(start_events) == len(end_events) == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_different_customer_branches _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 60 async def test_worker_concurrency_different_customer_branches(docket: Docket): """Test that different customer IDs are handled in separate branches""" customers_executed: set[int] = set() async def track_customer_execution( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): customers_executed.add(customer_id) await asyncio.sleep(0.01) for customer_id in [1, 2, 3]: await docket.add(track_customer_execution)(customer_id=customer_id) async with Worker(docket, concurrency=5) as worker: await worker.run_until_finished() assert customers_executed == {1, 2, 3} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_worker_concurrency_limits_different_scopes _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 82 async def test_worker_concurrency_limits_different_scopes(docket: Docket): """Test that concurrency limits work correctly with different scopes""" task_executions: list[tuple[str, int]] = [] # Use my-application: prefix for custom scopes (allowed by ACL for user-managed keys) async def scoped_task( customer_id: int, scope_name: str, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1, scope="my-application:custom" ), ): task_executions.append((scope_name, customer_id)) await asyncio.sleep(0.01) async def default_scoped_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): task_executions.append(("default", customer_id)) await asyncio.sleep(0.01) await docket.add(scoped_task)(customer_id=1, scope_name="custom") await docket.add(default_scoped_task)(customer_id=1) async with Worker(docket, concurrency=5) as worker: await worker.run_until_finished() assert len(task_executions) == 2 assert ("custom", 1) in task_executions assert ("default", 1) in task_executions file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_concurrency_refresh_mechanism_integration ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 117 async def test_worker_concurrency_refresh_mechanism_integration(docket: Docket): """Test that concurrency refresh mechanism works in practice""" long_running_started = False quick_task_completed = False async def long_running_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal long_running_started long_running_started = True await asyncio.sleep(0.1) async def quick_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal quick_task_completed quick_task_completed = True await docket.add(long_running_task)(customer_id=1) await docket.add(quick_task)(customer_id=1) worker = Worker(docket) async with worker: await worker.run_until_finished() assert long_running_started assert quick_task_completed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_worker_concurrency_with_quick_tasks __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 153 async def test_worker_concurrency_with_quick_tasks(docket: Docket): """Test that quick tasks complete without triggering complex cleanup paths""" completed_tasks = 0 async def quick_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): nonlocal completed_tasks completed_tasks += 1 for _ in range(5): await docket.add(quick_task)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() assert completed_tasks == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_concurrency_with_dependencies_integration ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 175 async def test_worker_concurrency_with_dependencies_integration(docket: Docket): """Test that concurrency limits work correctly with dependency injection""" task_completed = False current_worker_name = None async def task_with_dependencies( customer_id: int, worker: Worker = CurrentWorker(), concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal task_completed, current_worker_name current_worker_name = worker.name await asyncio.sleep(0.01) task_completed = True await docket.add(task_with_dependencies)(customer_id=1) async with Worker(docket, name="test-worker") as worker: await worker.run_until_finished() assert task_completed assert current_worker_name == "test-worker" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_concurrency_limited_task_successfully_acquires_slot __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_execution_patterns.py, line 201 async def test_concurrency_limited_task_successfully_acquires_slot(docket: Docket): """Tasks with concurrency limits successfully acquire slots when available""" executed: list[int] = [] async def limited_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2, ), ) -> None: executed.append(customer_id) await asyncio.sleep(0.01) await docket.add(limited_task)(customer_id=1) async with Worker(docket, concurrency=5) as worker: await worker.run_until_finished() assert executed == [1] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_task_timeout_with_explicit_timeout ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 12 async def test_task_timeout_with_explicit_timeout(docket: Docket): """Test that tasks with explicit Timeout are timed out correctly.""" task_started = False task_completed = False event = asyncio.Event() async def long_running_task( customer_id: int, test_mode: str = "timeout", concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), timeout: Timeout = Timeout(timedelta(seconds=1)), ): nonlocal task_started, task_completed task_started = True if test_mode == "complete": # Fast completion for coverage await asyncio.sleep(0.01) task_completed = True elif test_mode == "long_complete": # Long running but within timeout for coverage await asyncio.sleep(0.5) # Within the 1-second timeout task_completed = True else: # Simulate a task that would run longer than timeout # Don't set event - task will hang and be timed out await event.wait() docket.register(long_running_task) async with Worker( docket, minimum_check_interval=timedelta(milliseconds=50), scheduling_resolution=timedelta(milliseconds=50), redelivery_timeout=timedelta(seconds=3), ) as worker: # Schedule the long-running task await docket.add(long_running_task)(customer_id=1) # Start the worker and let it run await worker.run_until_finished() # Verify the task started but was timed out before completion assert task_started, "Task should have started" assert not task_completed, "Task should have been timed out before completion" # Test the completion path for coverage task_started = False task_completed = False await docket.add(long_running_task)(customer_id=2, test_mode="complete") await worker.run_until_finished() assert task_started, "Second task should have started" assert task_completed, "Second task should have completed" # Test long-running path that actually completes for coverage task_started = False task_completed = False await docket.add(long_running_task)(customer_id=3, test_mode="long_complete") await worker.run_until_finished() assert task_started, "Third task should have started" assert task_completed, "Third task should have completed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_task_timeout_with_concurrent_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 77 async def test_task_timeout_with_concurrent_tasks(docket: Docket): """Test that concurrency control works with hard timeouts.""" tasks_started: list[int] = [] tasks_completed: list[int] = [] async def task_within_timeout( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): tasks_started.append(customer_id) # Task that completes within timeout await asyncio.sleep(1) tasks_completed.append(customer_id) # Create a worker with reasonable timeout async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), redelivery_timeout=timedelta(seconds=3), # Tasks will timeout after 3 seconds ) as worker: # Schedule multiple tasks for the same customer (will run concurrently up to limit) for _ in range(3): # 3 tasks, but max_concurrent=2 await docket.add(task_within_timeout)(customer_id=1) # Start the worker and let it run await worker.run_until_finished() # Verify that all tasks completed successfully assert len(tasks_started) == 3, "All tasks should have started" assert len(tasks_completed) == 3, "All tasks should have completed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_explicit_timeout_limits_long_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 114 async def test_explicit_timeout_limits_long_tasks(docket: Docket): """Test that tasks with explicit Timeout longer than the limit are terminated.""" task_completed = False event = asyncio.Event() async def long_task( customer_id: int, test_mode: str = "timeout", concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), timeout: Timeout = Timeout(timedelta(seconds=1)), ): nonlocal task_completed if test_mode == "complete": # Fast completion for coverage await asyncio.sleep(0.01) task_completed = True elif test_mode == "long_complete": # Long running but completes within timeout await asyncio.sleep(0.5) # Less than 1 second timeout task_completed = True else: # Simulate a task that would run longer than timeout # Don't set event - task will hang and be timed out await event.wait() docket.register(long_task) async with Worker( docket, minimum_check_interval=timedelta(milliseconds=50), scheduling_resolution=timedelta(milliseconds=50), redelivery_timeout=timedelta(seconds=3), ) as worker: # Schedule long-running task await docket.add(long_task)(customer_id=1) # Run tasks await worker.run_until_finished() # Verify task was timed out assert not task_completed, "Task should have been timed out by explicit Timeout" # Test completion path for coverage task_completed = False await docket.add(long_task)(customer_id=2, test_mode="complete") await worker.run_until_finished() assert task_completed, "Second task should have completed" # Test long completion path for coverage task_completed = False await docket.add(long_task)(customer_id=3, test_mode="long_complete") await worker.run_until_finished() assert task_completed, "Third task should have completed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_short_tasks_complete_within_timeout __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 171 async def test_short_tasks_complete_within_timeout(docket: Docket): """Test that short tasks complete successfully within redelivery timeout.""" tasks_completed = 0 async def short_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal tasks_completed await asyncio.sleep(0.1) # Very short task tasks_completed += 1 async with Worker( docket, minimum_check_interval=timedelta(milliseconds=50), scheduling_resolution=timedelta(milliseconds=50), redelivery_timeout=timedelta(seconds=3), ) as worker: # Schedule multiple short tasks for _ in range(5): await docket.add(short_task)(customer_id=1) # Run tasks start_time = time.monotonic() await worker.run_until_finished() total_time = time.monotonic() - start_time # All tasks should complete successfully assert tasks_completed == 5, ( f"Expected 5 tasks completed, got {tasks_completed}" ) assert total_time < 3.0, f"Short tasks took too long: {total_time:.2f}s" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_redeliveries_respect_concurrency_limits ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 207 async def test_redeliveries_respect_concurrency_limits(docket: Docket): """Test that redelivered tasks still respect concurrency limits""" task_executions: list[tuple[int, float, float]] = [] # (customer_id, start, end) failure_count = 0 async def task_that_sometimes_fails( customer_id: int, should_fail: bool, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1, ), ): nonlocal failure_count start = time.monotonic() await asyncio.sleep(0.02) end = time.monotonic() task_executions.append((customer_id, start, end)) if should_fail: failure_count += 1 raise ValueError("Intentional failure for testing") # Schedule tasks: some will fail initially, others succeed await docket.add(task_that_sometimes_fails)(customer_id=1, should_fail=True) await docket.add(task_that_sometimes_fails)(customer_id=1, should_fail=False) await docket.add(task_that_sometimes_fails)(customer_id=2, should_fail=False) await docket.add(task_that_sometimes_fails)(customer_id=1, should_fail=False) async with Worker( docket, concurrency=5, redelivery_timeout=timedelta(milliseconds=200) ) as worker: await worker.run_until_finished() # Verify all tasks eventually executed customer_1_intervals = [(s, e) for cid, s, e in task_executions if cid == 1] customer_2_intervals = [(s, e) for cid, s, e in task_executions if cid == 2] # At least 3 executions for customer 1 (redelivery may cause more) assert len(customer_1_intervals) >= 3 assert len(customer_2_intervals) >= 1 # Verify tasks for customer 1 didn't overlap (concurrency limit = 1) assert_no_overlaps(customer_1_intervals, "Customer 1 tasks") assert failure_count >= 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_concurrency_blocked_task_executes_exactly_once _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_redelivery.py, line 255 async def test_concurrency_blocked_task_executes_exactly_once(docket: Docket): """Concurrency limits should prevent tasks for the same customer from overlapping, while allowing parallelism across different customers. This test uses TWO separate workers to ensure concurrency limits work across workers, not just within a single worker. This is important because xautoclaim can reclaim messages from one worker and deliver them to another. """ executions: list[tuple[int, float, float, str]] = [] async def tracked_task( customer_id: int, execution: Execution = CurrentExecution(), concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1, ), ) -> None: start = time.monotonic() await asyncio.sleep(0.02) end = time.monotonic() executions.append((customer_id, start, end, execution.key)) # Schedule 5 tasks for each of 3 customers for customer_id in [1, 2, 3]: for _ in range(5): await docket.add(tracked_task)(customer_id=customer_id) # Use TWO workers with short redelivery timeout to stress test cross-worker # concurrency limits. This exposes issues where xautoclaim reclaims a task # from Worker 1 and delivers it to Worker 2 while Worker 1 is still executing. # Note: 200ms timeout gives enough headroom for lease renewal under CPU throttling. async with ( Worker( docket, concurrency=3, redelivery_timeout=timedelta(milliseconds=200), name="worker-1", ) as worker1, Worker( docket, concurrency=3, redelivery_timeout=timedelta(milliseconds=200), name="worker-2", ) as worker2, ): await asyncio.gather( worker1.run_until_finished(), worker2.run_until_finished(), ) # Group executions by customer_id by_customer: dict[int, list[tuple[float, float, str]]] = {} for customer_id, start, end, key in executions: by_customer.setdefault(customer_id, []).append((start, end, key)) # Verify each customer's tasks completed and didn't overlap for customer_id, customer_executions in by_customer.items(): # At least 5 tasks must have completed (redelivery may cause more) assert len(customer_executions) >= 5, ( f"Customer {customer_id} only completed {len(customer_executions)}/5 tasks" ) # No two executions for this customer should overlap in time intervals = [(start, end) for start, end, _ in customer_executions] assert_no_overlaps(intervals, f"Customer {customer_id} tasks") # Verify all customers completed their tasks assert len(by_customer) == 3, f"Expected 3 customers, got {len(by_customer)}" # Verify cleanup async with docket.redis() as redis: pending_info = await redis.xpending( name=docket.stream_key, groupname=docket.worker_group_name, ) assert pending_info["pending"] == 0, ( "Found unacknowledged messages - cleanup failed" ) assert await redis.xlen(docket.stream_key) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_missing_argument_fails_task _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 16 async def test_worker_concurrency_missing_argument_fails_task(docket: Docket): """Test that tasks with missing concurrency arguments fail with clear error""" task_executed = False async def task_missing_concurrency_arg( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "missing_param", max_concurrent=1, ), ): nonlocal task_executed task_executed = True # pragma: no cover await docket.add(task_missing_concurrency_arg)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() # Task should NOT execute - it should fail due to missing argument assert not task_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_concurrency_no_limit_early_return ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 39 async def test_worker_concurrency_no_limit_early_return(docket: Docket): """Test tasks without concurrency limits execute normally""" task_executed = False async def task_without_concurrency(customer_id: int): nonlocal task_executed task_executed = True await docket.add(task_without_concurrency)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() assert task_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_concurrency_missing_argument_shows_available_args _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 55 async def test_worker_concurrency_missing_argument_shows_available_args(docket: Docket): """Test that missing argument error shows available arguments for debugging.""" task_executed = False async def task_missing_concurrency_arg( actual_param: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "missing_param", max_concurrent=1 ), ): nonlocal task_executed task_executed = True # pragma: no cover await docket.add(task_missing_concurrency_arg)(actual_param=42) async with Worker(docket) as worker: await worker.run_until_finished() # Task should NOT execute - it should fail due to missing argument assert not task_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_concurrency_cleanup_on_success _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 77 async def test_worker_concurrency_cleanup_on_success(docket: Docket): """Test that concurrency slots are released when tasks complete successfully""" completed_tasks: list[int] = [] async def successful_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): completed_tasks.append(customer_id) await asyncio.sleep(0.01) await docket.add(successful_task)(customer_id=1) await docket.add(successful_task)(customer_id=1) await docket.add(successful_task)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() assert len(completed_tasks) == 3 assert all(customer_id == 1 for customer_id in completed_tasks) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_concurrency_cleanup_on_failure _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 101 async def test_worker_concurrency_cleanup_on_failure(docket: Docket): """Test that concurrency slots are released when tasks fail""" execution_results: list[tuple[str, int, bool]] = [] async def task_that_may_fail( customer_id: int, should_fail: bool, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): execution_results.append(("executed", customer_id, should_fail)) await asyncio.sleep(0.01) if should_fail: raise ValueError("Intentional test failure") await docket.add(task_that_may_fail)(customer_id=1, should_fail=True) await docket.add(task_that_may_fail)(customer_id=1, should_fail=False) await docket.add(task_that_may_fail)(customer_id=1, should_fail=False) async with Worker(docket) as worker: await worker.run_until_finished() assert len(execution_results) == 3 failed_tasks = [r for r in execution_results if r[2] is True] successful_tasks = [r for r in execution_results if r[2] is False] assert len(failed_tasks) == 1 assert len(successful_tasks) == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_concurrency_cleanup_after_task_completion ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 132 async def test_worker_concurrency_cleanup_after_task_completion(docket: Docket): """Test that concurrency slots are properly cleaned up after task completion""" cleanup_verified = False async def task_with_cleanup_verification( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): await asyncio.sleep(0.01) await docket.add(task_with_cleanup_verification)(customer_id=1) await docket.add(task_with_cleanup_verification)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() async with docket.redis() as redis: await redis.keys(f"{docket.name}:concurrency:*") # type: ignore cleanup_verified = True assert cleanup_verified file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_handles_concurrent_task_cleanup_gracefully ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 156 async def test_worker_handles_concurrent_task_cleanup_gracefully(docket: Docket): """Test that worker handles task cleanup correctly under concurrent execution""" cleanup_success = True task_count = 0 async def cleanup_test_task( customer_id: int, should_fail: bool = False, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal task_count, cleanup_success task_count += 1 try: await asyncio.sleep(0.01) if should_fail: raise ValueError("Test exception for coverage") except Exception: cleanup_success = False raise for _ in range(2): await docket.add(cleanup_test_task)(customer_id=1, should_fail=False) await docket.add(cleanup_test_task)(customer_id=1, should_fail=True) async with Worker(docket) as worker: await worker.run_until_finished() assert task_count == 3 assert not cleanup_success file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_finally_block_releases_concurrency_on_success _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 190 async def test_finally_block_releases_concurrency_on_success(docket: Docket): """Test that concurrency slot is released when task completes successfully.""" task_completed = False async def successful_task( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ): nonlocal task_completed await asyncio.sleep(0.01) task_completed = True await docket.add(successful_task)(customer_id=1) await docket.add(successful_task)(customer_id=1) async with Worker(docket) as worker: await worker.run_until_finished() assert task_completed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_stale_concurrency_slots_are_scavenged_when_full ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 213 async def test_stale_concurrency_slots_are_scavenged_when_full(docket: Docket): """Test that stale slots are scavenged on-demand when concurrency is full. Slots are only scavenged when a new task needs one and all slots are taken. This is a distributed approach - each worker cleans up as needed rather than proactive garbage collection. """ task_completed = False async def task_with_concurrency( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=2 ), ): nonlocal task_completed task_completed = True # Manually insert stale slots into the concurrency sorted set. # These simulate slots from workers that crashed without releasing. concurrency_key = f"{docket.name}:concurrency:customer_id:123" stale_timestamp = ( datetime.now(timezone.utc).timestamp() - 400 ) # >redelivery_timeout old async with docket.redis() as redis: # Add two stale slots that fill up max_concurrent await redis.zadd(concurrency_key, {"stale_task_1": stale_timestamp}) # type: ignore await redis.zadd(concurrency_key, {"stale_task_2": stale_timestamp}) # type: ignore # Verify stale slots are present count_before = await redis.zcard(concurrency_key) # type: ignore assert count_before == 2 # Run a task - this should scavenge ONE stale slot and execute await docket.add(task_with_concurrency)(customer_id=123) async with Worker(docket) as worker: await worker.run_until_finished() assert task_completed # Verify: one stale slot was scavenged, task completed and released its slot, # so one stale slot should remain (we only scavenge what we need) async with docket.redis() as redis: remaining = await redis.zrange(concurrency_key, 0, -1) # type: ignore # One stale slot should remain (the other was scavenged) assert len(remaining) == 1 # The remaining slot should be one of the stale ones assert remaining[0] in [b"stale_task_1", b"stale_task_2"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_graceful_shutdown_releases_concurrency_slots ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/concurrency_limits/test_worker_mechanics.py, line 265 async def test_graceful_shutdown_releases_concurrency_slots(docket: Docket): """Verify that concurrency slots are released when worker shuts down gracefully. When a worker receives a shutdown signal while tasks are running, it should drain the active tasks (let them complete) and release their concurrency slots. """ task_started = asyncio.Event() task_can_finish = asyncio.Event() task_completed = False async def slow_task_with_concurrency( customer_id: int, concurrency: ConcurrencyLimit = ConcurrencyLimit( "customer_id", max_concurrent=1 ), ) -> None: nonlocal task_completed task_started.set() await task_can_finish.wait() task_completed = True await docket.add(slow_task_with_concurrency)(customer_id=42) concurrency_key = f"{docket.name}:concurrency:customer_id:42" async with Worker(docket) as worker: # Start worker in background worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for task to start (slot should be acquired) await asyncio.wait_for(task_started.wait(), timeout=5.0) # Verify slot is held async with docket.redis() as redis: slot_count = await redis.zcard(concurrency_key) assert slot_count == 1, "Slot should be held while task is running" # Let task finish - worker will drain and exit task_can_finish.set() await asyncio.wait_for(worker_task, timeout=5.0) # Verify task completed and slot was released assert task_completed, "Task should have completed during graceful shutdown" async with docket.redis() as redis: slot_count = await redis.zcard(concurrency_key) assert slot_count == 0, "Slot should be released after graceful shutdown" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_simple_function_dependencies ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 20 async def test_simple_function_dependencies(docket: Docket, worker: Worker): """A task can depend on the return value of simple functions""" async def dependency_one() -> str: return f"one-{uuid4()}" async def dependency_two() -> str: return f"two-{uuid4()}" called = 0 async def dependent_task( one_a: str = Depends(dependency_one), one_b: str = Depends(dependency_one), two: str = Depends(dependency_two), ): assert one_a.startswith("one-") assert one_b == one_a assert two.startswith("two-") nonlocal called called += 1 await docket.add(dependent_task)() await worker.run_until_finished() assert called == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_contextual_dependencies ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 51 async def test_contextual_dependencies(docket: Docket, worker: Worker): """A task can depend on the return value of async context managers""" stages: list[str] = [] @asynccontextmanager async def dependency_one() -> AsyncGenerator[str, None]: stages.append("one-before") yield f"one-{uuid4()}" stages.append("one-after") async def dependency_two() -> str: return f"two-{uuid4()}" called = 0 async def dependent_task( one_a: str = Depends(dependency_one), one_b: str = Depends(dependency_one), two: str = Depends(dependency_two), ): assert one_a.startswith("one-") assert one_b == one_a assert two.startswith("two-") nonlocal called called += 1 await docket.add(dependent_task)() await worker.run_until_finished() assert called == 1 assert stages == ["one-before", "one-after"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_dependencies_of_dependencies ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 88 async def test_dependencies_of_dependencies(docket: Docket, worker: Worker): """A task dependency can depend on other dependencies""" counter = 0 async def dependency_one() -> list[str]: nonlocal counter counter += 1 return [f"one-{counter}"] async def dependency_two(my_one: list[str] = Depends(dependency_one)) -> list[str]: nonlocal counter counter += 1 return my_one + [f"two-{counter}"] async def dependency_three( my_one: list[str] = Depends(dependency_one), my_two: list[str] = Depends(dependency_two), ) -> list[str]: nonlocal counter counter += 1 return my_one + my_two + [f"three-{counter}"] async def dependent_task( one_a: list[str] = Depends(dependency_one), one_b: list[str] = Depends(dependency_one), two: list[str] = Depends(dependency_two), three: list[str] = Depends(dependency_three), ): assert one_a is one_b assert one_a == ["one-1"] assert two == ["one-1", "two-2"] assert three == ["one-1", "two-2", "three-3"] await docket.add(dependent_task)() await worker.run_until_finished() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_dependencies_can_ask_for_docket_dependencies ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 127 async def test_dependencies_can_ask_for_docket_dependencies( docket: Docket, worker: Worker ): """A task dependency can ask for a docket dependency""" called = 0 async def dependency_one(this_docket: Docket = CurrentDocket()) -> str: assert this_docket is docket nonlocal called called += 1 return f"one-{called}" async def dependency_two( this_worker: Worker = CurrentWorker(), one: str = Depends(dependency_one), ) -> str: assert this_worker is worker assert one == "one-1" nonlocal called called += 1 return f"two-{called}" async def dependent_task( one: str = Depends(dependency_one), two: str = Depends(dependency_two), this_docket: Docket = CurrentDocket(), this_worker: Worker = CurrentWorker(), ): assert one == "one-1" assert two == "two-2" assert this_docket is docket assert this_worker is worker nonlocal called called += 1 await docket.add(dependent_task)() await worker.run_until_finished() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_dependency_failures_are_task_failures _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 175 async def test_dependency_failures_are_task_failures( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A task dependency failure will cause the task to fail""" called: bool = False async def dependency_one() -> str: raise ValueError("this one is bad") async def dependency_two() -> str: raise ValueError("and so is this one") async def dependent_task( a: str = Depends(dependency_one), b: str = Depends(dependency_two), ) -> None: nonlocal called called = True # pragma: no cover await docket.add(dependent_task)() with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert not called assert "Failed to resolve dependencies for parameter(s): a, b" in caplog.text assert "ValueError: this one is bad" in caplog.text assert "ValueError: and so is this one" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_contextual_dependency_before_failures_are_task_failures _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 207 async def test_contextual_dependency_before_failures_are_task_failures( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A contextual task dependency failure will cause the task to fail""" called: int = 0 @asynccontextmanager async def dependency_before() -> AsyncGenerator[str, None]: raise ValueError("this one is bad") yield "this won't be used" # pragma: no cover async def dependent_task( a: str = Depends(dependency_before), ) -> None: nonlocal called called += 1 # pragma: no cover await docket.add(dependent_task)() with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert not called assert "Failed to resolve dependencies for parameter(s): a" in caplog.text assert "ValueError: this one is bad" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_contextual_dependency_after_failures_are_task_failures _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 236 async def test_contextual_dependency_after_failures_are_task_failures( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A contextual task dependency failure will cause the task to fail""" called: int = 0 @asynccontextmanager async def dependency_after() -> AsyncGenerator[str, None]: yield "this will be used" raise ValueError("this one is bad") async def dependent_task( a: str = Depends(dependency_after), ) -> None: assert a == "this will be used" nonlocal called called += 1 await docket.add(dependent_task)() with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert called == 1 assert "ValueError: this one is bad" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_dependencies_can_ask_for_task_arguments ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 266 async def test_dependencies_can_ask_for_task_arguments(docket: Docket, worker: Worker): """A task dependency can ask for a task argument""" called = 0 async def dependency_one(a: list[str] = TaskArgument()) -> list[str]: return a async def dependency_two(another_name: list[str] = TaskArgument("a")) -> list[str]: return another_name async def dependent_task( a: list[str], b: list[str] = TaskArgument("a"), c: list[str] = Depends(dependency_one), d: list[str] = Depends(dependency_two), ) -> None: assert a is b assert a is c assert a is d nonlocal called called += 1 await docket.add(dependent_task)(a=["hello", "world"]) await worker.run_until_finished() assert called == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_task_arguments_may_be_optional _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_async_dependencies.py, line 297 async def test_task_arguments_may_be_optional(docket: Docket, worker: Worker): """A task dependency can ask for a task argument optionally""" called = 0 async def dependency_one( a: list[str] | None = TaskArgument(optional=True), ) -> list[str] | None: return a async def dependent_task( not_a: list[str], b: list[str] | None = Depends(dependency_one), ) -> None: assert not_a == ["hello", "world"] assert b is None nonlocal called called += 1 await docket.add(dependent_task)(not_a=["hello", "world"]) await worker.run_until_finished() assert called == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_all_dockets_have_a_trace_task _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_builtin_tasks.py, line 10 async def test_all_dockets_have_a_trace_task( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """All dockets should have a trace task""" await docket.add(tasks.trace)("Hello, world!") with caplog.at_level(logging.INFO): await worker.run_until_finished() assert "Hello, world!" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_all_dockets_have_a_fail_task ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_builtin_tasks.py, line 23 async def test_all_dockets_have_a_fail_task( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """All dockets should have a fail task""" await docket.add(tasks.fail)("Hello, world!") with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert "Hello, world!" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_cancelling_future_task _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cancellation.py, line 11 async def test_cancelling_future_task( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket should allow for cancelling a task""" soon = now() + timedelta(milliseconds=100) execution = await docket.add(the_task, soon)("a", "b", c="c") await docket.cancel(execution.key) await testing.assert_task_not_scheduled(docket, the_task) await worker.run_until_finished() the_task.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_cancelling_immediate_task _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cancellation.py, line 28 async def test_cancelling_immediate_task( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket can cancel a task that is scheduled immediately""" execution = await docket.add(the_task, now())("a", "b", c="c") await docket.cancel(execution.key) await testing.assert_task_not_scheduled(docket, the_task) await worker.run_until_finished() the_task.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_cancellation_is_idempotent _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cancellation.py, line 44 async def test_cancellation_is_idempotent( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Test that canceling the same task twice doesn't error.""" key = f"test-task:{uuid4()}" # Schedule a task later = now() + timedelta(seconds=1) await docket.add(the_task, later, key=key)("test") # Cancel it twice - both should succeed without error await docket.cancel(key) await docket.cancel(key) # Should be idempotent await testing.assert_task_not_scheduled(docket, the_task) # Run worker to ensure the task was actually cancelled await worker.run_until_finished() # Task should not have been executed since it was cancelled the_task.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_supports_requesting_current_docket ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_context_injection.py, line 17 async def test_supports_requesting_current_docket( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support providing the current docket to a task""" called = False async def the_task(a: str, b: str, this_docket: Docket = CurrentDocket()): assert a == "a" assert b == "c" assert this_docket is docket nonlocal called called = True await docket.add(the_task)("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_supports_requesting_current_worker ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_context_injection.py, line 39 async def test_supports_requesting_current_worker( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support providing the current worker to a task""" called = False async def the_task(a: str, b: str, this_worker: Worker = CurrentWorker()): assert a == "a" assert b == "c" assert this_worker is worker nonlocal called called = True await docket.add(the_task)("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_supports_requesting_current_execution _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_context_injection.py, line 61 async def test_supports_requesting_current_execution( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support providing the current execution to a task""" called = False async def the_task(a: str, b: str, this_execution: Execution = CurrentExecution()): assert a == "a" assert b == "c" assert isinstance(this_execution, Execution) assert this_execution.key == "my-cool-task:123" nonlocal called called = True await docket.add(the_task, key="my-cool-task:123")("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_supports_requesting_current_task_key __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_context_injection.py, line 85 async def test_supports_requesting_current_task_key( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support providing the current task key to a task""" called = False async def the_task(a: str, b: str, this_key: str = TaskKey()): assert a == "a" assert b == "c" assert this_key == "my-cool-task:123" nonlocal called called = True await docket.add(the_task, key="my-cool-task:123")("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cron_task_reschedules_itself ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 16 async def test_cron_task_reschedules_itself(docket: Docket, worker: Worker): """Cron tasks automatically reschedule after each execution.""" runs = 0 async def my_cron_task(cron: Cron = Cron("0 9 * * *", automatic=False)): nonlocal runs runs += 1 # Patch croniter.get_next to return a time 10ms in the future with patch.object( croniter, "get_next", return_value=datetime.now(timezone.utc) + timedelta(milliseconds=10), ): execution = await docket.add(my_cron_task)() await worker.run_at_most({execution.key: 3}) assert runs == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_cron_tasks_are_automatically_scheduled _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 36 async def test_cron_tasks_are_automatically_scheduled(docket: Docket, worker: Worker): """Cron tasks with automatic=True are scheduled at worker startup.""" calls = 0 async def my_automatic_cron( cron: Cron = Cron("0 0 * * *"), ): # automatic=True is default nonlocal calls calls += 1 docket.register(my_automatic_cron) with patch.object( croniter, "get_next", return_value=datetime.now(timezone.utc) + timedelta(milliseconds=10), ): await worker.run_at_most({"my_automatic_cron": 2}) assert calls == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cron_tasks_continue_after_errors ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 58 async def test_cron_tasks_continue_after_errors(docket: Docket, worker: Worker): """Cron tasks keep rescheduling even when they raise exceptions.""" calls = 0 async def flaky_cron_task(cron: Cron = Cron("0 * * * *", automatic=False)): nonlocal calls calls += 1 raise ValueError("Task failed!") with patch.object( croniter, "get_next", return_value=datetime.now(timezone.utc) + timedelta(milliseconds=10), ): execution = await docket.add(flaky_cron_task)() await worker.run_at_most({execution.key: 3}) assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cron_tasks_can_cancel_themselves ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 78 async def test_cron_tasks_can_cancel_themselves(docket: Docket, worker: Worker): """A cron task can stop rescheduling by calling cron.cancel().""" calls = 0 async def limited_cron_task(cron: Cron = Cron("0 * * * *", automatic=False)): nonlocal calls calls += 1 if calls >= 3: cron.cancel() with patch.object( croniter, "get_next", return_value=datetime.now(timezone.utc) + timedelta(milliseconds=10), ): await docket.add(limited_cron_task)() await worker.run_until_finished() assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cron_supports_vixie_keywords ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 99 async def test_cron_supports_vixie_keywords(docket: Docket, worker: Worker): """Cron supports Vixie cron keywords like @daily, @weekly, @hourly.""" runs = 0 # @daily is equivalent to "0 0 * * *" (midnight every day) async def daily_task(cron: Cron = Cron("@daily", automatic=False)): nonlocal runs runs += 1 with patch.object( croniter, "get_next", return_value=datetime.now(timezone.utc) + timedelta(milliseconds=10), ): execution = await docket.add(daily_task)() await worker.run_at_most({execution.key: 1}) assert runs == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_automatic_cron_waits_for_scheduled_time ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 119 async def test_automatic_cron_waits_for_scheduled_time(docket: Docket, worker: Worker): """Automatic cron tasks wait for their next scheduled time instead of running immediately. Unlike Perpetual tasks which run immediately at worker startup, Cron tasks schedule themselves for the next matching cron time. This ensures a Monday 9 AM cron doesn't accidentally run on a Wednesday startup. """ calls: list[datetime] = [] async def scheduled_task(cron: Cron = Cron("0 9 * * 1")): # Mondays at 9 AM calls.append(datetime.now(timezone.utc)) docket.register(scheduled_task) # Schedule for 100ms in the future (simulating next Monday 9 AM) future_time = datetime.now(timezone.utc) + timedelta(milliseconds=100) with patch.object(croniter, "get_next", return_value=future_time): await worker.run_at_most({"scheduled_task": 1}) assert len(calls) == 1 # The task ran at or after the scheduled time, not immediately assert calls[0] >= future_time - timedelta(milliseconds=50) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_cron_with_timezone ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_cron.py, line 143 @pytest.mark.skipif( sys.platform == "win32", reason="Timing-sensitive: unreliable on Windows" ) async def test_cron_with_timezone(docket: Docket, worker: Worker): """Cron tasks can be scheduled in a specific timezone.""" runs = 0 pacific = ZoneInfo("America/Los_Angeles") async def pacific_task(cron: Cron = Cron("0 9 * * *", tz=pacific, automatic=False)): nonlocal runs runs += 1 with patch.object( croniter, "get_next", return_value=datetime.now(pacific) + timedelta(milliseconds=10), ): execution = await docket.add(pacific_task)() await worker.run_at_most({execution.key: 2}) assert runs == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_adding_task_by_name_when_not_registered ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_errors.py, line 10 async def test_adding_task_by_name_when_not_registered(docket: Docket): """docket should raise an error when attempting to add a task by name that isn't registered""" with pytest.raises(KeyError, match="unregistered_task"): await docket.add("unregistered_task")() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_adding_task_with_unbindable_arguments _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_errors.py, line 17 async def test_adding_task_with_unbindable_arguments( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, ): """Should not raise an error when a task is scheduled or executed with incorrect arguments.""" async def task_with_specific_args(a: str, b: int, c: bool = False) -> None: pass # pragma: no cover await docket.add(task_with_specific_args)("a", 2, d="unexpected") # type: ignore[arg-type] with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert "got an unexpected keyword argument 'd'" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_adding_is_idempotent __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_idempotency.py, line 11 async def test_adding_is_idempotent( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Adding a task with the same key twice should only run the first one.""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=10) await docket.add(the_task, soon, key=key)("a", "b", c="c") later = now() + timedelta(milliseconds=500) await docket.add(the_task, later, key=key)("b", "c", c="d") await testing.assert_task_scheduled(docket, the_task, key=key) await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") assert soon <= now() < later file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_task_keys_are_idempotent_in_the_future _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_idempotency.py, line 33 async def test_task_keys_are_idempotent_in_the_future( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """A future task blocks an immediate task with the same key.""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=10) await docket.add(the_task, when=soon, key=key)("a", "b", c="c") await docket.add(the_task, when=now(), key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") the_task.reset_mock() # It should be fine to run it afterward await docket.add(the_task, key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("d", "e", c="f") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_task_keys_are_idempotent_between_the_future_and_present _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_idempotency.py, line 57 async def test_task_keys_are_idempotent_between_the_future_and_present( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """An immediate task blocks a future task with the same key.""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=10) await docket.add(the_task, when=now(), key=key)("a", "b", c="c") await docket.add(the_task, when=soon, key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") the_task.reset_mock() # It should be fine to run it afterward await docket.add(the_task, key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("d", "e", c="f") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_task_keys_are_idempotent_in_the_present ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_idempotency.py, line 81 async def test_task_keys_are_idempotent_in_the_present( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Two immediate tasks with the same key only runs the first one.""" key = f"my-cool-task:{uuid4()}" await docket.add(the_task, when=now(), key=key)("a", "b", c="c") await docket.add(the_task, when=now(), key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") the_task.reset_mock() # It should be fine to run it afterward await docket.add(the_task, key=key)("d", "e", c="f") await worker.run_until_finished() the_task.assert_awaited_once_with("d", "e", c="f") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_tasks_can_opt_into_argument_logging __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_logging.py, line 12 async def test_tasks_can_opt_into_argument_logging( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """Tasks can opt into argument logging for specific arguments""" async def the_task( a: Annotated[str, Logged], b: str, c: Annotated[str, Logged()] = "c", d: Annotated[str, "nah chief"] = "d", docket: Docket = CurrentDocket(), ): pass await docket.add(the_task)("value-a", b="value-b", c="value-c", d="value-d") with caplog.at_level(logging.INFO): await worker.run_until_finished() # Filter to only docket logs (exclude fakeredis DEBUG logs which contain raw pickle data) docket_logs = "\n".join( r.message for r in caplog.records if r.name.startswith("docket") ) assert "the_task('value-a', b=..., c='value-c', d=...)" in docket_logs assert "value-b" not in docket_logs assert "value-d" not in docket_logs file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_tasks_can_opt_into_logging_collection_lengths _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_logging.py, line 40 async def test_tasks_can_opt_into_logging_collection_lengths( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """Tasks can opt into logging the length of collections""" async def the_task( a: Annotated[list[str], Logged(length_only=True)], b: Annotated[dict[str, str], Logged(length_only=True)], c: Annotated[tuple[str, ...], Logged(length_only=True)], d: Annotated[set[str], Logged(length_only=True)], e: Annotated[int, Logged(length_only=True)], docket: Docket = CurrentDocket(), ): pass await docket.add(the_task)( ["a", "b"], b={"d": "e", "f": "g"}, c=("h", "i"), d={"a", "b", "c"}, e=123 ) with caplog.at_level(logging.INFO): await worker.run_until_finished() assert ( "the_task([len 2], b={len 2}, c=(len 2), d={len 3}, e=123)" in caplog.text ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_logging_inside_of_task _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_logging.py, line 67 async def test_logging_inside_of_task( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, ): """docket should support providing a logger with task context""" called = False async def the_task( a: str, b: str, logger: "LoggerAdapter[logging.Logger]" = TaskLogger() ): assert a == "a" assert b == "c" logger.info("Task is running") nonlocal called called = True await docket.add(the_task, key="my-cool-task:123")("a", b="c") with caplog.at_level(logging.INFO): await worker.run_until_finished() assert called assert "Task is running" in caplog.text assert "docket.task.the_task" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_perpetual_tasks ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 8 async def test_perpetual_tasks(docket: Docket, worker: Worker): """Perpetual tasks should reschedule themselves forever""" calls = 0 async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): assert a == "a" assert b == 2 assert isinstance(perpetual, Perpetual) assert perpetual.every == timedelta(milliseconds=50) nonlocal calls calls += 1 execution = await docket.add(perpetual_task)(a="a", b=2) await worker.run_at_most({execution.key: 3}) assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_perpetual_tasks_can_cancel_themselves _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 35 async def test_perpetual_tasks_can_cancel_themselves(docket: Docket, worker: Worker): """A perpetual task can request its own cancellation""" calls = 0 async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): assert a == "a" assert b == 2 assert isinstance(perpetual, Perpetual) assert perpetual.every == timedelta(milliseconds=50) nonlocal calls calls += 1 if calls == 3: perpetual.cancel() await docket.add(perpetual_task)(a="a", b=2) await worker.run_until_finished() assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_perpetual_tasks_can_change_their_parameters ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 64 async def test_perpetual_tasks_can_change_their_parameters( docket: Docket, worker: Worker ): """Perpetual tasks may change their parameters each time""" arguments: list[tuple[str, int]] = [] async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): arguments.append((a, b)) perpetual.perpetuate(a + "a", b=b + 1) execution = await docket.add(perpetual_task)(a="a", b=1) await worker.run_at_most({execution.key: 3}) assert len(arguments) == 3 assert arguments == [("a", 1), ("aa", 2), ("aaa", 3)] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_perpetual_tasks_perpetuate_even_after_errors ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 86 async def test_perpetual_tasks_perpetuate_even_after_errors( docket: Docket, worker: Worker ): """Perpetual tasks keep rescheduling even when they raise exceptions.""" calls = 0 async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): nonlocal calls calls += 1 raise ValueError("woops!") execution = await docket.add(perpetual_task)(a="a", b=1) await worker.run_at_most({execution.key: 3}) assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_perpetual_tasks_can_be_automatically_scheduled _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 109 async def test_perpetual_tasks_can_be_automatically_scheduled( docket: Docket, worker: Worker ): """Perpetual tasks can be automatically scheduled""" calls = 0 async def my_automatic_task( perpetual: Perpetual = Perpetual( every=timedelta(milliseconds=50), automatic=True ), ): assert isinstance(perpetual, Perpetual) assert perpetual.every == timedelta(milliseconds=50) nonlocal calls calls += 1 # Note we never add this task to the docket, we just register it. docket.register(my_automatic_task) # The automatic key will be the task function's name await worker.run_at_most({"my_automatic_task": 3}) assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_perpetual_tasks_can_schedule_next_run_after_delay ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 137 async def test_perpetual_tasks_can_schedule_next_run_after_delay( docket: Docket, worker: Worker ): """Perpetual.after() lets tasks control when the next run happens.""" run_times: list[datetime] = [] async def perpetual_task( perpetual: Perpetual = Perpetual(), ): run_times.append(datetime.now(timezone.utc)) perpetual.after(timedelta(milliseconds=100)) execution = await docket.add(perpetual_task)() await worker.run_at_most({execution.key: 2}) assert len(run_times) == 2 delay = run_times[1] - run_times[0] assert delay >= timedelta(milliseconds=50) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_cancelled_automatic_perpetual_can_be_rescheduled ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 158 async def test_cancelled_automatic_perpetual_can_be_rescheduled( docket: Docket, worker: Worker ): """After cancelling a scheduled Perpetual task, add() can reschedule it.""" calls = 0 async def my_auto_task( perpetual: Perpetual = Perpetual( every=timedelta(milliseconds=50), automatic=True ), ): nonlocal calls calls += 1 # Schedule the task but don't run a worker yet — leave it sitting in the queue await docket.add(my_auto_task, key="my_auto_task")() # Cancel before any worker picks it up await docket.cancel("my_auto_task") # Re-add with the same key; this should succeed, not silently fail execution = await docket.add(my_auto_task, key="my_auto_task")() await execution.sync() assert execution.state in (ExecutionState.QUEUED, ExecutionState.SCHEDULED) # Verify the task actually runs await worker.run_at_most({"my_auto_task": 1}) assert calls == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_perpetual_tasks_can_schedule_next_run_at_specific_time _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_perpetual.py, line 188 async def test_perpetual_tasks_can_schedule_next_run_at_specific_time( docket: Docket, worker: Worker ): """Perpetual.at() lets tasks schedule the next run at an absolute time.""" run_times: list[datetime] = [] async def perpetual_task( perpetual: Perpetual = Perpetual(), ): run_times.append(datetime.now(timezone.utc)) perpetual.at(datetime.now(timezone.utc) + timedelta(milliseconds=100)) execution = await docket.add(perpetual_task)() await worker.run_at_most({execution.key: 2}) assert len(run_times) == 2 delay = run_times[1] - run_times[0] assert delay >= timedelta(milliseconds=50) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_tasks_can_report_progress _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_progress_state.py, line 18 async def test_tasks_can_report_progress(docket: Docket, worker: Worker): """docket should support tasks reporting their progress""" called = False async def the_task( a: str, b: str, progress: Progress = Progress(), ): assert a == "a" assert b == "c" # Set the total expected work await progress.set_total(100) # Increment progress await progress.increment(10) await progress.increment(20) # Set a status message await progress.set_message("Processing items...") # Read back current progress assert progress.current == 30 assert progress.total == 100 assert progress.message == "Processing items..." nonlocal called called = True await docket.add(the_task, key="progress-task:123")("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_tasks_can_access_execution_state ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_progress_state.py, line 56 async def test_tasks_can_access_execution_state(docket: Docket, worker: Worker): """docket should support providing execution state and metadata to a task""" called = False async def the_task( a: str, b: str, this_execution: Execution = CurrentExecution(), ): assert a == "a" assert b == "c" assert isinstance(this_execution, Execution) assert this_execution.key == "stateful-task:123" assert this_execution.state == ExecutionState.RUNNING assert this_execution.worker is not None assert this_execution.started_at is not None nonlocal called called = True await docket.add(the_task, key="stateful-task:123")("a", b="c") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_execution_state_lifecycle _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_progress_state.py, line 85 async def test_execution_state_lifecycle( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket executions transition through states: QUEUED → RUNNING → COMPLETED""" async def successful_task(): await asyncio.sleep(0.01) async def failing_task(): await asyncio.sleep(0.01) raise ValueError("Task failed") # Test successful execution lifecycle execution = await docket.add( successful_task, key="success:123", when=now() + timedelta(seconds=1) )() # Collect state events state_events: list[StateEvent] = [] async def collect_states() -> None: async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": state_events.append(event) if event["state"] == ExecutionState.COMPLETED: break subscriber_task = asyncio.create_task(collect_states()) await worker.run_until_finished() await asyncio.wait_for(subscriber_task, timeout=7.0) # Verify we saw the state transitions # Note: subscribe() emits the initial state first, then real-time updates states = [e["state"] for e in state_events] assert states == [ ExecutionState.SCHEDULED, ExecutionState.QUEUED, ExecutionState.RUNNING, ExecutionState.COMPLETED, ] # Verify final state has completion metadata final_state = state_events[-1] assert final_state["state"] == ExecutionState.COMPLETED assert final_state["completed_at"] is not None assert "error" not in final_state # No error for successful completion # Test failed execution lifecycle execution = await docket.add( failing_task, key="failure:456", when=now() + timedelta(seconds=1) )() failed_state_events: list[StateEvent] = [] async def collect_failed_states() -> None: async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": failed_state_events.append(event) if event["state"] == ExecutionState.FAILED: break subscriber_task = asyncio.create_task(collect_failed_states()) await worker.run_until_finished() await asyncio.wait_for(subscriber_task, timeout=7.0) # Verify we saw the state transitions # Note: subscribe() emits the initial state first, then real-time updates states = [e["state"] for e in failed_state_events] assert states == [ ExecutionState.SCHEDULED, ExecutionState.QUEUED, ExecutionState.RUNNING, ExecutionState.FAILED, ] # Verify final state has error information final_state = failed_state_events[-1] assert final_state["state"] == ExecutionState.FAILED assert final_state["completed_at"] is not None assert final_state["error"] is not None assert final_state["error"] == "ValueError: Task failed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_task_results_can_be_stored_and_retrieved ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_results.py, line 6 async def test_task_results_can_be_stored_and_retrieved(docket: Docket, worker: Worker): """Test that string results are stored and retrievable.""" result_value = "hello world" async def returns_str() -> str: return result_value docket.register(returns_str) execution = await docket.add(returns_str)() await worker.run_until_finished() # Retrieve result result = await execution.get_result() assert result == result_value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_errors_are_logged ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 12 async def test_errors_are_logged( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime], caplog: pytest.LogCaptureFixture, ): """docket should log errors when a task fails""" the_task.side_effect = Exception("Faily McFailerson") await docket.add(the_task, now())("a", "b", c="c") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") assert "Faily McFailerson" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_supports_simple_linear_retries _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 31 async def test_supports_simple_linear_retries( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support simple linear retries""" calls = 0 async def the_task( a: str, b: str = "b", retry: Retry = Retry(attempts=3), ) -> None: assert a == "a" assert b == "c" assert retry is not None nonlocal calls calls += 1 assert retry.attempts == 3 assert retry.attempt == calls raise Exception("Failed") await docket.add(the_task)("a", b="c") await worker.run_until_finished() assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_supports_simple_linear_retries_with_delay _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 63 async def test_supports_simple_linear_retries_with_delay( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support simple linear retries with a delay""" calls = 0 async def the_task( a: str, b: str = "b", retry: Retry = Retry(attempts=3, delay=timedelta(milliseconds=100)), ) -> None: assert a == "a" assert b == "c" assert retry is not None nonlocal calls calls += 1 assert retry.attempts == 3 assert retry.attempt == calls raise Exception("Failed") await docket.add(the_task)("a", b="c") start = now() await worker.run_until_finished() total_delay = now() - start assert total_delay >= timedelta(milliseconds=200) assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_supports_infinite_retries _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 100 async def test_supports_infinite_retries( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support infinite retries (None for attempts)""" calls = 0 async def the_task( a: str, b: str = "b", retry: Retry = Retry(attempts=None), ) -> None: assert a == "a" assert b == "c" assert retry is not None assert retry.attempts is None nonlocal calls calls += 1 assert retry.attempt == calls if calls < 3: raise Exception("Failed") await docket.add(the_task)("a", b="c") await worker.run_until_finished() assert calls == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_supports_exponential_backoff_retries __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 133 async def test_supports_exponential_backoff_retries( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support exponential backoff retries""" calls = 0 async def the_task( a: str, b: str = "b", retry: Retry = ExponentialRetry( attempts=5, minimum_delay=timedelta(milliseconds=25), maximum_delay=timedelta(milliseconds=1000), ), ) -> None: assert a == "a" assert b == "c" assert isinstance(retry, ExponentialRetry) nonlocal calls calls += 1 assert retry.attempts == 5 assert retry.attempt == calls raise Exception("Failed") await docket.add(the_task)("a", b="c") start = now() await worker.run_until_finished() total_delay = now() - start assert total_delay >= timedelta(milliseconds=25 + 50 + 100 + 200) assert calls == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_supports_exponential_backoff_retries_under_maximum_delay _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_retries.py, line 174 async def test_supports_exponential_backoff_retries_under_maximum_delay( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """Exponential backoff should cap delays at the configured maximum.""" calls = 0 async def the_task( a: str, b: str = "b", retry: Retry = ExponentialRetry( attempts=5, minimum_delay=timedelta(milliseconds=25), maximum_delay=timedelta(milliseconds=100), ), ) -> None: assert a == "a" assert b == "c" assert isinstance(retry, ExponentialRetry) nonlocal calls calls += 1 assert retry.attempts == 5 assert retry.attempt == calls raise Exception("Failed") await docket.add(the_task)("a", b="c") start = now() await worker.run_until_finished() total_delay = now() - start assert total_delay >= timedelta(milliseconds=25 + 50 + 100 + 100) assert calls == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_immediate_task_execution ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 11 async def test_immediate_task_execution( docket: Docket, worker: Worker, the_task: AsyncMock ): """docket should execute a task immediately.""" await docket.add(the_task)("a", "b", c="c") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_immediate_task_execution_by_name ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 23 async def test_immediate_task_execution_by_name( docket: Docket, worker: Worker, the_task: AsyncMock ): """docket should execute a task immediately by name.""" docket.register(the_task) await docket.add("the_task")("a", "b", c="c") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_scheduled_execution __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 37 async def test_scheduled_execution( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket should execute a task at a specific time.""" when = now() + timedelta(milliseconds=100) await docket.add(the_task, when)("a", "b", c="c") await worker.run_until_finished() the_task.assert_awaited_once_with("a", "b", c="c") assert when <= now() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_rescheduling_later ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 52 async def test_rescheduling_later( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket should allow for rescheduling a task for later""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=10) await docket.add(the_task, soon, key=key)("a", "b", c="c") later = now() + timedelta(milliseconds=100) await docket.replace(the_task, later, key=key)("b", "c", c="d") await testing.assert_task_scheduled(docket, the_task, key=key) await worker.run_until_finished() the_task.assert_awaited_once_with("b", "c", c="d") assert later <= now() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_rescheduling_earlier __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 74 async def test_rescheduling_earlier( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket should allow for rescheduling a task for earlier""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=100) await docket.add(the_task, soon, key)("a", "b", c="c") earlier = now() + timedelta(milliseconds=10) await docket.replace(the_task, earlier, key)("b", "c", c="d") await testing.assert_task_scheduled(docket, the_task, key=key) await worker.run_until_finished() the_task.assert_awaited_once_with("b", "c", c="d") assert earlier <= now() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_rescheduling_by_name __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 96 async def test_rescheduling_by_name( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket should allow for rescheduling a task for later""" key = f"my-cool-task:{uuid4()}" soon = now() + timedelta(milliseconds=100) await docket.add(the_task, soon, key=key)("a", "b", c="c") later = now() + timedelta(milliseconds=200) await docket.replace("the_task", later, key=key)("b", "c", c="d") await worker.run_until_finished() the_task.assert_awaited_once_with("b", "c", c="d") assert later <= now() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_replace_without_existing_task_acts_like_add ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_scheduling.py, line 116 async def test_replace_without_existing_task_acts_like_add( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """docket.replace() on a non-existent key should schedule the task like add()""" key = f"my-cool-task:{uuid4()}" # Replace without prior add - should just schedule the task later = now() + timedelta(milliseconds=100) await docket.replace(the_task, later, key=key)("b", "c", c="d") await worker.run_until_finished() the_task.assert_awaited_once_with("b", "c", c="d") assert later <= now() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_self_perpetuating_immediate_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_self_perpetuation.py, line 9 async def test_self_perpetuating_immediate_tasks( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support self-perpetuating tasks""" calls: dict[str, list[int]] = { "first": [], "second": [], } async def the_task(start: int, iteration: int, key: str = TaskKey()): calls[key].append(start + iteration) if iteration < 3: # Use replace() for self-perpetuating to allow rescheduling while running await docket.replace(the_task, now(), key=key)(start, iteration + 1) await docket.add(the_task, key="first")(10, 1) await docket.add(the_task, key="second")(20, 1) await worker.run_until_finished() assert calls["first"] == [11, 12, 13] assert calls["second"] == [21, 22, 23] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_self_perpetuating_scheduled_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_self_perpetuation.py, line 34 async def test_self_perpetuating_scheduled_tasks( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support self-perpetuating tasks""" calls: dict[str, list[int]] = { "first": [], "second": [], } async def the_task(start: int, iteration: int, key: str = TaskKey()): calls[key].append(start + iteration) if iteration < 3: soon = now() + timedelta(milliseconds=100) # Use replace() for self-perpetuating to allow rescheduling while running await docket.replace(the_task, key=key, when=soon)(start, iteration + 1) await docket.add(the_task, key="first")(10, 1) await docket.add(the_task, key="second")(20, 1) await worker.run_until_finished() assert calls["first"] == [11, 12, 13] assert calls["second"] == [21, 22, 23] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_infinitely_self_perpetuating_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_self_perpetuation.py, line 60 async def test_infinitely_self_perpetuating_tasks( docket: Docket, worker: Worker, now: Callable[[], datetime] ): """docket should support testing use cases for infinitely self-perpetuating tasks""" calls: dict[str, list[int]] = { "first": [], "second": [], "unaffected": [], } async def the_task(start: int, iteration: int, key: str = TaskKey()): calls[key].append(start + iteration) soon = now() + timedelta(milliseconds=100) # Use replace() for self-perpetuating to allow rescheduling while running await docket.replace(the_task, key=key, when=soon)(start, iteration + 1) async def unaffected_task(start: int, iteration: int, key: str = TaskKey()): calls[key].append(start + iteration) if iteration < 3: # Use replace() for self-perpetuating to allow rescheduling while running await docket.replace(unaffected_task, now(), key=key)(start, iteration + 1) await docket.add(the_task, key="first")(10, 1) await docket.add(the_task, key="second")(20, 1) await docket.add(unaffected_task, key="unaffected")(30, 1) # Using worker.run_until_finished() would hang here because the task is always # queueing up a future run of itself. With worker.run_at_most(), # we can specify tasks keys that will only be allowed to run a limited number of # times, thus allowing the worker to exist cleanly. await worker.run_at_most({"first": 4, "second": 2}) assert calls["first"] == [11, 12, 13, 14] assert calls["second"] == [21, 22] assert calls["unaffected"] == [31, 32, 33] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_shared_dependency_is_initialized_once _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 15 async def test_shared_dependency_is_initialized_once(docket: Docket, worker: Worker): """A Shared dependency initializes once at worker startup, not per-task.""" init_count = 0 @asynccontextmanager async def create_resource() -> AsyncGenerator[str, None]: nonlocal init_count init_count += 1 yield f"resource-{init_count}" results: list[str] = [] async def task_using_shared(r: str = Shared(create_resource)): results.append(r) docket.register(task_using_shared) await docket.add(task_using_shared)() await docket.add(task_using_shared)() await worker.run_until_finished() assert init_count == 1 assert results == ["resource-1", "resource-1"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_shared_dependencies_are_same_instance _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 40 async def test_shared_dependencies_are_same_instance(docket: Docket, worker: Worker): """Multiple tasks receive the exact same object instance.""" @asynccontextmanager async def create_resource() -> AsyncGenerator[object, None]: yield object() instances: list[object] = [] async def capture_instance(r: object = Shared(create_resource)): instances.append(r) docket.register(capture_instance) await docket.add(capture_instance)() await docket.add(capture_instance)() await worker.run_until_finished() assert len(instances) == 2 assert instances[0] is instances[1] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_shared_identity_is_factory_function __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 62 async def test_shared_identity_is_factory_function(docket: Docket, worker: Worker): """Multiple Shared() calls with the same factory resolve to the same value.""" init_count = 0 @asynccontextmanager async def create_resource() -> AsyncGenerator[str, None]: nonlocal init_count init_count += 1 yield f"resource-{init_count}" results: list[tuple[str, str]] = [] async def task_a(r: str = Shared(create_resource)): results.append(("a", r)) async def task_b(r: str = Shared(create_resource)): results.append(("b", r)) docket.register(task_a) docket.register(task_b) await docket.add(task_a)() await docket.add(task_b)() await worker.run_until_finished() assert init_count == 1 assert set(results) == {("a", "resource-1"), ("b", "resource-1")} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_shared_cleanup_on_worker_exit _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 91 async def test_shared_cleanup_on_worker_exit(docket: Docket): """Shared resources are cleaned up when the worker exits.""" stages: list[str] = [] @asynccontextmanager async def create_resource() -> AsyncGenerator[str, None]: stages.append("startup") yield "resource" stages.append("shutdown") async def task_using_shared(r: str = Shared(create_resource)): stages.append("task-ran") async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5) ) as worker: docket.register(task_using_shared) await docket.add(task_using_shared)() await worker.run_until_finished() assert stages == ["startup", "task-ran"] assert stages == ["startup", "task-ran", "shutdown"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_shared_depending_on_shared _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 115 async def test_shared_depending_on_shared(docket: Docket, worker: Worker): """A Shared dependency can depend on another Shared dependency.""" @asynccontextmanager async def create_config() -> AsyncGenerator[dict[str, str], None]: yield {"db_url": "postgres://localhost/test"} @asynccontextmanager async def create_pool( cfg: dict[str, str] = Shared(create_config), ) -> AsyncGenerator[str, None]: yield f"pool({cfg['db_url']})" results: list[str] = [] async def task_using_pool(p: str = Shared(create_pool)): results.append(p) docket.register(task_using_pool) await docket.add(task_using_pool)() await worker.run_until_finished() assert results == ["pool(postgres://localhost/test)"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_shared_depending_on_depends ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 141 async def test_shared_depending_on_depends(docket: Docket, worker: Worker): """A Shared can use Depends(), resolved once at worker scope.""" call_count = 0 def get_connection_string() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_shared_can_access_current_docket_and_worker ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 174 async def test_shared_can_access_current_docket_and_worker(docket: Docket): """Shared dependencies can use CurrentDocket and CurrentWorker.""" captured: dict[str, str] = {} @asynccontextmanager async def create_resource( d: Docket = CurrentDocket(), w: Worker = CurrentWorker(), ) -> AsyncGenerator[str, None]: captured["docket_name"] = d.name captured["worker_name"] = w.name yield "ready" async def task_using_shared(r: str = Shared(create_resource)): pass async with Worker( docket, name="test-worker", minimum_check_interval=timedelta(milliseconds=5) ) as worker: docket.register(task_using_shared) await docket.add(task_using_shared)() await worker.run_until_finished() assert captured["docket_name"] == docket.name assert captured["worker_name"] == "test-worker" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_late_registered_task_with_new_shared __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 201 async def test_late_registered_task_with_new_shared(docket: Docket): """A task registered after worker starts can introduce new Shared dependencies.""" init_order: list[str] = [] @asynccontextmanager async def create_early_resource() -> AsyncGenerator[str, None]: init_order.append("early") yield "early-resource" @asynccontextmanager async def create_late_resource() -> AsyncGenerator[str, None]: init_order.append("late") yield "late-resource" results: list[str] = [] async def early_task(r: str = Shared(create_early_resource)): results.append(r) async def late_task(r: str = Shared(create_late_resource)): results.append(r) async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5) ) as worker: docket.register(early_task) await docket.add(early_task)() await worker.run_until_finished() docket.register(late_task) await docket.add(late_task)() await worker.run_until_finished() assert "early" in init_order assert "late" in init_order assert results == ["early-resource", "late-resource"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_multiple_shared_cleanup_order _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 239 async def test_multiple_shared_cleanup_order(docket: Docket): """Multiple Shared dependencies clean up in reverse initialization order.""" order: list[str] = [] @asynccontextmanager async def create_first() -> AsyncGenerator[str, None]: order.append("first:start") yield "first" order.append("first:stop") @asynccontextmanager async def create_second( f: str = Shared(create_first), ) -> AsyncGenerator[str, None]: order.append("second:start") yield f"second(depends on {f})" order.append("second:stop") async def task_using_both( f: str = Shared(create_first), s: str = Shared(create_second), ): order.append("task-ran") async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5) ) as worker: docket.register(task_using_both) await docket.add(task_using_both)() await worker.run_until_finished() assert order == [ "first:start", "second:start", "task-ran", "second:stop", "first:stop", ] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_shared_cleanup_on_init_failure _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 279 async def test_shared_cleanup_on_init_failure( docket: Docket, caplog: pytest.LogCaptureFixture ): """If a Shared fails to initialize, earlier ones still clean up on worker exit. Since Shared dependencies are resolved lazily during task execution, init failures are handled as task failures (the task is marked failed but the worker continues). The key guarantee is that any Shared that DID initialize gets properly cleaned up when the worker exits. The error also appears in logs. """ cleanup_called = False @asynccontextmanager async def create_good() -> AsyncGenerator[str, None]: try: yield "good" finally: nonlocal cleanup_called cleanup_called = True @asynccontextmanager async def create_bad(g: str = Shared(create_good)) -> AsyncGenerator[str, None]: raise ValueError("🦆 QUACK! The rubber duck factory exploded! 🦆") yield # pragma: no cover async def task_using_bad(b: str = Shared(create_bad)): ... with caplog.at_level(logging.ERROR): async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5) ) as worker: docket.register(task_using_bad) await docket.add(task_using_bad)() await worker.run_until_finished() # create_good was initialized before create_bad failed, and it should be # properly cleaned up when the worker exits assert cleanup_called # The error should appear in logs so operators can diagnose the issue assert "rubber duck factory exploded" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_shared_async_function_factory _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 322 async def test_shared_async_function_factory(docket: Docket, worker: Worker): """Shared can use an async function that returns a value (not a context manager).""" init_count = 0 async def load_config() -> dict[str, str]: nonlocal init_count init_count += 1 return {"api_url": "https://api.example.com", "version": f"v{init_count}"} results: list[dict[str, str]] = [] async def task_using_config(config: dict[str, str] = Shared(load_config)): results.append(config) docket.register(task_using_config) await docket.add(task_using_config)() await docket.add(task_using_config)() await worker.run_until_finished() assert init_count == 1 assert len(results) == 2 assert results[0] is results[1] assert results[0]["version"] == "v1" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_shared_sync_function_factory ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 348 async def test_shared_sync_function_factory(docket: Docket, worker: Worker): """Shared can use a sync function that returns a value (not a context manager).""" init_count = 0 def create_config() -> dict[str, str]: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_shared_sync_context_manager_factory __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_shared_dependencies.py, line 374 async def test_shared_sync_context_manager_factory(docket: Docket): """Shared can use a sync context manager with cleanup.""" stages: list[str] = [] @contextmanager def create_resource() -> Generator[str, None, None]: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_striking_entire_tasks _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_striking.py, line 9 async def test_striking_entire_tasks( docket: Docket, worker: Worker, the_task: AsyncMock, another_task: AsyncMock, key_leak_checker: KeyCountChecker, ): """docket should support striking and restoring entire tasks""" execution1 = await docket.add(the_task)("a", b="c") await docket.add(another_task)("d", e="f") # Struck tasks leave runs hash behind (intentional - task might be restored) key_leak_checker.add_exemption(docket.runs_key(execution1.key)) await docket.strike(the_task) await worker.run_until_finished() the_task.assert_not_called() the_task.reset_mock() another_task.assert_awaited_once_with("d", e="f") another_task.reset_mock() await docket.restore(the_task) await docket.add(the_task)("g", h="i") await docket.add(another_task)("j", k="l") await worker.run_until_finished() the_task.assert_awaited_once_with("g", h="i") another_task.assert_awaited_once_with("j", k="l") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_striking_entire_parameters _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_striking.py, line 45 async def test_striking_entire_parameters( docket: Docket, worker: Worker, the_task: AsyncMock, another_task: AsyncMock, key_leak_checker: KeyCountChecker, ): """docket should support striking and restoring entire parameters""" # Struck tasks remain without TTL so they can be restored key_leak_checker.add_pattern_exemption(f"{docket.prefix}:runs:*") await docket.add(the_task)(customer_id="123", order_id="456") await docket.add(the_task)(customer_id="456", order_id="789") await docket.add(the_task)(customer_id="789", order_id="012") await docket.add(another_task)(customer_id="456", order_id="012") await docket.add(another_task)(customer_id="789", order_id="456") await docket.strike(None, "customer_id", "==", "789") await worker.run_until_finished() assert the_task.call_count == 2 the_task.assert_has_awaits( [ call(customer_id="123", order_id="456"), call(customer_id="456", order_id="789"), # customer_id == 789 is stricken ], any_order=True, ) the_task.reset_mock() assert another_task.call_count == 1 another_task.assert_has_awaits( [ call(customer_id="456", order_id="012"), # customer_id == 789 is stricken ], any_order=True, ) another_task.reset_mock() await docket.add(the_task)(customer_id="123", order_id="456") await docket.add(the_task)(customer_id="456", order_id="789") await docket.add(the_task)(customer_id="789", order_id="012") await docket.add(another_task)(customer_id="456", order_id="012") await docket.add(another_task)(customer_id="789", order_id="456") await docket.strike(None, "customer_id", "==", "123") await worker.run_until_finished() assert the_task.call_count == 1 the_task.assert_has_awaits( [ # customer_id == 123 is stricken call(customer_id="456", order_id="789"), # customer_id == 789 is stricken ], any_order=True, ) the_task.reset_mock() assert another_task.call_count == 1 another_task.assert_has_awaits( [ call(customer_id="456", order_id="012"), # customer_id == 789 is stricken ], any_order=True, ) another_task.reset_mock() await docket.restore(None, "customer_id", "==", "123") await docket.add(the_task)(customer_id="123", order_id="456") await docket.add(the_task)(customer_id="456", order_id="789") await docket.add(the_task)(customer_id="789", order_id="012") await docket.add(another_task)(customer_id="456", order_id="012") await docket.add(another_task)(customer_id="789", order_id="456") await worker.run_until_finished() assert the_task.call_count == 2 the_task.assert_has_awaits( [ call(customer_id="123", order_id="456"), call(customer_id="456", order_id="789"), # customer_id == 789 is still stricken ], any_order=True, ) assert another_task.call_count == 1 another_task.assert_has_awaits( [ call(customer_id="456", order_id="012"), # customer_id == 789 is still stricken ], any_order=True, ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_striking_tasks_for_specific_parameters _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_striking.py, line 149 async def test_striking_tasks_for_specific_parameters( docket: Docket, worker: Worker, the_task: AsyncMock, another_task: AsyncMock, key_leak_checker: KeyCountChecker, ): """docket should support striking and restoring tasks for specific parameters""" # Struck tasks remain without TTL so they can be restored key_leak_checker.add_pattern_exemption(f"{docket.prefix}:runs:*") await docket.add(the_task)("a", b=1) await docket.add(the_task)("a", b=2) await docket.add(the_task)("a", b=3) await docket.add(another_task)("d", b=1) await docket.add(another_task)("d", b=2) await docket.add(another_task)("d", b=3) await docket.strike(the_task, "b", "<=", 2) await worker.run_until_finished() assert the_task.call_count == 1 the_task.assert_has_awaits( [ # b <= 2 is stricken, so b=1 is out # b <= 2 is stricken, so b=2 is out call("a", b=3), ], any_order=True, ) the_task.reset_mock() assert another_task.call_count == 3 another_task.assert_has_awaits( [ call("d", b=1), call("d", b=2), call("d", b=3), ], any_order=True, ) another_task.reset_mock() await docket.restore(the_task, "b", "<=", 2) await docket.add(the_task)("a", b=1) await docket.add(the_task)("a", b=2) await docket.add(the_task)("a", b=3) await docket.add(another_task)("d", b=1) await docket.add(another_task)("d", b=2) await docket.add(another_task)("d", b=3) await worker.run_until_finished() assert the_task.call_count == 3 the_task.assert_has_awaits( [ call("a", b=1), call("a", b=2), call("a", b=3), ], any_order=True, ) assert another_task.call_count == 3 another_task.assert_has_awaits( [ call("d", b=1), call("d", b=2), call("d", b=3), ], any_order=True, ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_sync_function_dependencies _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 10 async def test_sync_function_dependencies(docket: Docket, worker: Worker): """A task can depend on the return value of sync functions""" def dependency_one() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_sync_contextual_dependencies ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 41 async def test_sync_contextual_dependencies(docket: Docket, worker: Worker): """A task can depend on the return value of sync context managers""" stages: list[str] = [] @contextmanager def dependency_one() -> Generator[str, None, None]: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_mixed_sync_and_async_dependencies ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 78 async def test_mixed_sync_and_async_dependencies(docket: Docket, worker: Worker): """A task can depend on both sync and async dependencies""" def sync_dependency() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_sync_dependencies_of_dependencies ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 106 async def test_sync_dependencies_of_dependencies(docket: Docket, worker: Worker): """A sync task dependency can depend on other sync dependencies""" counter = 0 def dependency_one() -> list[str]: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_sync_dependencies_can_ask_for_docket_dependencies ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 145 async def test_sync_dependencies_can_ask_for_docket_dependencies( docket: Docket, worker: Worker ): """A sync task dependency can ask for a docket dependency""" called = 0 def dependency_one(this_docket: Docket = CurrentDocket()) -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_mixed_sync_async_nested_dependencies __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_sync_dependencies.py, line 195 async def test_mixed_sync_async_nested_dependencies(docket: Docket, worker: Worker): """Dependencies can mix sync and async at different nesting levels""" counter = 0 def sync_base() -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_simple_timeout _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_timeouts.py, line 9 async def test_simple_timeout(docket: Docket, worker: Worker): """A task with a timeout completes normally when it finishes before the limit.""" remaining_at_end: timedelta | None = None async def task_with_timeout( timeout: Timeout = Timeout(timedelta(milliseconds=500)), ): await asyncio.sleep(0.01) nonlocal remaining_at_end remaining_at_end = timeout.remaining() await docket.add(task_with_timeout)() await worker.run_until_finished() # Task completed with time to spare assert remaining_at_end is not None assert remaining_at_end > timedelta(0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_simple_timeout_cancels_tasks ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_timeouts.py, line 31 async def test_simple_timeout_cancels_tasks(docket: Docket, worker: Worker): """A task can be scheduled with a timeout and are cancelled""" called = False async def task_with_timeout( timeout: Timeout = Timeout(timedelta(milliseconds=100)), ): try: await asyncio.sleep(5) except asyncio.CancelledError: nonlocal called called = True await docket.add(task_with_timeout)() start = datetime.now(timezone.utc) await worker.run_until_finished() elapsed = datetime.now(timezone.utc) - start assert called # Task should complete well before the 5s sleep - timeout cancelled it assert elapsed < timedelta(seconds=1) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_timeout_can_be_extended ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_timeouts.py, line 58 async def test_timeout_can_be_extended(docket: Docket, worker: Worker): """A task can be scheduled with a timeout and extend themselves""" called = False async def task_with_timeout( timeout: Timeout = Timeout(timedelta(milliseconds=100)), ): await asyncio.sleep(0.05) timeout.extend(timedelta(milliseconds=200)) try: await asyncio.sleep(5) except asyncio.CancelledError: nonlocal called called = True await docket.add(task_with_timeout)() start = datetime.now(timezone.utc) await worker.run_until_finished() elapsed = datetime.now(timezone.utc) - start assert called # Task should complete well before the 5s sleep - timeout cancelled it assert elapsed < timedelta(seconds=1) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_timeout_extends_by_base_by_default ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_timeouts.py, line 89 async def test_timeout_extends_by_base_by_default(docket: Docket, worker: Worker): """A task can be scheduled with a timeout and extend itself by the base timeout""" called = False async def task_with_timeout( timeout: Timeout = Timeout(timedelta(milliseconds=100)), ): await asyncio.sleep(0.05) timeout.extend() # defaults to the base timeout try: await asyncio.sleep(5) except asyncio.CancelledError: nonlocal called called = True await docket.add(task_with_timeout)() start = datetime.now(timezone.utc) await worker.run_until_finished() elapsed = datetime.now(timezone.utc) - start assert called # Task should complete well before the 5s sleep - timeout cancelled it assert elapsed < timedelta(seconds=1) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_timeout_is_compatible_with_retry ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/fundamentals/test_timeouts.py, line 120 async def test_timeout_is_compatible_with_retry(docket: Docket, worker: Worker): """A task that times out can be retried""" successes: list[int] = [] async def task_with_timeout( retry: Retry = Retry(attempts=3), _timeout: Timeout = Timeout(timedelta(milliseconds=100)), ): if retry.attempt == 1: await asyncio.sleep(1) successes.append(retry.attempt) await docket.add(task_with_timeout)() await worker.run_until_finished() assert successes == [2] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_adding_a_task_increments_counter ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 48 async def test_adding_a_task_increments_counter( docket: Docket, the_task: AsyncMock, task_labels: dict[str, str], TASKS_ADDED: Mock, TASKS_REPLACED: Mock, TASKS_SCHEDULED: Mock, ): """Should increment the appropriate counters when adding a task.""" await docket.add(the_task)() TASKS_ADDED.assert_called_once_with(1, task_labels) TASKS_REPLACED.assert_not_called() TASKS_SCHEDULED.assert_called_once_with(1, task_labels) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_replacing_a_task_increments_counter __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 64 async def test_replacing_a_task_increments_counter( docket: Docket, the_task: AsyncMock, task_labels: dict[str, str], TASKS_ADDED: Mock, TASKS_REPLACED: Mock, TASKS_SCHEDULED: Mock, ): """Should increment the appropriate counters when replacing a task.""" from datetime import datetime, timezone when = datetime.now(timezone.utc) + timedelta(minutes=5) key = "test-replace-key" await docket.replace(the_task, when, key)() TASKS_ADDED.assert_not_called() TASKS_REPLACED.assert_called_once_with(1, task_labels) TASKS_SCHEDULED.assert_called_once_with(1, task_labels) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_cancelling_a_task_increments_counter __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 93 async def test_cancelling_a_task_increments_counter( docket: Docket, the_task: AsyncMock, TASKS_CANCELLED: Mock, ): """Should increment the TASKS_CANCELLED counter when cancelling a task.""" from datetime import datetime, timezone when = datetime.now(timezone.utc) + timedelta(minutes=5) key = "test-cancel-key" await docket.add(the_task, when=when, key=key)() await docket.cancel(key) TASKS_CANCELLED.assert_called_once_with(1, {"docket.name": docket.name}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_execution_increments_task_counters _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 178 async def test_worker_execution_increments_task_counters( docket: Docket, worker: Worker, the_task: AsyncMock, worker_labels: dict[str, str], TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_SUCCEEDED: Mock, TASKS_FAILED: Mock, TASKS_RETRIED: Mock, TASKS_REDELIVERED: Mock, ): """Should increment the appropriate task counters when a worker executes a task.""" await docket.add(the_task)() await worker.run_until_finished() TASKS_STARTED.assert_called_once_with(1, worker_labels) TASKS_COMPLETED.assert_called_once_with(1, worker_labels) TASKS_SUCCEEDED.assert_called_once_with(1, worker_labels) TASKS_FAILED.assert_not_called() TASKS_RETRIED.assert_not_called() TASKS_REDELIVERED.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_failed_task_increments_failure_counter _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 203 async def test_failed_task_increments_failure_counter( docket: Docket, worker: Worker, the_task: AsyncMock, worker_labels: dict[str, str], TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_SUCCEEDED: Mock, TASKS_FAILED: Mock, TASKS_RETRIED: Mock, TASKS_REDELIVERED: Mock, ): """Should increment the TASKS_FAILED counter when a task fails.""" the_task.side_effect = ValueError("Womp") await docket.add(the_task)() await worker.run_until_finished() TASKS_STARTED.assert_called_once_with(1, worker_labels) TASKS_COMPLETED.assert_called_once_with(1, worker_labels) TASKS_FAILED.assert_called_once_with(1, worker_labels) TASKS_SUCCEEDED.assert_not_called() TASKS_RETRIED.assert_not_called() TASKS_REDELIVERED.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_retried_task_increments_retry_counter _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 230 async def test_retried_task_increments_retry_counter( docket: Docket, worker: Worker, TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_SUCCEEDED: Mock, TASKS_FAILED: Mock, TASKS_RETRIED: Mock, TASKS_REDELIVERED: Mock, ): """Should increment the TASKS_RETRIED counter when a task is retried.""" async def the_task(retry: Retry = Retry(attempts=2)): # noqa: ARG001 raise ValueError("First attempt fails") await docket.add(the_task)() await worker.run_until_finished() assert TASKS_STARTED.call_count == 2 assert TASKS_COMPLETED.call_count == 2 assert TASKS_FAILED.call_count == 2 assert TASKS_RETRIED.call_count == 1 TASKS_SUCCEEDED.assert_not_called() TASKS_REDELIVERED.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_exhausted_retried_task_increments_retry_counter ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 257 async def test_exhausted_retried_task_increments_retry_counter( docket: Docket, worker: Worker, worker_labels: dict[str, str], TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_SUCCEEDED: Mock, TASKS_FAILED: Mock, TASKS_RETRIED: Mock, TASKS_REDELIVERED: Mock, ): """Should increment the appropriate counters when retries are exhausted.""" async def the_task(retry: Retry = Retry(attempts=1)): # noqa: ARG001 raise ValueError("First attempt fails") await docket.add(the_task)() await worker.run_until_finished() TASKS_STARTED.assert_called_once_with(1, worker_labels) TASKS_COMPLETED.assert_called_once_with(1, worker_labels) TASKS_FAILED.assert_called_once_with(1, worker_labels) TASKS_RETRIED.assert_not_called() TASKS_SUCCEEDED.assert_not_called() TASKS_REDELIVERED.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_retried_task_metric_uses_bounded_labels ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 285 async def test_retried_task_metric_uses_bounded_labels( docket: Docket, worker: Worker, TASKS_RETRIED: Mock, ): """TASKS_RETRIED should only use bounded-cardinality labels (not task keys).""" async def the_task(retry: Retry = Retry(attempts=2)): # noqa: ARG001 raise ValueError("Always fails") await docket.add(the_task)() await worker.run_until_finished() assert TASKS_RETRIED.call_count == 1 call_labels = TASKS_RETRIED.call_args.args[1] assert "docket.name" in call_labels assert "docket.worker" in call_labels assert "docket.task" in call_labels assert "docket.key" not in call_labels assert "docket.when" not in call_labels assert "docket.attempt" not in call_labels file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_perpetuated_task_metric_uses_bounded_labels ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 309 async def test_perpetuated_task_metric_uses_bounded_labels( docket: Docket, worker: Worker, TASKS_PERPETUATED: Mock, ): """TASKS_PERPETUATED should only use bounded-cardinality labels (not task keys).""" async def the_task( perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), # noqa: ARG001 ): pass execution = await docket.add(the_task)() await worker.run_at_most({execution.key: 2}) assert TASKS_PERPETUATED.call_count >= 1 call_labels = TASKS_PERPETUATED.call_args.args[1] assert "docket.name" in call_labels assert "docket.worker" in call_labels assert "docket.task" in call_labels assert "docket.key" not in call_labels assert "docket.when" not in call_labels assert "docket.attempt" not in call_labels file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_redelivered_tasks_increment_redelivered_counter ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 335 async def test_redelivered_tasks_increment_redelivered_counter( docket: Docket, TASKS_REDELIVERED: Mock, ): """Should increment the TASKS_REDELIVERED counter for redelivered tasks.""" async def test_task(): await asyncio.sleep(0.01) await docket.add(test_task)() worker = Worker(docket, redelivery_timeout=timedelta(milliseconds=200)) async with worker: worker._execute = AsyncMock(side_effect=Exception("Simulated worker failure")) # type: ignore[assignment] with pytest.raises(ExceptionGroup) as exc_info: await worker.run_until_finished() assert any( "Simulated worker failure" in str(e) for e in exc_info.value.exceptions ) await asyncio.sleep(0.25) worker2 = Worker(docket, redelivery_timeout=timedelta(milliseconds=200)) async with worker2: await worker2.run_until_finished() assert TASKS_REDELIVERED.call_count >= 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_superseded_task_increments_superseded_counter _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 382 async def test_superseded_task_increments_superseded_counter( docket: Docket, worker: Worker, TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_RUNNING: Mock, TASKS_SUPERSEDED: Mock, ): """Superseded tasks increment TASKS_SUPERSEDED but not lifecycle metrics. When claim() detects that a task has been superseded by a newer generation, the worker records TASKS_SUPERSEDED with docket.where=worker, but doesn't touch TASKS_STARTED, TASKS_RUNNING, or TASKS_COMPLETED. """ async def superseded_task(): pass # pragma: no cover await docket.add(superseded_task, key="metrics-superseded")() # Bump the generation so the worker sees the message as superseded async with docket.redis() as redis: await redis.hincrby( # type: ignore[misc] docket.key("runs:metrics-superseded"), "generation", 1 ) await worker.run_until_finished() TASKS_SUPERSEDED.assert_called_once_with( 1, { "docket.name": docket.name, "docket.worker": worker.name, "docket.task": "superseded_task", "docket.where": "worker", }, ) TASKS_STARTED.assert_not_called() TASKS_COMPLETED.assert_not_called() TASKS_RUNNING.assert_not_called() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_replaced_task_only_counts_replacement _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_counters.py, line 424 async def test_replaced_task_only_counts_replacement( docket: Docket, worker: Worker, TASKS_STARTED: Mock, TASKS_COMPLETED: Mock, TASKS_RUNNING: Mock, TASKS_SUCCEEDED: Mock, TASKS_SUPERSEDED: Mock, ): """When a task is replaced before execution, only the replacement runs. In the normal case, replace() successfully deletes the old stream message via XDEL, so the worker only sees the replacement. No supersession occurs because the stale message is already gone. """ async def replaceable_task(): pass await docket.add(replaceable_task, key="metrics-replace")() await docket.replace( replaceable_task, datetime.now(timezone.utc), "metrics-replace" )() await worker.run_until_finished() TASKS_SUPERSEDED.assert_not_called() TASKS_STARTED.assert_called_once() TASKS_COMPLETED.assert_called_once() TASKS_SUCCEEDED.assert_called_once() # TASKS_RUNNING: +1 then -1 assert TASKS_RUNNING.call_count == 2 increments = [c.args[0] for c in TASKS_RUNNING.call_args_list] assert sum(increments) == 0, "running gauge should be balanced" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: TASKS_ADDED, TASKS_CANCELLED, TASKS_COMPLETED, TASKS_FAILED, TASKS_PERPETUATED, TASKS_REDELIVERED, TASKS_REPLACED, TASKS_RETRIED, TASKS_RUNNING, TASKS_SCHEDULED, TASKS_STARTED, TASKS_SUCCEEDED, TASKS_SUPERSEDED, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, task_labels, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_task_duration_is_measured _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 40 async def test_task_duration_is_measured( docket: Docket, worker: Worker, worker_labels: dict[str, str], TASK_DURATION: Mock ): """Should record the duration of task execution in the TASK_DURATION histogram.""" inner_elapsed = 0.0 async def the_task(): nonlocal inner_elapsed start = time.time() await asyncio.sleep(0.1) inner_elapsed = time.time() - start await docket.add(the_task)() await worker.run_until_finished() TASK_DURATION.assert_called_once_with(mock.ANY, worker_labels) duration: float = TASK_DURATION.call_args.args[0] assert isinstance(duration, float) assert inner_elapsed <= duration <= inner_elapsed * 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_task_punctuality_is_measured ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 69 @pytest.mark.skipif( sys.platform == "win32", reason="Timing-sensitive: unreliable on Windows" ) async def test_task_punctuality_is_measured( docket: Docket, worker: Worker, the_task: AsyncMock, worker_labels: dict[str, str], TASK_PUNCTUALITY: Mock, ): """Should record TASK_PUNCTUALITY values for scheduled tasks.""" when = datetime.now(timezone.utc) + timedelta(seconds=0.1) await docket.add(the_task, when=when)() await asyncio.sleep(0.4) await worker.run_until_finished() # We can't check the exact value since it depends on actual timing TASK_PUNCTUALITY.assert_called_once_with(mock.ANY, worker_labels) punctuality: float = TASK_PUNCTUALITY.call_args.args[0] assert isinstance(punctuality, float) assert 0.3 <= punctuality <= 0.5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_task_running_gauge_is_incremented ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 100 async def test_task_running_gauge_is_incremented( docket: Docket, worker: Worker, worker_labels: dict[str, str], TASKS_RUNNING: Mock ): """Should increment and decrement the TASKS_RUNNING gauge appropriately.""" inside_task = False async def the_task(): nonlocal inside_task inside_task = True TASKS_RUNNING.assert_called_once_with(1, worker_labels) await docket.add(the_task)() await worker.run_until_finished() assert inside_task is True TASKS_RUNNING.assert_has_calls( [ mock.call(1, worker_labels), mock.call(-1, worker_labels), ] ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_exports_metrics_as_prometheus_metrics _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 133 async def test_exports_metrics_as_prometheus_metrics( docket: Docket, worker: Worker, the_task: AsyncMock, metrics_port: int, ): """Should export metrics as Prometheus metrics, translating dots in labels to underscores for Prometheus.""" with metrics_server(port=metrics_port): await docket.add(the_task)() await worker.run_until_finished() await asyncio.sleep(0.1) def read_metrics(port: int) -> tuple[http.client.HTTPResponse, str]: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_worker_publishes_depth_gauges _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 197 async def test_worker_publishes_depth_gauges( docket: Docket, docket_labels: dict[str, str], the_task: AsyncMock, QUEUE_DEPTH: Mock, SCHEDULE_DEPTH: Mock, ): """Should publish depth gauges for due and scheduled tasks.""" await docket.add(the_task)() await docket.add(the_task)() future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future)() await docket.add(the_task, when=future)() await docket.add(the_task, when=future)() docket.heartbeat_interval = timedelta(seconds=0.1) async with Worker(docket): await asyncio.sleep(0.2) # enough for a heartbeat to be published QUEUE_DEPTH.assert_called_with(2, docket_labels) SCHEDULE_DEPTH.assert_called_with(3, docket_labels) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_healthcheck_server_returns_ok _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 228 def test_healthcheck_server_returns_ok(healthcheck_port: int): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_metrics_server_raises_import_error_without_sdk _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/instrumentation/test_export.py, line 240 def test_metrics_server_raises_import_error_without_sdk( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: QUEUE_DEPTH, SCHEDULE_DEPTH, TASKS_RUNNING, TASK_DURATION, TASK_PUNCTUALITY, _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, docket_labels, doctest_namespace, event_loop_policy, healthcheck_port, key_leak_checker, log_level, make_docket_name, metrics_port, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, worker_labels, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_agenda_creation ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 17 async def test_agenda_creation(agenda: Agenda): """Agenda should be created empty.""" assert len(agenda) == 0 assert list(agenda) == [] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_agenda_add_single_task _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 23 async def test_agenda_add_single_task(agenda: Agenda, the_task: AsyncMock): """Should add a single task to the agenda.""" agenda.add(the_task)("arg1", kwarg1="value1") assert len(agenda) == 1 tasks = list(agenda) assert tasks[0][0] == the_task assert tasks[0][1] == ("arg1",) assert tasks[0][2] == {"kwarg1": "value1"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_agenda_add_multiple_tasks _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 34 async def test_agenda_add_multiple_tasks( agenda: Agenda, the_task: AsyncMock, another_task: AsyncMock ): """Should add multiple tasks to the agenda.""" agenda.add(the_task)("arg1") agenda.add(another_task)("arg2", key="value") agenda.add(the_task)("arg3") assert len(agenda) == 3 tasks = list(agenda) assert tasks[0][0] == the_task assert tasks[1][0] == another_task assert tasks[2][0] == the_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_agenda_scatter_basic __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 49 async def test_agenda_scatter_basic( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should scatter tasks evenly over the specified timeframe.""" docket.register(the_task) # Add 3 tasks to scatter over 60 seconds agenda.add(the_task)("task1") agenda.add(the_task)("task2") agenda.add(the_task)("task3") start_time = datetime.now(timezone.utc) executions = await agenda.scatter(docket, over=timedelta(seconds=60)) assert len(executions) == 3 # Tasks should be scheduled at 0, 30, and 60 seconds expected_times = [ start_time, start_time + timedelta(seconds=30), start_time + timedelta(seconds=60), ] for execution, expected_time in zip(executions, expected_times): # Allow 1 second tolerance for test execution time assert abs((execution.when - expected_time).total_seconds()) < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_agenda_scatter_with_start_time _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 77 async def test_agenda_scatter_with_start_time( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should scatter tasks starting from a future time.""" docket.register(the_task) agenda.add(the_task)("task1") agenda.add(the_task)("task2") start_time = datetime.now(timezone.utc) + timedelta(minutes=10) executions = await agenda.scatter( docket, start=start_time, over=timedelta(minutes=20) ) assert len(executions) == 2 # Tasks should be scheduled at start and start+20min assert abs((executions[0].when - start_time).total_seconds()) < 1 assert ( abs((executions[1].when - (start_time + timedelta(minutes=20))).total_seconds()) < 1 ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_agenda_scatter_with_jitter _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 101 async def test_agenda_scatter_with_jitter( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should add random jitter to scheduled times.""" docket.register(the_task) # Add many tasks to verify jitter is applied for i in range(5): agenda.add(the_task)(f"task{i}") start_time = datetime.now(timezone.utc) executions = await agenda.scatter( docket, over=timedelta(minutes=10), jitter=timedelta(seconds=30) ) assert len(executions) == 5 # Calculate expected base times (without jitter) base_times = [start_time + timedelta(minutes=i * 2.5) for i in range(5)] # Each task should be within ±30 seconds of its base time for execution, base_time in zip(executions, base_times): diff = abs((execution.when - base_time).total_seconds()) assert diff <= 30 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_agenda_scatter_with_large_jitter ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 127 async def test_agenda_scatter_with_large_jitter( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should ensure jittered times never go before start even with large jitter.""" docket.register(the_task) # Add tasks that will be scheduled close to start for i in range(3): agenda.add(the_task)(f"task{i}") start_time = datetime.now(timezone.utc) # Use a very large jitter (5 minutes) on a short window (1 minute) # This could potentially push times before start without our safety check executions = await agenda.scatter( docket, start=start_time, over=timedelta(minutes=1), jitter=timedelta(minutes=5) ) assert len(executions) == 3 # All scheduled times should be at or after start_time for execution in executions: assert execution.when >= start_time, ( f"Task scheduled at {execution.when} is before start {start_time}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_agenda_scatter_single_task _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 154 async def test_agenda_scatter_single_task( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should handle scattering a single task.""" docket.register(the_task) agenda.add(the_task)("single") start_time = datetime.now(timezone.utc) executions = await agenda.scatter(docket, over=timedelta(minutes=10)) assert len(executions) == 1 # Single task should be scheduled in the middle of the window expected_time = start_time + timedelta(minutes=5) assert abs((executions[0].when - expected_time).total_seconds()) < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_agenda_scatter_empty __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 171 async def test_agenda_scatter_empty(docket: Docket, agenda: Agenda): """Should handle scattering an empty agenda.""" executions = await agenda.scatter(docket, over=timedelta(minutes=10)) assert executions == [] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_agenda_scatter_heterogeneous_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 177 async def test_agenda_scatter_heterogeneous_tasks( docket: Docket, agenda: Agenda, the_task: AsyncMock, another_task: AsyncMock ): """Should scatter different types of tasks.""" docket.register(the_task) docket.register(another_task) agenda.add(the_task)("task1", key="value1") agenda.add(another_task)(42, flag=True) agenda.add(the_task)("task2") agenda.add(another_task)(99) executions = await agenda.scatter(docket, over=timedelta(seconds=90)) assert len(executions) == 4 # Verify task types are preserved assert executions[0].function == the_task assert executions[1].function == another_task assert executions[2].function == the_task assert executions[3].function == another_task # Verify arguments are preserved assert executions[0].args == ("task1",) assert executions[0].kwargs == {"key": "value1"} assert executions[1].args == (42,) assert executions[1].kwargs == {"flag": True} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_agenda_scatter_preserves_order _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 206 async def test_agenda_scatter_preserves_order( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should preserve task order when scattering.""" docket.register(the_task) for i in range(10): agenda.add(the_task)(f"task{i}") executions = await agenda.scatter(docket, over=timedelta(minutes=10)) assert len(executions) == 10 # Tasks should be scheduled in the same order they were added for i, execution in enumerate(executions): assert execution.args == (f"task{i}",) # And times should be monotonically increasing for i in range(1, len(executions)): assert executions[i].when >= executions[i - 1].when file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_agenda_reusability ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 228 async def test_agenda_reusability(docket: Docket, agenda: Agenda, the_task: AsyncMock): """Agenda should be reusable for multiple scatter operations.""" docket.register(the_task) agenda.add(the_task)("task1") agenda.add(the_task)("task2") # First scatter executions1 = await agenda.scatter(docket, over=timedelta(seconds=60)) assert len(executions1) == 2 # Second scatter with different timing start_time = datetime.now(timezone.utc) + timedelta(hours=1) executions2 = await agenda.scatter( docket, start=start_time, over=timedelta(minutes=30) ) assert len(executions2) == 2 # Executions should be different instances with different times assert executions1[0].when != executions2[0].when assert executions1[1].when != executions2[1].when file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_agenda_scatter_requires_over_parameter _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 251 async def test_agenda_scatter_requires_over_parameter( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should raise error if 'over' parameter is not provided.""" docket.register(the_task) agenda.add(the_task)("task1") agenda.add(the_task)("task2") with pytest.raises( TypeError, match="missing 1 required positional argument: 'over'" ): await agenda.scatter(docket) # type: ignore[call-arg] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_agenda_scatter_with_task_by_name ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 266 async def test_agenda_scatter_with_task_by_name( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should support adding tasks by name.""" docket.register(the_task) # Add task by its registered name agenda.add("the_task")("arg1", key="value") executions = await agenda.scatter(docket, over=timedelta(seconds=60)) assert len(executions) == 1 assert executions[0].function == the_task assert executions[0].args == ("arg1",) assert executions[0].kwargs == {"key": "value"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_agenda_scatter_with_non_positive_over_parameter ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 283 async def test_agenda_scatter_with_non_positive_over_parameter( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should raise ValueError if 'over' parameter is not positive.""" docket.register(the_task) agenda.add(the_task)("task1") agenda.add(the_task)("task2") # Test with zero duration with pytest.raises( ValueError, match="'over' parameter must be a positive duration" ): await agenda.scatter(docket, over=timedelta(seconds=0)) # Test with negative duration with pytest.raises( ValueError, match="'over' parameter must be a positive duration" ): await agenda.scatter(docket, over=timedelta(seconds=-60)) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_agenda_scatter_partial_scheduling_behavior _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 305 async def test_agenda_scatter_partial_scheduling_behavior( docket: Docket, agenda: Agenda, the_task: AsyncMock, another_task: AsyncMock ): """Documents the partial scheduling behavior when failures occur.""" docket.register(the_task) # Don't register another_task initially # Test validation failure - unregistered task fails fast before any scheduling agenda.add(the_task)("task1") agenda.add(the_task)("task2") agenda.add("unregistered_task")("will_fail") # This will fail validation agenda.add(the_task)("task3") # The scatter should fail during validation before scheduling anything with pytest.raises(KeyError, match="Task 'unregistered_task' is not registered"): await agenda.scatter(docket, over=timedelta(seconds=60)) # Verify no tasks were scheduled (failed during validation) snapshot = await docket.snapshot() assert len(snapshot.future) == 0 # Test successful case with all registered tasks agenda2 = Agenda() docket.register(another_task) agenda2.add(the_task)("task1") agenda2.add(the_task)("task2") agenda2.add(another_task)("task3") agenda2.add(the_task)("task4") # All tasks should be scheduled successfully executions = await agenda2.scatter(docket, over=timedelta(seconds=60)) assert len(executions) == 4 # Verify all tasks are in the docket snapshot = await docket.snapshot() assert len(snapshot.future) == 4 # Clear for next test await docket.clear() # Test partial failure during scheduling - earlier tasks remain scheduled agenda3 = Agenda() agenda3.add(the_task)("task1") agenda3.add(the_task)("task2") agenda3.add(the_task)("task3") call_count = 0 original_add = docket.add def failing_add(*args: Any, **kwargs: Any) -> Any: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_agenda_scatter_auto_registers_unregistered_functions __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 372 async def test_agenda_scatter_auto_registers_unregistered_functions( docket: Docket, agenda: Agenda, the_task: AsyncMock ): """Should automatically register task functions that aren't already registered.""" # the_task is NOT registered yet assert the_task not in docket.tasks.values() agenda.add(the_task)("task1") agenda.add(the_task)("task2") # scatter should auto-register the task executions = await agenda.scatter(docket, over=timedelta(seconds=30)) assert len(executions) == 2 # Now the task should be registered assert the_task in docket.tasks.values() # Verify tasks were scheduled snapshot = await docket.snapshot() assert len(snapshot.future) == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________________ ERROR at setup of test_agenda_clear ______________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_agenda.py, line 394 async def test_agenda_clear(agenda: Agenda, the_task: AsyncMock): """Should support clearing all tasks from agenda.""" agenda.add(the_task)("task1") agenda.add(the_task)("task2") assert len(agenda) == 2 agenda.clear() assert len(agenda) == 0 assert list(agenda) == [] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, agenda, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_cancel_running_task __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 14 async def test_cancel_running_task(docket: Docket, worker: Worker): """A running task can be cancelled via docket.cancel().""" started = asyncio.Event() cancelled = asyncio.Event() async def slow_task(): started.set() try: await asyncio.sleep(60) except asyncio.CancelledError: cancelled.set() raise docket.register(slow_task) execution = await docket.add(slow_task)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(cancelled.wait(), timeout=5.0) await asyncio.wait_for(worker_task, timeout=5.0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_cancel_running_task_state _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 44 async def test_cancel_running_task_state(docket: Docket, worker: Worker): """A cancelled running task transitions to CANCELLED state.""" started = asyncio.Event() async def slow_task(): started.set() await asyncio.sleep(60) docket.register(slow_task) execution = await docket.add(slow_task)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.CANCELLED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cancel_running_task_with_cleanup ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 70 async def test_cancel_running_task_with_cleanup(docket: Docket, worker: Worker): """A task can catch CancelledError to perform cleanup.""" started = asyncio.Event() cleanup_done = asyncio.Event() async def task_with_cleanup(): started.set() try: await asyncio.sleep(60) except asyncio.CancelledError: cleanup_done.set() raise docket.register(task_with_cleanup) execution = await docket.add(task_with_cleanup)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(cleanup_done.wait(), timeout=5.0) await asyncio.wait_for(worker_task, timeout=5.0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_cancel_task_that_ignores_cancellation _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 100 async def test_cancel_task_that_ignores_cancellation(docket: Docket, worker: Worker): """A task that catches and swallows CancelledError continues to completion.""" started = asyncio.Event() cancellation_caught = asyncio.Event() completed = asyncio.Event() async def stubborn_task(): started.set() try: await asyncio.sleep(60) except asyncio.CancelledError: cancellation_caught.set() completed.set() docket.register(stubborn_task) execution = await docket.add(stubborn_task)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(cancellation_caught.wait(), timeout=5.0) await asyncio.wait_for(completed.wait(), timeout=5.0) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.COMPLETED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cancel_already_completed_is_noop ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 135 async def test_cancel_already_completed_is_noop(docket: Docket, worker: Worker): """Cancelling a task that has already completed is a no-op.""" async def quick_task(): pass docket.register(quick_task) execution = await docket.add(quick_task)() await worker.run_until_finished() await docket.cancel(execution.key) await execution.sync() assert execution.state == ExecutionState.COMPLETED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cancel_publishes_state_event ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 152 async def test_cancel_publishes_state_event(docket: Docket, worker: Worker): """Cancelling a running task publishes a CANCELLED state event.""" started = asyncio.Event() state_events: list[StateEvent | ProgressEvent] = [] async def slow_task(): started.set() await asyncio.sleep(60) docket.register(slow_task) execution = await docket.add(slow_task)() async def collect_state_events(): async for event in execution.subscribe(): # pragma: no branch state_events.append(event) if ( event.get("type") == "state" and event.get("state") == ExecutionState.CANCELLED ): break collector_task = asyncio.create_task(collect_state_events()) async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(collector_task, timeout=5.0) await asyncio.wait_for(worker_task, timeout=5.0) cancelled_events = [ e for e in state_events if e.get("type") == "state" and e.get("state") == ExecutionState.CANCELLED ] assert len(cancelled_events) == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_cancel_only_affects_running_worker ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 207 async def test_cancel_only_affects_running_worker( docket: Docket, worker: Worker, second_worker: Worker ): """A cancellation signal only affects the worker running the task.""" started_on_worker = asyncio.Event() async def slow_task(): started_on_worker.set() await asyncio.sleep(60) docket.register(slow_task) execution = await docket.add(slow_task)() async def run_first_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_first_worker()) await asyncio.wait_for(started_on_worker.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.CANCELLED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_cancel_running_task_with_zero_execution_ttl ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 235 async def test_cancel_running_task_with_zero_execution_ttl(zero_ttl_docket: Docket): """Cancellation with execution_ttl=0 deletes the execution record immediately.""" started = asyncio.Event() cancelled = asyncio.Event() async def slow_task(): started.set() try: await asyncio.sleep(60) except asyncio.CancelledError: cancelled.set() raise zero_ttl_docket.register(slow_task) execution = await zero_ttl_docket.add(slow_task)() async with Worker( zero_ttl_docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await zero_ttl_docket.cancel(execution.key) await asyncio.wait_for(cancelled.wait(), timeout=5.0) await asyncio.wait_for(worker_task, timeout=5.0) # With execution_ttl=0, execution data is deleted after terminal state # Verify the task was cancelled and execution record was cleaned up assert cancelled.is_set() async with zero_ttl_docket.redis() as redis: exists = await redis.exists(f"{zero_ttl_docket.name}:runs:{execution.key}") assert not exists, "execution record should be deleted with execution_ttl=0" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_cancelled_task_with_retry_does_not_retry ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 278 async def test_cancelled_task_with_retry_does_not_retry(docket: Docket, worker: Worker): """A cancelled task should NOT retry, even if it has a Retry dependency.""" from docket.dependencies import Retry started = asyncio.Event() execution_count = 0 async def retryable_task(retry: Retry = Retry(attempts=3)): nonlocal execution_count execution_count += 1 started.set() await asyncio.sleep(60) docket.register(retryable_task) execution = await docket.add(retryable_task)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.CANCELLED assert execution_count == 1, "cancelled task should not retry" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_cancelled_perpetual_task_does_not_perpetuate ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 310 async def test_cancelled_perpetual_task_does_not_perpetuate( docket: Docket, worker: Worker ): """A cancelled Perpetual task should NOT reschedule itself.""" from docket.dependencies import Perpetual started = asyncio.Event() execution_count = 0 async def perpetual_task(perpetual: Perpetual = Perpetual()): nonlocal execution_count execution_count += 1 started.set() await asyncio.sleep(60) docket.register(perpetual_task) execution = await docket.add(perpetual_task)() async def run_worker(): await worker.run_until_finished() worker_task = asyncio.create_task(run_worker()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.CANCELLED assert execution_count == 1, "cancelled perpetual task should not reschedule" # Verify nothing was rescheduled in the queue async with docket.redis() as redis: queue_count = await redis.zcard(docket.queue_key) stream_len = await redis.xlen(docket.stream_key) assert queue_count == 0, "no tasks should be scheduled" assert stream_len == 0, "no tasks should be in the stream" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cancel_running_task_with_timeout ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 351 async def test_cancel_running_task_with_timeout(docket: Docket, worker: Worker): """A running task with Timeout can be cancelled via docket.cancel(). Regression test for bug where _run_function_with_timeout converted ALL CancelledError to TimeoutError, breaking external cancellation. """ from docket.dependencies import Timeout started = asyncio.Event() async def slow_task_with_timeout(timeout: Timeout = Timeout(timedelta(seconds=60))): started.set() await asyncio.sleep(60) docket.register(slow_task_with_timeout) execution = await docket.add(slow_task_with_timeout)() worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) await execution.sync() assert execution.state == ExecutionState.CANCELLED # NOT FAILED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_get_result_raises_execution_cancelled_for_cancelled_task _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_cancellation.py, line 378 async def test_get_result_raises_execution_cancelled_for_cancelled_task( docket: Docket, worker: Worker ): """get_result() should raise ExecutionCancelled for cancelled tasks.""" started = asyncio.Event() async def cancellable_task(): started.set() await asyncio.sleep(60) docket.register(cancellable_task) execution = await docket.add(cancellable_task)() worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(started.wait(), timeout=5.0) await docket.cancel(execution.key) await asyncio.wait_for(worker_task, timeout=5.0) with pytest.raises(ExecutionCancelled): await execution.get_result() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, second_worker, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_sync_function_dependency ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 15 async def test_sync_function_dependency(docket: Docket, worker: Worker): """A task can depend on a synchronous function""" called = False def sync_dependency() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_sync_context_manager_dependency ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 33 async def test_sync_context_manager_dependency(docket: Docket, worker: Worker): """A task can depend on a synchronous context manager""" called = False stages: list[str] = [] @contextmanager def sync_cm_dependency(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_mixed_sync_and_async_dependencies ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 57 async def test_mixed_sync_and_async_dependencies(docket: Docket, worker: Worker): """A task can depend on both sync and async dependencies""" called = False def sync_dependency() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_nested_sync_dependencies ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 88 async def test_nested_sync_dependencies(docket: Docket, worker: Worker): """A sync dependency can depend on another sync dependency""" called = False def base_dependency() -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_sync_dependency_with_docket_context __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 109 async def test_sync_dependency_with_docket_context(docket: Docket, worker: Worker): """A sync dependency can access docket context""" called = False def sync_dep_with_context(d: Docket = CurrentDocket()) -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_sync_context_manager_cleanup_on_exception _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 128 async def test_sync_context_manager_cleanup_on_exception( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A sync context manager's cleanup runs even when the task fails""" stages: list[str] = [] @contextmanager def sync_cm_with_cleanup(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_sync_dependency_caching ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 155 async def test_sync_dependency_caching(docket: Docket, worker: Worker): """Sync dependencies are cached and only called once per task""" call_count = 0 def counted_dependency() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_mixed_nested_dependencies _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 178 async def test_mixed_nested_dependencies(docket: Docket, worker: Worker): """Complex nesting with mixed sync and async dependencies""" called = False def sync_base() -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_contextvar_isolation_between_tasks ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 203 async def test_contextvar_isolation_between_tasks(docket: Docket, worker: Worker): """Contextvars should be isolated between sequential task executions""" executions_seen: list[tuple[str, Execution]] = [] async def first_task(a: str): # Capture the execution context during first task execution = Dependency.execution.get() executions_seen.append(("first", execution)) assert a == "first" async def second_task(b: str): # Capture the execution context during second task execution = Dependency.execution.get() executions_seen.append(("second", execution)) assert b == "second" await docket.add(first_task)(a="first") await docket.add(second_task)(b="second") await worker.run_until_finished() # Verify we captured both executions assert len(executions_seen) == 2 # Find first and second executions (order may vary) executions_by_name = {name: exec for name, exec in executions_seen} assert set(executions_by_name.keys()) == {"first", "second"} # Verify the executions are different and have correct kwargs first_execution = executions_by_name["first"] second_execution = executions_by_name["second"] assert first_execution is not second_execution assert first_execution.kwargs["a"] == "first" assert second_execution.kwargs["b"] == "second" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_contextvar_cleanup_after_task _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 238 async def test_contextvar_cleanup_after_task(docket: Docket, worker: Worker): """Task-scoped contextvars are reset after task execution completes. Worker-scoped contextvars (Dependency.docket, Dependency.worker) remain set for the entire worker lifetime to support Shared dependencies. """ captured_stack = None captured_cache = None async def capture_task(): nonlocal captured_stack, captured_cache # Capture references during task execution captured_stack = _Depends.stack.get() captured_cache = _Depends.cache.get() await docket.add(capture_task)() await worker.run_until_finished() # Task-scoped contextvars should be reset after the task completes with pytest.raises(LookupError): _Depends.stack.get() with pytest.raises(LookupError): _Depends.cache.get() with pytest.raises(LookupError): Dependency.execution.get() # Worker-scoped contextvars (docket, worker) remain set for the worker's # lifetime to support Shared dependency initialization assert Dependency.docket.get() is docket assert Dependency.worker.get() is worker file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_dependency_cache_isolated_between_tasks ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 272 async def test_dependency_cache_isolated_between_tasks(docket: Docket, worker: Worker): """Dependency cache should be fresh for each task, not reused""" call_counts = {"task1": 0, "task2": 0} def dependency_for_task1() -> str: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_async_exit_stack_cleanup ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 302 async def test_async_exit_stack_cleanup(docket: Docket, worker: Worker): """AsyncExitStack should be properly cleaned up after task execution""" cleanup_called: list[str] = [] @asynccontextmanager async def tracked_resource(): try: yield "resource" finally: cleanup_called.append("cleaned") async def task_with_context(res: str = Depends(tracked_resource)): assert res == "resource" assert len(cleanup_called) == 0 # Not cleaned up yet await docket.add(task_with_context)() await worker.run_until_finished() # After task completes, cleanup should have been called assert cleanup_called == ["cleaned"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_contextvar_reset_on_reentrant_call ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 324 async def test_contextvar_reset_on_reentrant_call(docket: Docket, worker: Worker): """Contextvars should be properly reset on reentrant calls to resolved_dependencies""" # Create two mock executions async def task1(): ... async def task2(): ... execution1 = Execution( docket=docket, function=task1, args=(), kwargs={}, key="task1-key", when=datetime.now(timezone.utc), attempt=1, ) execution2 = Execution( docket=docket, function=task2, args=(), kwargs={}, key="task2-key", when=datetime.now(timezone.utc), attempt=1, ) # Capture contextvars from first call captured_exec1 = None captured_stack1 = None async with resolved_dependencies(worker, execution1): captured_exec1 = Dependency.execution.get() captured_stack1 = _Depends.stack.get() assert captured_exec1 is execution1 # After exiting, contextvars should be reset (raise LookupError) with pytest.raises(LookupError): Dependency.execution.get() # Now make a second call - should not see values from first call async with resolved_dependencies(worker, execution2): captured_exec2 = Dependency.execution.get() captured_stack2 = _Depends.stack.get() assert captured_exec2 is execution2 assert captured_exec2 is not captured_exec1 # Stacks should be different objects assert captured_stack2 is not captured_stack1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_contextvar_not_leaked_to_caller ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_advanced.py, line 375 async def test_contextvar_not_leaked_to_caller(docket: Docket): """Verify contextvars don't leak outside resolved_dependencies context""" # Before calling resolved_dependencies, contextvars should not be set with pytest.raises(LookupError): Dependency.execution.get() async def dummy_task(): ... execution = Execution( docket=docket, function=dummy_task, args=(), kwargs={}, key="test-key", when=datetime.now(timezone.utc), attempt=1, ) async with Docket("test-contextvar-leak", url="memory://leak-test") as test_docket: async with Worker(test_docket) as test_worker: # Use resolved_dependencies async with resolved_dependencies(test_worker, execution): # Inside context, we should be able to get values assert Dependency.execution.get() is execution # After exiting context, contextvars should be cleaned up with pytest.raises(LookupError): Dependency.execution.get() with pytest.raises(LookupError): _Depends.stack.get() with pytest.raises(LookupError): # pragma: no branch _Depends.cache.get() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_dependencies_may_be_duplicated _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 17 async def test_dependencies_may_be_duplicated(docket: Docket, worker: Worker): called = False async def the_task( a: str, b: str, docketA: Docket = CurrentDocket(), docketB: Docket = CurrentDocket(), workerA: Worker = CurrentWorker(), workerB: Worker = CurrentWorker(), ): assert a == "a" assert b == "b" assert docketA is docket assert docketB is docket assert workerA is worker assert workerB is worker nonlocal called called = True await docket.add(the_task)("a", "b") await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_users_can_provide_dependencies_directly ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 45 async def test_users_can_provide_dependencies_directly(docket: Docket, worker: Worker): called = False async def the_task( a: str, b: str, retry: Retry = Retry(attempts=3), ): assert a == "a" assert b == "b" assert retry.attempts == 42 nonlocal called called = True await docket.add(the_task)("a", "b", retry=Retry(attempts=42)) await worker.run_until_finished() assert called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_user_provide_retries_are_used _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 67 async def test_user_provide_retries_are_used(docket: Docket, worker: Worker): calls = 0 async def the_task( a: str, b: str, retry: Retry = Retry(attempts=42), ): assert a == "a" assert b == "b" assert retry.attempts == 2 nonlocal calls calls += 1 raise Exception("womp womp") await docket.add(the_task)("a", "b", retry=Retry(attempts=2)) await worker.run_until_finished() assert calls == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_user_can_request_a_retry_after_a_delay[Retry] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 91 @pytest.mark.parametrize("retry_cls", [Retry, ExponentialRetry]) async def test_user_can_request_a_retry_after_a_delay( retry_cls: Retry, docket: Docket, worker: Worker ): calls = 0 first_call_time = None second_call_time = None async def the_task( a: str, b: str, retry: Retry = retry_cls(attempts=2), # type: ignore[reportCallIssue] ): assert a == "a" assert b == "b" nonlocal calls calls += 1 nonlocal first_call_time if not first_call_time: first_call_time = datetime.now(timezone.utc) retry.after(timedelta(seconds=0.5)) else: nonlocal second_call_time second_call_time = datetime.now(timezone.utc) await docket.add(the_task)("a", "b") await worker.run_until_finished() assert calls == 2 assert isinstance(first_call_time, datetime) assert isinstance(second_call_time, datetime) delay = second_call_time - first_call_time assert delay.total_seconds() > 0 < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_user_can_request_a_retry_after_a_delay[ExponentialRetry] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 91 @pytest.mark.parametrize("retry_cls", [Retry, ExponentialRetry]) async def test_user_can_request_a_retry_after_a_delay( retry_cls: Retry, docket: Docket, worker: Worker ): calls = 0 first_call_time = None second_call_time = None async def the_task( a: str, b: str, retry: Retry = retry_cls(attempts=2), # type: ignore[reportCallIssue] ): assert a == "a" assert b == "b" nonlocal calls calls += 1 nonlocal first_call_time if not first_call_time: first_call_time = datetime.now(timezone.utc) retry.after(timedelta(seconds=0.5)) else: nonlocal second_call_time second_call_time = datetime.now(timezone.utc) await docket.add(the_task)("a", "b") await worker.run_until_finished() assert calls == 2 assert isinstance(first_call_time, datetime) assert isinstance(second_call_time, datetime) delay = second_call_time - first_call_time assert delay.total_seconds() > 0 < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_retry_in_is_backwards_compatible_alias_for_after ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 131 async def test_retry_in_is_backwards_compatible_alias_for_after( docket: Docket, worker: Worker ): """retry.in_() still works as an alias for retry.after()""" calls = 0 async def the_task(retry: Retry = Retry(attempts=2)): nonlocal calls calls += 1 if calls == 1: retry.in_(timedelta(seconds=0.1)) await docket.add(the_task)() await worker.run_until_finished() assert calls == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time[Retry] ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 149 @pytest.mark.parametrize("retry_cls", [Retry, ExponentialRetry]) async def test_user_can_request_a_retry_at_a_specific_time( retry_cls: Retry, docket: Docket, worker: Worker ): calls = 0 first_call_time = None second_call_time = None async def the_task( a: str, b: str, retry: Retry = retry_cls(attempts=2), # type: ignore[reportCallIssue] ): assert a == "a" assert b == "b" nonlocal calls calls += 1 nonlocal first_call_time if not first_call_time: when = datetime.now(timezone.utc) + timedelta(seconds=0.5) first_call_time = datetime.now(timezone.utc) retry.at(when) else: nonlocal second_call_time second_call_time = datetime.now(timezone.utc) await docket.add(the_task)("a", "b") await worker.run_until_finished() assert calls == 2 assert isinstance(first_call_time, datetime) assert isinstance(second_call_time, datetime) delay = second_call_time - first_call_time assert delay.total_seconds() > 0 < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time[ExponentialRetry] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 149 @pytest.mark.parametrize("retry_cls", [Retry, ExponentialRetry]) async def test_user_can_request_a_retry_at_a_specific_time( retry_cls: Retry, docket: Docket, worker: Worker ): calls = 0 first_call_time = None second_call_time = None async def the_task( a: str, b: str, retry: Retry = retry_cls(attempts=2), # type: ignore[reportCallIssue] ): assert a == "a" assert b == "b" nonlocal calls calls += 1 nonlocal first_call_time if not first_call_time: when = datetime.now(timezone.utc) + timedelta(seconds=0.5) first_call_time = datetime.now(timezone.utc) retry.at(when) else: nonlocal second_call_time second_call_time = datetime.now(timezone.utc) await docket.add(the_task)("a", "b") await worker.run_until_finished() assert calls == 2 assert isinstance(first_call_time, datetime) assert isinstance(second_call_time, datetime) delay = second_call_time - first_call_time assert delay.total_seconds() > 0 < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_user_can_request_a_retry_at_a_specific_time_in_the_past _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 190 async def test_user_can_request_a_retry_at_a_specific_time_in_the_past( docket: Docket, worker: Worker ): calls = 0 first_call_time = None second_call_time = None async def the_task( a: str, b: str, retry: Retry = Retry(attempts=2), ): assert a == "a" assert b == "b" nonlocal calls calls += 1 nonlocal first_call_time if not first_call_time: when = datetime.now(timezone.utc) - timedelta(days=1) first_call_time = datetime.now(timezone.utc) retry.at(when) else: nonlocal second_call_time second_call_time = datetime.now(timezone.utc) await docket.add(the_task)("a", "b") await worker.run_until_finished() assert calls == 2 assert isinstance(first_call_time, datetime) assert isinstance(second_call_time, datetime) delay = second_call_time - first_call_time assert delay.total_seconds() > 0 < 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_dependencies_error_for_missing_task_argument ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 230 async def test_dependencies_error_for_missing_task_argument( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A task will fail when asking for a missing task argument""" async def dependency_one(nope: list[str] = TaskArgument()) -> list[str]: raise NotImplementedError("This should not be called") # pragma: no cover async def dependent_task( a: list[str], b: list[str] = TaskArgument("a"), c: list[str] = Depends(dependency_one), ) -> None: raise NotImplementedError("This should not be called") # pragma: no cover await docket.add(dependent_task)(a=["hello", "world"]) await worker.run_until_finished() with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert "Failed to resolve dependencies for parameter(s): c" in caplog.text assert "ExceptionGroup" in caplog.text assert "KeyError: 'nope'" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_a_task_argument_cannot_ask_for_itself _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependencies_core.py, line 257 async def test_a_task_argument_cannot_ask_for_itself( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture ): """A task argument cannot ask for itself""" # This task would be nonsense, because it's asking for itself. async def dependent_task(a: list[str] = TaskArgument()) -> None: raise NotImplementedError("This should not be called") # pragma: no cover await docket.add(dependent_task)() with caplog.at_level(logging.ERROR): await worker.run_until_finished() assert "Failed to resolve dependencies for parameter(s): a" in caplog.text assert "ValueError: No parameter name specified" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_retries_must_be_unique _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependency_uniqueness.py, line 21 async def test_retries_must_be_unique(docket: Docket, worker: Worker): async def the_task( a: str, retryA: Retry = Retry(attempts=3), retryB: Retry = Retry(attempts=5), ): pass # pragma: no cover with pytest.raises( ValueError, match="Only one Retry dependency is allowed per task", ): await docket.add(the_task)("a") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_runtime_subclasses_must_be_unique ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependency_uniqueness.py, line 36 async def test_runtime_subclasses_must_be_unique(docket: Docket, worker: Worker): """Two different Runtime subclasses should conflict since Runtime.single=True.""" class CustomRuntime(Runtime): async def __aenter__(self) -> "CustomRuntime": return self # pragma: no cover async def run( self, execution: Execution, function: Callable[..., Awaitable[Any]], args: tuple[Any, ...], kwargs: dict[str, Any], ) -> Any: return await function(*args, **kwargs) # pragma: no cover async def the_task( a: str, timeout: Timeout = Timeout(timedelta(seconds=10)), custom: CustomRuntime = CustomRuntime(), ): pass # pragma: no cover with pytest.raises( ValueError, match=r"Only one Runtime dependency is allowed per task, but found: .+", ): await docket.add(the_task)("a") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_failure_handler_subclasses_must_be_unique _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependency_uniqueness.py, line 66 async def test_failure_handler_subclasses_must_be_unique( docket: Docket, worker: Worker ): """Two different FailureHandler subclasses should conflict since FailureHandler.single=True.""" class CustomFailureHandler(FailureHandler): async def __aenter__(self) -> "CustomFailureHandler": return self # pragma: no cover async def handle_failure( self, execution: Execution, outcome: TaskOutcome ) -> bool: return False # pragma: no cover async def the_task( a: str, retry: Retry = Retry(attempts=3), custom: CustomFailureHandler = CustomFailureHandler(), ): pass # pragma: no cover with pytest.raises( ValueError, match=r"Only one FailureHandler dependency is allowed per task, but found: .+", ): await docket.add(the_task)("a") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_completion_handler_subclasses_must_be_unique ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_dependency_uniqueness.py, line 94 async def test_completion_handler_subclasses_must_be_unique( docket: Docket, worker: Worker ): """Two different CompletionHandler subclasses should conflict since CompletionHandler.single=True.""" class CustomCompletionHandler(CompletionHandler): async def __aenter__(self) -> "CustomCompletionHandler": return self # pragma: no cover async def on_complete(self, execution: Execution, outcome: TaskOutcome) -> bool: return False # pragma: no cover async def the_task( a: str, perpetual: Perpetual = Perpetual(), custom: CustomCompletionHandler = CustomCompletionHandler(), ): pass # pragma: no cover with pytest.raises( ValueError, match=r"Only one CompletionHandler dependency is allowed per task, but found: .+", ): await docket.add(the_task)("a") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_clear_empty_docket ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 15 async def test_clear_empty_docket(docket: Docket): """Clearing an empty docket should succeed without error""" result = await docket.clear() assert result == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_clear_with_immediate_tasks _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 21 async def test_clear_with_immediate_tasks(docket: Docket, the_task: AsyncMock): """Should clear immediate tasks from the stream""" docket.register(the_task) await docket.add(the_task)("arg1", kwarg1="value1") await docket.add(the_task)("arg2", kwarg1="value2") await docket.add(the_task)("arg3", kwarg1="value3") snapshot_before = await docket.snapshot() assert len(snapshot_before.future) == 3 result = await docket.clear() assert result == 3 snapshot_after = await docket.snapshot() assert len(snapshot_after.future) == 0 assert len(snapshot_after.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_clear_with_scheduled_tasks _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 40 async def test_clear_with_scheduled_tasks(docket: Docket, the_task: AsyncMock): """Should clear scheduled future tasks from the queue""" docket.register(the_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future)("arg1") await docket.add(the_task, when=future + timedelta(seconds=1))("arg2") snapshot_before = await docket.snapshot() assert len(snapshot_before.future) == 2 result = await docket.clear() assert result == 2 snapshot_after = await docket.snapshot() assert len(snapshot_after.future) == 0 assert len(snapshot_after.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_clear_with_mixed_tasks _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 59 async def test_clear_with_mixed_tasks( docket: Docket, the_task: AsyncMock, another_task: AsyncMock ): """Should clear both immediate and scheduled tasks""" docket.register(the_task) docket.register(another_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task)("immediate1") await docket.add(another_task)("immediate2") await docket.add(the_task, when=future)("scheduled1") await docket.add(another_task, when=future + timedelta(seconds=1))("scheduled2") snapshot_before = await docket.snapshot() assert len(snapshot_before.future) == 4 result = await docket.clear() assert result == 4 snapshot_after = await docket.snapshot() assert len(snapshot_after.future) == 0 assert len(snapshot_after.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_clear_with_parked_tasks ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 84 async def test_clear_with_parked_tasks(docket: Docket, the_task: AsyncMock): """Should clear parked tasks (tasks with specific keys)""" docket.register(the_task) await docket.add(the_task, key="task1")("arg1") await docket.add(the_task, key="task2")("arg2") snapshot_before = await docket.snapshot() assert len(snapshot_before.future) == 2 result = await docket.clear() assert result == 2 snapshot_after = await docket.snapshot() assert len(snapshot_after.future) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_clear_preserves_strikes ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 101 async def test_clear_preserves_strikes(docket: Docket, the_task: AsyncMock): """Should not affect strikes when clearing""" docket.register(the_task) await docket.strike("the_task") await docket.add(the_task)("arg1") # Check that the task wasn't scheduled due to the strike snapshot_before = await docket.snapshot() assert len(snapshot_before.future) == 0 # Task was stricken, so not scheduled result = await docket.clear() assert result == 0 # Nothing to clear since task was stricken # Strikes should still be in effect - clear doesn't affect strikes snapshot_after = await docket.snapshot() assert len(snapshot_after.future) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_clear_returns_total_count _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 120 async def test_clear_returns_total_count(docket: Docket, the_task: AsyncMock): """Should return the total number of tasks cleared""" docket.register(the_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task)("immediate1") await docket.add(the_task)("immediate2") await docket.add(the_task, when=future)("scheduled1") await docket.add(the_task, key="keyed1")("keyed1") result = await docket.clear() assert result == 4 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_clear_no_redis_key_leaks ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 135 async def test_clear_no_redis_key_leaks(docket: Docket, the_task: AsyncMock): """Should not leak Redis keys when clearing tasks""" docket.register(the_task) await docket.add(the_task)("immediate1") await docket.add(the_task)("immediate2") await docket.add(the_task, key="keyed1")("keyed_task") future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future)("scheduled1") await docket.add(the_task, when=future + timedelta(seconds=1))("scheduled2") async with docket.redis() as r: keys_before = cast(list[str], await r.keys("*")) # type: ignore keys_before_count = len(keys_before) result = await docket.clear() assert result == 5 async with docket.redis() as r: keys_after = cast(list[str], await r.keys("*")) # type: ignore keys_after_count = len(keys_after) assert keys_after_count <= keys_before_count snapshot = await docket.snapshot() assert len(snapshot.future) == 0 assert len(snapshot.running) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_clear_with_execution_ttl_zero _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 165 async def test_clear_with_execution_ttl_zero(the_task: AsyncMock): """Should delete runs hashes immediately when execution_ttl=0.""" async with Docket( name="test-docket-ttl-zero", url="memory://", execution_ttl=timedelta(0) ) as docket: docket.register(the_task) # Add both immediate and scheduled tasks await docket.add(the_task, key="immediate1")("arg1") future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future, key="scheduled1")("arg2") result = await docket.clear() assert result == 2 # Verify runs hashes were deleted (not just expired) async with docket.redis() as redis: immediate_runs = await redis.exists(f"{docket.name}:runs:immediate1") scheduled_runs = await redis.exists(f"{docket.name}:runs:scheduled1") assert immediate_runs == 0 assert scheduled_runs == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_stream_not_created_on_docket_init ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 191 async def test_stream_not_created_on_docket_init( redis_url: str, make_docket_name: Callable[[], str] ): """Stream and consumer group should NOT be created when Docket is initialized. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) async with docket: async with docket.redis() as redis: stream_exists = await redis.exists(docket.stream_key) assert not stream_exists, "Stream should not exist on Docket init" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_ensure_stream_and_group_is_idempotent _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 205 async def test_ensure_stream_and_group_is_idempotent( redis_url: str, make_docket_name: Callable[[], str] ): """Calling _ensure_stream_and_group multiple times should not raise errors. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) async with docket: await docket._ensure_stream_and_group() # pyright: ignore[reportPrivateUsage] await docket._ensure_stream_and_group() # pyright: ignore[reportPrivateUsage] await docket._ensure_stream_and_group() # pyright: ignore[reportPrivateUsage] async with docket.redis() as redis: groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 1 assert groups[0]["name"] == docket.worker_group_name.encode() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_docket_without_worker_does_not_create_group ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 224 async def test_docket_without_worker_does_not_create_group( redis_url: str, make_docket_name: Callable[[], str] ): """A Docket used only for adding tasks should not create consumer group. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) async def dummy_task(): ... async with docket: docket.register(dummy_task) for _ in range(5): await docket.add(dummy_task)() async with docket.redis() as redis: assert await redis.exists(docket.stream_key) groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 0, "Consumer group should not exist without worker" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_snapshot_handles_nogroup_with_real_redis[real] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_clear.py, line 247 @pytest.mark.parametrize("redis_url", ["real"], indirect=True) async def test_snapshot_handles_nogroup_with_real_redis( redis_url: str, make_docket_name: Callable[[], str] ): """Snapshot should handle NOGROUP error and create group automatically. Issue #206: Lazy stream/consumer group bootstrap. This test uses real Redis (not memory://) to verify the NOGROUP error handling path in snapshot(), since the memory:// backend proactively creates the group to work around a fakeredis bug. """ docket = Docket(name=make_docket_name(), url=redis_url) async def dummy_task(): ... async with docket: docket.register(dummy_task) # Add a task to create the stream (but not the consumer group) await docket.add(dummy_task)() # Verify stream exists but group doesn't async with docket.redis() as redis: assert await redis.exists(docket.stream_key) groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 0 # Calling snapshot() should trigger NOGROUP and handle it snapshot = await docket.snapshot() # Snapshot should succeed after creating the group assert snapshot.total_tasks == 1 # Group should now exist async with docket.redis() as redis: groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_docket_schedule_method_with_immediate_task _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 13 async def test_docket_schedule_method_with_immediate_task( docket: Docket, the_task: AsyncMock ): """Test direct scheduling via docket.schedule(execution) for immediate execution.""" # Register task so snapshot can look it up docket.register(the_task) execution = Execution( docket, the_task, ("arg",), {}, "test-key", datetime.now(timezone.utc), 1 ) await docket.schedule(execution) # Verify task was scheduled snapshot = await docket.snapshot() assert len(snapshot.future) == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_docket_schedule_with_stricken_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 31 async def test_docket_schedule_with_stricken_task(docket: Docket, the_task: AsyncMock): """Test that docket.schedule respects strike list.""" # Register task docket.register(the_task) # Strike the task await docket.strike("the_task") execution = Execution( docket, the_task, (), {}, "test-key", datetime.now(timezone.utc), 1 ) # Try to schedule - should be blocked await docket.schedule(execution) # Verify task was NOT scheduled snapshot = await docket.snapshot() assert len(snapshot.future) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_get_execution_nonexistent_key _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 51 async def test_get_execution_nonexistent_key(docket: Docket): """get_execution should return None for non-existent key.""" execution = await docket.get_execution("nonexistent-key") assert execution is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_get_execution_for_scheduled_task ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 57 async def test_get_execution_for_scheduled_task(docket: Docket, the_task: AsyncMock): """get_execution should return execution for scheduled task with correct data.""" docket.register(the_task) future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future, key="scheduled-task")( "arg1", kwarg1="value1" ) execution = await docket.get_execution("scheduled-task") assert execution is not None assert execution.key == "scheduled-task" assert execution.function == the_task assert execution.args == ("arg1",) assert execution.kwargs == {"kwarg1": "value1"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_get_execution_for_queued_task _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 74 async def test_get_execution_for_queued_task(docket: Docket, the_task: AsyncMock): """get_execution should return execution for immediate (queued) task.""" docket.register(the_task) await docket.add(the_task, key="immediate-task")("arg1", kwarg1="value1") execution = await docket.get_execution("immediate-task") assert execution is not None assert execution.key == "immediate-task" assert execution.function == the_task assert execution.args == ("arg1",) assert execution.kwargs == {"kwarg1": "value1"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_get_execution_function_not_registered _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 88 async def test_get_execution_function_not_registered( docket: Docket, the_task: AsyncMock ): """get_execution should create placeholder when function not registered in current docket.""" # Schedule a task with the function registered docket.register(the_task) await docket.add(the_task, key="task-key")("arg1") # Create a new docket instance that doesn't have the task registered # (simulates CLI accessing a task without having all functions imported) async with Docket(name=docket.name, url=docket.url) as new_docket: # Try to get execution without having the function registered # Should return execution with placeholder function execution = await new_docket.get_execution("task-key") assert execution is not None assert execution.function.__name__ == "the_task" assert execution.args == ("arg1",) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_get_execution_with_complex_args ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 107 async def test_get_execution_with_complex_args(docket: Docket, the_task: AsyncMock): """get_execution should handle complex args and kwargs.""" docket.register(the_task) complex_arg = {"nested": {"data": [1, 2, 3]}, "key": "value"} complex_kwarg = {"items": [{"id": 1}, {"id": 2}]} await docket.add(the_task, key="complex-task")(complex_arg, data=complex_kwarg) execution = await docket.get_execution("complex-task") assert execution is not None assert execution.args == (complex_arg,) assert execution.kwargs == {"data": complex_kwarg} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_get_execution_claim_check_pattern ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 122 async def test_get_execution_claim_check_pattern(docket: Docket, the_task: AsyncMock): """Demonstrate the claim check pattern: schedule task, get key, retrieve later.""" docket.register(the_task) # Schedule a task and get the key future = datetime.now(timezone.utc) + timedelta(seconds=60) original_execution = await docket.add( the_task, when=future, key="claim-check-task" )("important-data", priority="high") task_key = original_execution.key # Later, retrieve the execution using just the key retrieved_execution = await docket.get_execution(task_key) assert retrieved_execution is not None assert retrieved_execution.key == task_key assert retrieved_execution.function == the_task assert retrieved_execution.args == ("important-data",) assert retrieved_execution.kwargs == {"priority": "high"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_get_execution_with_incomplete_data ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 142 async def test_get_execution_with_incomplete_data( docket: Docket, key_leak_checker: KeyCountChecker ): """get_execution should return None when runs hash has incomplete data.""" # This test manually creates incomplete test data runs_key = docket.runs_key("incomplete-task") key_leak_checker.add_exemption(runs_key) # Manually create runs hash with missing fields async with docket.redis() as redis: # Only set state, missing function/args/kwargs await redis.hset(runs_key, mapping={"state": "scheduled"}) # type: ignore[misc] execution = await docket.get_execution("incomplete-task") assert execution is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_get_execution_with_missing_when ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 159 async def test_get_execution_with_missing_when( docket: Docket, the_task: AsyncMock, key_leak_checker: KeyCountChecker ): """get_execution should return None when runs hash is missing when field.""" import cloudpickle # type: ignore[import-untyped] docket.register(the_task) # This test manually creates incomplete test data runs_key = docket.runs_key("no-when-task") key_leak_checker.add_exemption(runs_key) # Manually create runs hash with function/args/kwargs but no when async with docket.redis() as redis: await redis.hset( # type: ignore[misc] runs_key, mapping={ "state": "scheduled", "function": "the_task", "args": cloudpickle.dumps(()), # type: ignore[attr-defined] "kwargs": cloudpickle.dumps({}), # type: ignore[attr-defined] # Missing "when" field }, ) execution = await docket.get_execution("no-when-task") assert execution is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_get_execution_with_unregistered_function_creates_placeholder _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 188 async def test_get_execution_with_unregistered_function_creates_placeholder( docket: Docket, key_leak_checker: KeyCountChecker, ): """get_execution should create placeholder function when not registered.""" import cloudpickle # type: ignore[import-untyped] # This test manually creates incomplete test data runs_key = docket.runs_key("unregistered-task") key_leak_checker.add_exemption(runs_key) # Manually create runs hash with unregistered function async with docket.redis() as redis: await redis.hset( # type: ignore[misc] runs_key, mapping={ "state": "scheduled", "function": "unknown_function", "args": cloudpickle.dumps(("arg1",)), # type: ignore[attr-defined] "kwargs": cloudpickle.dumps({"key": "value"}), # type: ignore[attr-defined] "when": str(datetime.now(timezone.utc).timestamp()), }, ) execution = await docket.get_execution("unregistered-task") assert execution is not None assert execution.function.__name__ == "unknown_function" assert execution.args == ("arg1",) assert execution.kwargs == {"key": "value"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_cancelled_state_creates_tombstone ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 222 async def test_cancelled_state_creates_tombstone(docket: Docket, the_task: AsyncMock): """Cancelling a task should create a tombstone with CANCELLED state.""" docket.register(the_task) # Schedule a future task future = datetime.now(timezone.utc) + timedelta(seconds=60) execution = await docket.add(the_task, when=future, key="task-to-cancel")( "arg1", kwarg1="value1" ) # Cancel the task await docket.cancel(execution.key) # Retrieve execution - should have CANCELLED state retrieved = await docket.get_execution(execution.key) assert retrieved is not None assert retrieved.state == ExecutionState.CANCELLED assert retrieved.key == "task-to-cancel" assert retrieved.function == the_task assert retrieved.args == ("arg1",) assert retrieved.kwargs == {"kwarg1": "value1"} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cancelled_state_respects_ttl ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 245 async def test_cancelled_state_respects_ttl(docket: Docket, the_task: AsyncMock): """Cancelled task tombstone should have TTL set from execution_ttl.""" docket.register(the_task) # Schedule a task future = datetime.now(timezone.utc) + timedelta(seconds=60) execution = await docket.add(the_task, when=future, key="ttl-task")("test") # Cancel the task await docket.cancel(execution.key) # Check that the runs hash has TTL set async with docket.redis() as redis: runs_key = docket.runs_key(execution.key) ttl = await redis.ttl(runs_key) # TTL should be set (not -1 which means no expiry) # Should be close to execution_ttl (default 15 minutes = 900 seconds) assert ttl > 0 assert ttl <= int(docket.execution_ttl.total_seconds()) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cancelled_state_with_ttl_zero _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 267 async def test_cancelled_state_with_ttl_zero( docket: Docket, the_task: AsyncMock, make_docket_name: Callable[[], str] ): """Cancelled task with execution_ttl=0 should delete tombstone immediately.""" # Create docket with TTL=0 async with Docket( name=make_docket_name(), url=docket.url, execution_ttl=timedelta(0), ) as zero_ttl_docket: zero_ttl_docket.register(the_task) # Schedule and cancel a task future = datetime.now(timezone.utc) + timedelta(seconds=60) execution = await zero_ttl_docket.add( the_task, when=future, key="zero-ttl-task" )("test") await zero_ttl_docket.cancel(execution.key) # Tombstone should be deleted immediately retrieved = await zero_ttl_docket.get_execution(execution.key) assert retrieved is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 41 @pytest.fixture(scope="session") def acl_credentials(worker_id: str) -> ACLCredentials: E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:41 ______________ ERROR at setup of test_get_execution_after_cancel _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 291 async def test_get_execution_after_cancel(docket: Docket, the_task: AsyncMock): """get_execution should retrieve cancelled task state.""" docket.register(the_task) # Schedule task execution = await docket.add(the_task, key="cancelled-task")("data") # Cancel it await docket.cancel(execution.key) # Should be able to retrieve it with CANCELLED state retrieved = await docket.get_execution("cancelled-task") assert retrieved is not None assert retrieved.state == ExecutionState.CANCELLED assert retrieved.key == "cancelled-task" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_replace_does_not_set_cancelled_state __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 308 async def test_replace_does_not_set_cancelled_state( docket: Docket, the_task: AsyncMock ): """replace() should not create CANCELLED state - it's a replacement, not cancellation.""" docket.register(the_task) # Schedule a task future = datetime.now(timezone.utc) + timedelta(seconds=60) await docket.add(the_task, when=future, key="replace-task")("original") # Replace it await docket.replace(the_task, when=future, key="replace-task")("replaced") # The new execution should be SCHEDULED, not CANCELLED retrieved = await docket.get_execution("replace-task") assert retrieved is not None assert retrieved.state == ExecutionState.SCHEDULED assert retrieved.args == ("replaced",) # New args file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_cancellation_idempotent_with_tombstone _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_execution.py, line 328 async def test_cancellation_idempotent_with_tombstone( docket: Docket, the_task: AsyncMock ): """Cancelling twice should be idempotent - second cancel sees the tombstone.""" docket.register(the_task) # Schedule a task future = datetime.now(timezone.utc) + timedelta(seconds=60) execution = await docket.add(the_task, when=future, key="idempotent-task")("test") # Cancel it twice - both should succeed await docket.cancel(execution.key) await docket.cancel(execution.key) # Should be no-op # Should still have CANCELLED tombstone retrieved = await docket.get_execution(execution.key) assert retrieved is not None assert retrieved.state == ExecutionState.CANCELLED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_prefix_returns_name __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 15 def test_prefix_returns_name(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_key_builds_correct_key _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 21 def test_key_builds_correct_key(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_queue_key_uses_key_method _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 29 def test_queue_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_stream_key_uses_key_method _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 35 def test_stream_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_workers_set_uses_key_method ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 41 def test_workers_set_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_known_task_key_uses_key_method _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 47 def test_known_task_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_parked_task_key_uses_key_method ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 53 def test_parked_task_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_stream_id_key_uses_key_method _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 59 def test_stream_id_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_runs_key_uses_key_method ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 65 def test_runs_key_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_cancel_channel_uses_key_method _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 71 def test_cancel_channel_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_results_collection_uses_key_method ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 77 def test_results_collection_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_worker_tasks_set_uses_key_method ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 83 def test_worker_tasks_set_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_task_workers_set_uses_key_method ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 89 def test_task_workers_set_uses_key_method(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_worker_group_name_not_prefixed _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 95 def test_worker_group_name_not_prefixed(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_docket_propagates_connection_errors_on_operation ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 110 async def test_docket_propagates_connection_errors_on_operation(): """Connection errors should propagate when operations are attempted.""" docket = Docket(name="test-docket", url="redis://nonexistent-host:12345/0") # __aenter__ succeeds because it doesn't actually connect to Redis # (connection is lazy - happens when operations are performed) await docket.__aenter__() # But actual operations should fail with connection errors async def some_task(): ... docket.register(some_task) with pytest.raises(redis.exceptions.RedisError): await docket.add(some_task)() await docket.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_is_cluster_url[redis://localhost:6379/0-False] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_is_cluster_url[rediss://localhost:6379/0-False] ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_is_cluster_url[memory://-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_is_cluster_url[redis+cluster://localhost:6379/0-True] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_is_cluster_url[rediss+cluster://localhost:6379/0-True] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_is_cluster_url[redis+cluster://user:pass@localhost:6379/0-True] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_is_cluster_url[rediss+cluster://user:pass@localhost:6379/0-True] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 131 @pytest.mark.parametrize( "url,expected", [ ("redis://localhost:6379/0", False), ("rediss://localhost:6379/0", False), ("memory://", False), ("redis+cluster://localhost:6379/0", True), ("rediss+cluster://localhost:6379/0", True), ("redis+cluster://user:pass@localhost:6379/0", True), ("rediss+cluster://user:pass@localhost:6379/0", True), ], ) def test_is_cluster_url(url: str, expected: bool): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_normalize_cluster_url[redis+cluster://localhost:6379/0-redis://localhost:6379/0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 149 @pytest.mark.parametrize( "url,expected", [ ("redis+cluster://localhost:6379/0", "redis://localhost:6379/0"), ("rediss+cluster://localhost:6379/0", "rediss://localhost:6379/0"), ( "redis+cluster://user:pass@localhost:6379/0", "redis://user:pass@localhost:6379/0", ), ( "rediss+cluster://user:pass@localhost:6379/0", "rediss://user:pass@localhost:6379/0", ), ], ) def test_normalize_cluster_url(url: str, expected: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_normalize_cluster_url[rediss+cluster://localhost:6379/0-rediss://localhost:6379/0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 149 @pytest.mark.parametrize( "url,expected", [ ("redis+cluster://localhost:6379/0", "redis://localhost:6379/0"), ("rediss+cluster://localhost:6379/0", "rediss://localhost:6379/0"), ( "redis+cluster://user:pass@localhost:6379/0", "redis://user:pass@localhost:6379/0", ), ( "rediss+cluster://user:pass@localhost:6379/0", "rediss://user:pass@localhost:6379/0", ), ], ) def test_normalize_cluster_url(url: str, expected: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_normalize_cluster_url[redis+cluster://user:pass@localhost:6379/0-redis://user:pass@localhost:6379/0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 149 @pytest.mark.parametrize( "url,expected", [ ("redis+cluster://localhost:6379/0", "redis://localhost:6379/0"), ("rediss+cluster://localhost:6379/0", "rediss://localhost:6379/0"), ( "redis+cluster://user:pass@localhost:6379/0", "redis://user:pass@localhost:6379/0", ), ( "rediss+cluster://user:pass@localhost:6379/0", "rediss://user:pass@localhost:6379/0", ), ], ) def test_normalize_cluster_url(url: str, expected: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_normalize_cluster_url[rediss+cluster://user:pass@localhost:6379/0-rediss://user:pass@localhost:6379/0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 149 @pytest.mark.parametrize( "url,expected", [ ("redis+cluster://localhost:6379/0", "redis://localhost:6379/0"), ("rediss+cluster://localhost:6379/0", "rediss://localhost:6379/0"), ( "redis+cluster://user:pass@localhost:6379/0", "redis://user:pass@localhost:6379/0", ), ( "rediss+cluster://user:pass@localhost:6379/0", "rediss://user:pass@localhost:6379/0", ), ], ) def test_normalize_cluster_url(url: str, expected: str): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_prefix_returns_hash_tagged_name_for_cluster ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 170 def test_prefix_returns_hash_tagged_name_for_cluster(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_key_builds_hash_tagged_key_for_cluster _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 176 def test_key_builds_hash_tagged_key_for_cluster(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_strikelist_prefix_returns_hash_tagged_name_for_cluster _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 184 def test_strikelist_prefix_returns_hash_tagged_name_for_cluster(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strikelist_prefix_without_redis ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 193 def test_strikelist_prefix_without_redis(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_redis_connection_aenter_is_not_reentrant ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 205 async def test_redis_connection_aenter_is_not_reentrant(): """RedisConnection.__aenter__ raises on re-entry.""" connection = RedisConnection("memory://") await connection.__aenter__() # Second enter should raise with pytest.raises(AssertionError, match="not reentrant"): await connection.__aenter__() await connection.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_redis_connection_cluster_client_returns_none_when_not_cluster _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 217 def test_redis_connection_cluster_client_returns_none_when_not_cluster(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_redis_connection_normalized_url_returns_original_for_non_cluster _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_keys.py, line 223 def test_redis_connection_normalized_url_returns_original_for_non_cluster(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_standard_tasks_available_after_init __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 8 def test_standard_tasks_available_after_init(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_register_task_before_aenter ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 17 def test_register_task_before_aenter(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_registered_task_usable_after_aenter __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 29 async def test_registered_task_usable_after_aenter(): """Tasks registered before __aenter__ should be usable inside the context.""" docket = Docket(name="test-pre-register-usable", url="memory://") async def my_task(_value: str) -> None: ... docket.register(my_task) async with docket: assert "my_task" in docket.tasks execution = await docket.add(my_task)("test-value") assert execution.function is my_task assert execution.args == ("test-value",) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_tasks_persist_after_aexit _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 44 async def test_tasks_persist_after_aexit(): """Task registry should persist after exiting the async context.""" docket = Docket(name="test-persist-after-exit", url="memory://") async def my_task() -> None: ... docket.register(my_task) async with docket: ... # Tasks should still be there after exit assert "my_task" in docket.tasks assert "trace" in docket.tasks file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_docket_reentry_preserves_tasks _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 60 async def test_docket_reentry_preserves_tasks(): """Re-entering the docket should preserve both user and standard tasks.""" docket = Docket(name="test-reentry", url="memory://") async def my_task() -> None: ... docket.register(my_task) # First entry/exit async with docket: assert "my_task" in docket.tasks assert "trace" in docket.tasks # Re-entry should still have all tasks async with docket: assert "my_task" in docket.tasks assert "trace" in docket.tasks file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_register_collection __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 79 def test_register_collection(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_register_task_with_custom_name _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 94 def test_register_task_with_custom_name(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_register_task_with_multiple_names ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 108 def test_register_task_with_multiple_names(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_register_task_with_empty_names_defaults_to_function_name _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 126 def test_register_task_with_empty_names_defaults_to_function_name(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_register_task_with_none_names_defaults_to_function_name _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 138 def test_register_task_with_none_names_defaults_to_function_name(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_schedule_task_by_alias _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 150 async def test_schedule_task_by_alias(docket: Docket, worker: Worker): """Tasks can be scheduled by their alias name.""" results: list[str] = [] async def my_task(value: str) -> None: results.append(value) docket.register(my_task, names=["task_alias"]) await docket.add("task_alias")("hello") await worker.run_until_finished() assert results == ["hello"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_alias_appears_in_worker_announcements _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_docket_registration.py, line 165 async def test_alias_appears_in_worker_announcements(docket: Docket): """Alias names should appear in worker task announcements.""" async def my_task() -> None: ... docket.register(my_task, names=["custom_alias"]) async with Worker(docket) as w: await asyncio.sleep(0.1) # Let heartbeat fire workers = await docket.task_workers("custom_alias") assert len(workers) == 1 assert w.name in {worker.name for worker in workers} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_compact_signature[no_args-] ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_compact_signature[one_arg-a: str] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_compact_signature[two_args-a: str, b: str] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_compact_signature[optional_args-a: str, b: str, c: str = 'c'] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_compact_signature[logged_args-a: str, b: str = 'foo'] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_compact_signature[dependencies-a: str, b: int = 42, ...] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_compact_signature[only_dependencies-...] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 50 @pytest.mark.parametrize( "function, expected", [ (no_args, ""), (one_arg, "a: str"), (two_args, "a: str, b: str"), (optional_args, "a: str, b: str, c: str = 'c'"), (logged_args, "a: str, b: str = 'foo'"), (dependencies, "a: str, b: int = 42, ..."), (only_dependencies, "..."), ], ) async def test_compact_signature( docket: Docket, worker: Worker, function: TaskFunction, expected: str ): assert compact_signature(get_signature(function)) == expected file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_execution_function_is_immutable ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 68 async def test_execution_function_is_immutable(docket: Docket): async def task(x: int) -> int: # pragma: no cover return x * 2 execution = Execution( docket=docket, function=task, args=(5,), kwargs={}, when=datetime.now(timezone.utc), key="test-key", attempt=1, ) assert execution.function == task with pytest.raises(AttributeError): execution.function = no_args # type: ignore[misc] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_execution_args_is_immutable ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 88 async def test_execution_args_is_immutable(docket: Docket): async def task(x: int) -> int: # pragma: no cover return x * 2 execution = Execution( docket=docket, function=task, args=(5,), kwargs={}, when=datetime.now(timezone.utc), key="test-key", attempt=1, ) assert execution.args == (5,) with pytest.raises(AttributeError): execution.args = (10,) # type: ignore[misc] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_execution_kwargs_is_immutable _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 108 async def test_execution_kwargs_is_immutable(docket: Docket): async def task(x: int, y: int = 2) -> int: # pragma: no cover return x * y execution = Execution( docket=docket, function=task, args=(5,), kwargs={"y": 3}, when=datetime.now(timezone.utc), key="test-key", attempt=1, ) assert execution.kwargs == {"y": 3} with pytest.raises(AttributeError): execution.kwargs = {"y": 10} # type: ignore[misc] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_execution_key_is_immutable _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 128 async def test_execution_key_is_immutable(docket: Docket): async def task(x: int) -> int: # pragma: no cover return x * 2 execution = Execution( docket=docket, function=task, args=(5,), kwargs={}, when=datetime.now(timezone.utc), key="test-key", attempt=1, ) assert execution.key == "test-key" with pytest.raises(AttributeError): execution.key = "new-key" # type: ignore[misc] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_execution_from_message_without_fallback_raises_for_unknown_task _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution.py, line 148 async def test_execution_from_message_without_fallback_raises_for_unknown_task( docket: Docket, ): """Execution.from_message should raise ValueError when task is unknown and no fallback.""" import cloudpickle # type: ignore[import-untyped] # Create a message for a task that isn't registered message = { b"function": b"unknown_task", b"args": cloudpickle.dumps(()), # pyright: ignore[reportUnknownMemberType] b"kwargs": cloudpickle.dumps({}), # pyright: ignore[reportUnknownMemberType] b"when": b"2024-01-01T00:00:00+00:00", b"key": b"test-key", b"attempt": b"1", } with pytest.raises(ValueError) as exc_info: await Execution.from_message(docket, message, redelivered=False) assert "unknown_task" in str(exc_info.value) assert "not registered" in str(exc_info.value) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_run_state_scheduled __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 11 async def test_run_state_scheduled(docket: Docket, the_task: AsyncMock): """Execution should be set to QUEUED when an immediate task is added.""" execution = await docket.add(the_task)("arg1", "arg2") assert isinstance(execution, Execution) await execution.sync() assert execution.state == ExecutionState.QUEUED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_run_state_pending_to_running ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 20 async def test_run_state_pending_to_running(docket: Docket, worker: Worker): """Execution should transition from QUEUED to RUNNING during execution.""" executed = asyncio.Event() async def test_task(): # Verify we're in RUNNING state executed.set() await docket.add(test_task)() # Start worker but don't wait for completion yet worker_task = asyncio.create_task(worker.run_until_finished()) # Wait for task to start executing await executed.wait() # Give it a moment to complete await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_run_state_completed_on_success _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 40 async def test_run_state_completed_on_success( docket: Docket, worker: Worker, the_task: AsyncMock ): """Execution should be set to COMPLETED when task succeeds.""" execution = await docket.add(the_task)() await worker.run_until_finished() await execution.sync() assert execution.state == ExecutionState.COMPLETED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_run_state_failed_on_exception _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 52 async def test_run_state_failed_on_exception(docket: Docket, worker: Worker): """Execution should be set to FAILED when task raises an exception.""" async def failing_task(): raise ValueError("Task failed!") execution = await docket.add(failing_task)() await worker.run_until_finished() await execution.sync() assert execution.state == ExecutionState.FAILED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_run_state_ttl_after_completion _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 66 async def test_run_state_ttl_after_completion( docket: Docket, worker: Worker, the_task: AsyncMock ): """Run state should have TTL set after completion.""" execution = await docket.add(the_task)() await worker.run_until_finished() # Verify state exists await execution.sync() assert execution.state == ExecutionState.COMPLETED # Verify TTL is set to the configured execution_ttl (default: 1 hour = 3600 seconds) expected_ttl = int(docket.execution_ttl.total_seconds()) async with docket.redis() as redis: ttl = await redis.ttl(execution._redis_key) # type: ignore[reportPrivateUsage] assert 0 < ttl <= expected_ttl # TTL should be set and reasonable file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_custom_execution_ttl __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 85 async def test_custom_execution_ttl( redis_url: str, the_task: AsyncMock, make_docket_name: Callable[[], str] ): """Docket should respect custom execution_ttl configuration.""" # Create docket with custom 5-minute TTL custom_ttl = timedelta(minutes=5) async with Docket( name=make_docket_name(), url=redis_url, execution_ttl=custom_ttl ) as docket: async with Worker(docket) as worker: execution = await docket.add(the_task)() await worker.run_until_finished() # Verify state is completed await execution.sync() assert execution.state == ExecutionState.COMPLETED # Verify TTL matches custom value (300 seconds) expected_ttl = int(custom_ttl.total_seconds()) async with docket.redis() as redis: ttl = await redis.ttl(execution._redis_key) # type: ignore[reportPrivateUsage] assert 0 < ttl <= expected_ttl # Verify it's approximately the custom value (not the default 3600) assert ttl > 200 # Should be close to 300, not near 0 assert ttl <= 300 # Should not exceed configured value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_full_lifecycle_integration _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 113 async def test_full_lifecycle_integration(docket: Docket, worker: Worker): """Test complete lifecycle: SCHEDULED -> QUEUED -> RUNNING -> COMPLETED.""" states_observed: list[ExecutionState] = [] async def tracking_task(progress: Progress = Progress()): await progress.set_total(3) for i in range(3): await progress.increment() await progress.set_message(f"Step {i + 1}") await asyncio.sleep(0.01) # Schedule task in the future when = datetime.now(timezone.utc) + timedelta(milliseconds=50) execution = await docket.add(tracking_task, when=when)() # Should be SCHEDULED await execution.sync() assert execution.state == ExecutionState.SCHEDULED states_observed.append(execution.state) # Run worker await worker.run_until_finished() # Should be COMPLETED await execution.sync() assert execution.state == ExecutionState.COMPLETED states_observed.append(execution.state) # Verify we observed the expected states assert ExecutionState.SCHEDULED in states_observed assert ExecutionState.COMPLETED in states_observed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_run_add_returns_run_instance ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 146 async def test_run_add_returns_run_instance(docket: Docket, the_task: AsyncMock): """Verify that docket.add() returns an Execution instance.""" result = await docket.add(the_task)("arg1") assert isinstance(result, Execution) assert result.key is not None assert len(result.key) > 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_error_message_stored_on_failure ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 155 async def test_error_message_stored_on_failure(docket: Docket, worker: Worker): """Failed run should store error message.""" async def failing_task(): raise RuntimeError("Something went wrong!") execution = await docket.add(failing_task)() await worker.run_until_finished() # Check state is FAILED await execution.sync() assert execution.state == ExecutionState.FAILED assert execution.error == "RuntimeError: Something went wrong!" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_execution_sync_with_no_redis_data ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 171 async def test_execution_sync_with_no_redis_data(docket: Docket): """Test sync() when no execution data exists in Redis.""" execution = Execution( docket, AsyncMock(), (), {}, "nonexistent-key", datetime.now(timezone.utc), 1 ) # Sync without ever scheduling await execution.sync() # Should reset to defaults assert execution.state == ExecutionState.SCHEDULED assert execution.worker is None assert execution.started_at is None assert execution.completed_at is None assert execution.error is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_execution_sync_with_missing_state_field ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 188 async def test_execution_sync_with_missing_state_field(docket: Docket): """Test sync() when Redis data exists but has no 'state' field.""" from unittest.mock import AsyncMock, patch execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) # Set initial state execution.state = ExecutionState.RUNNING # Mock Redis to return data WITHOUT state field mock_data = { b"worker": b"worker-1", b"started_at": b"2024-01-01T00:00:00+00:00", # No b"state" field - state_value will be None } with patch.object(execution.docket, "redis") as mock_redis_ctx: mock_redis = AsyncMock() mock_redis.hgetall.return_value = mock_data mock_redis_ctx.return_value.__aenter__.return_value = mock_redis mock_redis_ctx.return_value.__aexit__.return_value = None # Mock progress sync to avoid extra Redis calls with patch.object(execution.progress, "sync"): await execution.sync() # State should NOT be updated (stays as RUNNING) assert execution.state == ExecutionState.RUNNING # But other fields should be updated assert execution.worker == "worker-1" assert execution.started_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_execution_sync_with_string_state_value _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 223 async def test_execution_sync_with_string_state_value(docket: Docket): """Test sync() handles non-bytes state value (defensive coding).""" from unittest.mock import AsyncMock, patch execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) # Mock Redis to return string state (defensive code handles both bytes and str) mock_data = { b"state": "completed", # String, not bytes! b"worker": b"worker-1", b"completed_at": b"2024-01-01T00:00:00+00:00", } with patch.object(execution.docket, "redis") as mock_redis_ctx: mock_redis = AsyncMock() mock_redis.hgetall.return_value = mock_data mock_redis_ctx.return_value.__aenter__.return_value = mock_redis mock_redis_ctx.return_value.__aexit__.return_value = None # Mock progress sync with patch.object(execution.progress, "sync"): await execution.sync() # Should handle string and set state correctly assert execution.state == ExecutionState.COMPLETED assert execution.worker == "worker-1" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_mark_as_failed_without_error_message __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_execution_state.py, line 253 async def test_mark_as_failed_without_error_message(docket: Docket): """Test mark_as_failed with error=None.""" execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) await execution.claim("worker-1") await execution.mark_as_failed(error=None) await execution.sync() assert execution.state == ExecutionState.FAILED assert execution.error is None assert execution.completed_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_default_fallback_task_logs_and_acks __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 16 async def test_default_fallback_task_logs_and_acks( docket: Docket, caplog: pytest.LogCaptureFixture, the_task: AsyncMock, key_leak_checker: KeyCountChecker, ): """Default fallback should log a warning and acknowledge the message.""" await docket.add(the_task)() # Unregister the task before worker runs docket.tasks.pop("the_task") async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: with caplog.at_level(logging.WARNING): await worker.run_until_finished() # Should log about unknown task with function name and registration hints assert "Unknown task 'the_task' received - dropping" in caplog.text assert "Register via CLI (--tasks your.module:tasks)" in caplog.text # Message should be acknowledged (no pending messages) async with docket.redis() as redis: pending_info = await redis.xpending( name=docket.stream_key, groupname=docket.worker_group_name, ) assert pending_info["pending"] == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_custom_fallback_receives_original_args_kwargs _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 49 async def test_custom_fallback_receives_original_args_kwargs( docket: Docket, key_leak_checker: KeyCountChecker, ): """Custom fallback should receive the original task's args and kwargs.""" received_args: tuple[Any, ...] = () received_kwargs: dict[str, Any] = {} async def custom_fallback(*args: Any, **kwargs: Any) -> None: nonlocal received_args, received_kwargs received_args = args received_kwargs = kwargs async def original_task(x: int, y: str, z: bool = True) -> None: pass # pragma: no cover docket.register(original_task) await docket.add(original_task)(42, "hello", z=False) # Unregister before worker runs docket.tasks.pop("original_task") async with Worker( docket, fallback_task=custom_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert received_args == (42, "hello") assert received_kwargs == {"z": False} file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_fallback_can_access_function_name ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 83 async def test_fallback_can_access_function_name( docket: Docket, key_leak_checker: KeyCountChecker, ): """Fallback should be able to access the original function name via execution.function_name.""" captured_function_name: str | None = None async def custom_fallback( *args: Any, execution: Execution = CurrentExecution(), **kwargs: Any, ) -> None: nonlocal captured_function_name captured_function_name = execution.function_name async def my_special_task() -> None: pass # pragma: no cover docket.register(my_special_task) await docket.add(my_special_task)() # Unregister before worker runs docket.tasks.pop("my_special_task") async with Worker( docket, fallback_task=custom_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert captured_function_name == "my_special_task" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_fallback_dependency_injection _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 118 async def test_fallback_dependency_injection( docket: Docket, key_leak_checker: KeyCountChecker, ): """Fallback should support full dependency injection like regular tasks.""" captured_execution: Execution | None = None captured_logger: logging.LoggerAdapter[logging.Logger] | None = None async def custom_fallback( *args: Any, execution: Execution = CurrentExecution(), logger: logging.LoggerAdapter[logging.Logger] = TaskLogger(), **kwargs: Any, ) -> None: nonlocal captured_execution, captured_logger captured_execution = execution captured_logger = logger async def some_task(value: int) -> None: pass # pragma: no cover docket.register(some_task) await docket.add(some_task)(123) docket.tasks.pop("some_task") async with Worker( docket, fallback_task=custom_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert captured_execution is not None assert captured_execution.function_name == "some_task" assert captured_execution.args == (123,) assert captured_logger is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_fallback_custom_user_dependency ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 158 async def test_fallback_custom_user_dependency( docket: Docket, key_leak_checker: KeyCountChecker, ): """Fallback should support custom user dependencies via Depends().""" from docket.dependencies import Depends async def get_request_id() -> str: return "req-12345" captured_request_id: str | None = None async def custom_fallback( *args: Any, request_id: str = Depends(get_request_id), **kwargs: Any, ) -> None: nonlocal captured_request_id captured_request_id = request_id async def some_task() -> None: pass # pragma: no cover docket.register(some_task) await docket.add(some_task)() docket.tasks.pop("some_task") async with Worker( docket, fallback_task=custom_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert captured_request_id == "req-12345" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_fallback_return_completes_task _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 196 async def test_fallback_return_completes_task( docket: Docket, key_leak_checker: KeyCountChecker, ): """A fallback that returns normally should complete and ACK the task.""" async def custom_fallback(*args: Any, **kwargs: Any) -> str: return "handled" async def missing_task() -> None: pass # pragma: no cover docket.register(missing_task) await docket.add(missing_task)() docket.tasks.pop("missing_task") async with Worker( docket, fallback_task=custom_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() # No pending messages - task was completed async with docket.redis() as redis: pending_info = await redis.xpending( name=docket.stream_key, groupname=docket.worker_group_name, ) assert pending_info["pending"] == 0 assert await redis.xlen(docket.stream_key) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_fallback_exception_triggers_retry ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 230 async def test_fallback_exception_triggers_retry( docket: Docket, key_leak_checker: KeyCountChecker, ): """A fallback that raises should trigger retry behavior when using Retry dependency.""" from docket import Retry call_count = 0 async def failing_fallback( *args: Any, retry: Retry = Retry(attempts=5, delay=timedelta(milliseconds=10)), **kwargs: Any, ) -> None: nonlocal call_count call_count += 1 if call_count < 3: raise ValueError("Simulated failure") async def some_task() -> None: pass # pragma: no cover docket.register(some_task) await docket.add(some_task)() docket.tasks.pop("some_task") async with Worker( docket, fallback_task=failing_fallback, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert call_count == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_execution_function_name_matches_for_known_tasks ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_fallback_task.py, line 267 async def test_execution_function_name_matches_for_known_tasks( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ): """For known tasks, execution.function_name should match function.__name__.""" captured_function_name: str | None = None captured_function_dunder_name: str | None = None async def known_task(execution: Execution = CurrentExecution()) -> None: nonlocal captured_function_name, captured_function_dunder_name captured_function_name = execution.function_name captured_function_dunder_name = execution.function.__name__ await docket.add(known_task)() await worker.run_until_finished() assert captured_function_name == "known_task" assert captured_function_dunder_name == "known_task" assert captured_function_name == captured_function_dunder_name file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_retrying_task_is_not_marked_as_failed _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_handler_semantics.py, line 9 async def test_retrying_task_is_not_marked_as_failed(docket: Docket, worker: Worker): """When FailureHandler schedules a retry, the task state should not be FAILED.""" attempts = 0 async def the_task(retry: Retry = Retry(attempts=3)): nonlocal attempts attempts += 1 raise ValueError("fail") execution = await docket.add(the_task)() # Run just the first attempt await worker.run_at_most({execution.key: 1}) # Task should be cancelled (by run_at_most), not failed # The key point is that during retry, state was SCHEDULED, not FAILED await execution.sync() assert execution.state == ExecutionState.CANCELLED assert attempts == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_exhausted_retries_marks_task_as_failed _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_handler_semantics.py, line 30 async def test_exhausted_retries_marks_task_as_failed(docket: Docket, worker: Worker): """When all retries are exhausted, the task state should be FAILED.""" attempts = 0 async def the_task(retry: Retry = Retry(attempts=2)): nonlocal attempts attempts += 1 raise ValueError("fail") execution = await docket.add(the_task)() await worker.run_until_finished() await execution.sync() assert execution.state == ExecutionState.FAILED assert attempts == 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_failed_perpetual_task_is_rescheduled __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_handler_semantics.py, line 48 async def test_failed_perpetual_task_is_rescheduled(docket: Docket, worker: Worker): """A Perpetual task that fails should still be rescheduled for next execution.""" attempts = 0 async def the_task( perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ): nonlocal attempts attempts += 1 raise ValueError("fail") execution = await docket.add(the_task)() # Run 3 executions (all failures, but rescheduled each time) await worker.run_at_most({execution.key: 3}) # Task ran 3 times despite failing each time - proves rescheduling worked assert attempts == 3 # State is FAILED from the 3rd execution (run_at_most stops worker before # claiming the 4th execution that Perpetual scheduled) await execution.sync() assert execution.state == ExecutionState.FAILED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_retry_and_perpetual_work_together ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_handler_semantics.py, line 73 async def test_retry_and_perpetual_work_together(docket: Docket, worker: Worker): """A task can have both Retry and Perpetual - Retry handles failures first.""" # Track: (perpetual_run, retry_attempt, succeeded) runs: list[tuple[int, int, bool]] = [] perpetual_run = 0 async def task_with_both( retry: Retry = Retry(attempts=2), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ): nonlocal perpetual_run # First perpetual run: fail twice (exhaust retries), then perpetual reschedules # Second perpetual run: succeed on first attempt if perpetual_run == 0: perpetual_run = 1 elif retry.attempt == 1 and len([r for r in runs if r[0] == 2]) == 0: perpetual_run = 2 should_fail = perpetual_run == 1 runs.append((perpetual_run, retry.attempt, not should_fail)) if should_fail: raise ValueError("failing first perpetual run") execution = await docket.add(task_with_both)() # Run: 2 retries for first perpetual + 1 success for second perpetual = 3 runs await worker.run_at_most({execution.key: 3}) # First perpetual run: 2 attempts, both failed # Second perpetual run: 1 attempt, succeeded assert runs == [ (1, 1, False), # perpetual run 1, retry 1, failed (1, 2, False), # perpetual run 1, retry 2, failed (exhausted) (2, 1, True), # perpetual run 2, retry 1, succeeded ] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_perpetual_after_is_respected_on_failure ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_handler_semantics.py, line 112 async def test_perpetual_after_is_respected_on_failure(docket: Docket, worker: Worker): """Perpetual.after() delay is used even when the task fails.""" run_times: list[datetime] = [] async def failing_task(perpetual: Perpetual = Perpetual()): run_times.append(datetime.now(timezone.utc)) perpetual.after(timedelta(milliseconds=100)) raise ValueError("intentional failure") execution = await docket.add(failing_task)() await worker.run_at_most({execution.key: 2}) assert len(run_times) == 2 delay = run_times[1] - run_times[0] # Should have waited ~100ms between runs assert delay >= timedelta(milliseconds=50) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_leak_detection_catches_keys_without_ttl ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 16 async def test_leak_detection_catches_keys_without_ttl( redis_url: str, docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that the leak checker catches keys created without TTL.""" leaked_key = docket.key("leaked-key") async def task_that_leaks() -> None: """Task that intentionally creates a key without TTL.""" async with docket.redis() as redis: # Intentionally create a key without TTL await redis.set(leaked_key, "oops") docket.register(task_that_leaks) # Exempt the intentional leak from autouse checker key_leak_checker.add_exemption(leaked_key) await docket.add(task_that_leaks)() await worker.run_until_finished() # Manually verify it would have caught the leak (without exemption) async with docket.redis() as redis: # Verify the key actually exists without TTL ttl = await redis.ttl(leaked_key) assert ttl == -1, f"Expected leaked key to have no TTL, but got TTL={ttl}" # Remove exemption temporarily to verify detection works key_leak_checker.exemptions.remove(leaked_key) with pytest.raises(AssertionError, match="Memory leak detected"): await key_leak_checker.verify_remaining_keys_have_ttl() # Clean up the leaked key for teardown async with docket.redis() as redis: await redis.delete(leaked_key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_permanent_keys_are_exempt _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 56 async def test_permanent_keys_are_exempt( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that permanent infrastructure keys are not flagged as leaks.""" async def simple_task() -> None: pass docket.register(simple_task) await docket.add(simple_task)() await worker.run_until_finished() # Should not raise - permanent keys (stream, workers, strikes) are exempt await key_leak_checker.verify_remaining_keys_have_ttl() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_exemption_mechanism __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 74 async def test_exemption_mechanism( redis_url: str, docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that test-specific exemptions work.""" async def task_with_special_key() -> None: """Task that creates a key we want to exempt.""" async with docket.redis() as redis: await redis.set(f"{docket.name}:special-key", "intentional") docket.register(task_with_special_key) # Exempt this specific key key_leak_checker.add_exemption(f"{docket.name}:special-key") await docket.add(task_with_special_key)() await worker.run_until_finished() # Should not raise - we exempted the special key await key_leak_checker.verify_remaining_keys_have_ttl() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_multiple_exemptions __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 99 async def test_multiple_exemptions( redis_url: str, docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that multiple exemptions can be added.""" async def task_with_multiple_keys() -> None: """Task that creates multiple keys we want to exempt.""" async with docket.redis() as redis: await redis.set(f"{docket.name}:special-key-1", "intentional") await redis.set(f"{docket.name}:special-key-2", "intentional") docket.register(task_with_multiple_keys) # Exempt both keys key_leak_checker.add_exemption(f"{docket.name}:special-key-1") key_leak_checker.add_exemption(f"{docket.name}:special-key-2") await docket.add(task_with_multiple_keys)() await worker.run_until_finished() # Should not raise - both keys are exempted async with docket.redis() as redis: key_leak_checker.redis = redis await key_leak_checker.verify_remaining_keys_have_ttl() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_worker_task_sets_are_exempt ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 128 async def test_worker_task_sets_are_exempt( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that worker-tasks and task-workers sets are properly handled. These sets don't have explicit TTLs but are self-cleaning via worker heartbeat expiration, so they should be exempt from leak detection. """ async def simple_task() -> None: pass docket.register(simple_task) await docket.add(simple_task)() await worker.run_until_finished() # Should not raise - worker sets are exempt async with docket.redis() as redis: key_leak_checker.redis = redis await key_leak_checker.verify_remaining_keys_have_ttl() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_queue_is_cleaned_up __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_key_leak_protection.py, line 152 async def test_queue_is_cleaned_up( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker, ) -> None: """Verify that the queue sorted set is cleaned up after tasks complete.""" async def scheduled_task() -> None: pass docket.register(scheduled_task) # Schedule a task for the future await docket.add( scheduled_task, when=datetime.now(timezone.utc) + timedelta(seconds=1) )() # Wait for it to execute await worker.run_until_finished() # Queue should be empty after task completes async with docket.redis() as redis: key_leak_checker.redis = redis await key_leak_checker.verify_remaining_keys_have_ttl() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_docket_memory_backend _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_memory_backend.py, line 15 async def test_docket_memory_backend(): """Test using in-memory backend via memory:// URL.""" async with Docket(name="test-memory-docket", url="memory://") as docket: result_value = None async def simple_task(value: str) -> str: nonlocal result_value result_value = value return value docket.register(simple_task) # Add and run a task execution = await docket.add(simple_task)("test-value") assert execution.key # Run the task with a worker to exercise the memory backend polling path async with Worker(docket, concurrency=1) as worker: await worker.run_until_finished() # Verify the task actually ran assert result_value == "test-value" # Verify snapshot works snapshot = await docket.snapshot() assert snapshot.total_tasks == 0 # All tasks should be done file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clear_servers, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_multiple_memory_dockets ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_memory_backend.py, line 43 async def test_multiple_memory_dockets(): """Test that multiple in-memory dockets can coexist with separate data.""" async with ( Docket(name="docket-1", url="memory://") as docket1, Docket(name="docket-2", url="memory://") as docket2, ): result1 = None result2 = None async def task1(value: str) -> str: nonlocal result1 result1 = value return value async def task2(value: str) -> str: nonlocal result2 result2 = value return value docket1.register(task1) docket2.register(task2) # Add tasks to separate dockets await docket1.add(task1)("docket1-value") await docket2.add(task2)("docket2-value") # Run workers for each docket async with Worker(docket1, concurrency=1) as worker1: await worker1.run_until_finished() async with Worker(docket2, concurrency=1) as worker2: await worker2.run_until_finished() # Verify tasks ran with correct values assert result1 == "docket1-value" assert result2 == "docket2-value" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clear_servers, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_memory_backend_reuses_server ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_memory_backend.py, line 81 async def test_memory_backend_reuses_server(): """Test that identical memory:// URLs share the same FakeServer instance.""" result = None async def shared_task(value: str) -> str: nonlocal result result = value return value # Create first docket and run a task async with Docket(name="docket-shared", url="memory://") as docket1: docket1.register(shared_task) await docket1.add(shared_task)("shared-value") async with Worker(docket1, concurrency=1) as worker: await worker.run_until_finished() assert result == "shared-value" # Create another docket - identical memory:// URLs share the same server # but dockets are isolated by name-based key prefixes async with Docket(name="docket-shared-2", url="memory://") as docket2: # Verify we can interact with the shared server # This docket's tasks are isolated from docket1's by name prefix snapshot = await docket2.snapshot() assert snapshot.total_tasks == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clear_servers, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_different_memory_urls_are_isolated ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_memory_backend.py, line 109 async def test_different_memory_urls_are_isolated(): """Test that different memory:// URLs get completely separate FakeServer instances.""" result1 = None result2 = None async def task_for_server1(value: str) -> str: nonlocal result1 result1 = value return value async def task_for_server2(value: str) -> str: ... # Create two dockets with different memory:// URLs async with ( Docket(name="test", url="memory://server1") as docket1, Docket(name="test", url="memory://server2") as docket2, ): docket1.register(task_for_server1) docket2.register(task_for_server2) # Add task only to server1 await docket1.add(task_for_server1)("value-for-server1") # Verify server2 sees no tasks (they're on different FakeServer instances) snapshot2 = await docket2.snapshot() assert snapshot2.total_tasks == 0, "server2 should have no tasks" # Verify server1 has the task snapshot1 = await docket1.snapshot() assert snapshot1.total_tasks == 1, "server1 should have one task" # Run the worker for server1 async with Worker(docket1, concurrency=1) as worker1: await worker1.run_until_finished() assert result1 == "value-for-server1" assert result2 is None # task_for_server2 was never called # Verify we created two separate FakeServer instances server1 = get_memory_server("memory://server1") server2 = get_memory_server("memory://server2") assert server1 is not None assert server2 is not None assert server1 is not server2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clear_servers, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_memory_url_with_path_isolation _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_memory_backend.py, line 155 async def test_memory_url_with_path_isolation(): """Test that memory:// URLs with different paths are isolated.""" async with ( Docket(name="test", url="memory://localhost/db1") as docket1, Docket(name="test", url="memory://localhost/db2") as docket2, ): async def dummy_task() -> None: ... docket1.register(dummy_task) # Add task to db1 await docket1.add(dummy_task)() # db2 should be empty (different server) snapshot2 = await docket2.snapshot() assert snapshot2.total_tasks == 0 # db1 should have the task snapshot1 = await docket1.snapshot() assert snapshot1.total_tasks == 1 db1_server = get_memory_server("memory://localhost/db1") db2_server = get_memory_server("memory://localhost/db2") assert db1_server is not None assert db2_server is not None assert db1_server is not db2_server file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clear_servers, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 51 async def test_stale_perpetual_on_complete_overwrites_correct_successor( docket: Docket, worker: Worker ): """When a running Perpetual task is externally replaced and finishes after the replacement, its on_complete overwrites the correctly-timed successor.""" config: dict[str, timedelta] = {"interval": STALE_INTERVAL} task_a_started = asyncio.Event() let_a_finish = asyncio.Event() task_b_started = asyncio.Event() let_b_finish = asyncio.Event() executions: list[Execution] = [] async def racing_task( perpetual: Perpetual = Perpetual(), execution: Execution = CurrentExecution(), ): my_interval = config["interval"] call_number = len(executions) + 1 executions.append(execution) if call_number == 1: # Task A: signal start, block until released task_a_started.set() await asyncio.wait_for(let_a_finish.wait(), timeout=10) elif call_number == 2: # Task B: signal start, block until released task_b_started.set() await asyncio.wait_for(let_b_finish.wait(), timeout=10) # Task C (call 3): the successor — just runs perpetual.after(my_interval) # Schedule the initial task (A) await docket.add(racing_task, key=TASK_KEY)() # Run the worker in the background (allow 3 executions of this key) worker_task = asyncio.create_task(worker.run_at_most({TASK_KEY: 3})) # Wait for task A to start executing await asyncio.wait_for(task_a_started.wait(), timeout=10) # Simulate user changing config to a shorter interval config["interval"] = CORRECT_INTERVAL # External replace: force immediate re-execution (creates task B) replace_time = datetime.now(timezone.utc) await docket.replace(racing_task, replace_time, TASK_KEY)() # Wait for task B to start await asyncio.wait_for(task_b_started.wait(), timeout=10) # Let B finish first — B's on_complete schedules successor at B_time + 500ms let_b_finish.set() # Give B's on_complete time to complete await asyncio.sleep(0.05) # Now let A finish — A's on_complete overwrites B's successor with # A_start + 2s (stale), pushing the successor much further out let_a_finish.set() # Wait for all 3 executions to complete await asyncio.wait_for(worker_task, timeout=15) assert len(executions) == 3 # The third execution's `when` tells us which on_complete won the race. # # If B's on_complete won (correct): when ≈ B_completion + 500ms (< 1s from replace) # If A's on_complete won (stale): when ≈ A_completion + 2s (> 1s from replace) successor = executions[2] gap = successor.when - replace_time assert gap < timedelta(seconds=1), ( f"Stale execution won the race: successor scheduled " f"{gap.total_seconds():.2f}s after the correct replacement, " f"expected < 1s (correct interval is {CORRECT_INTERVAL})" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_stale_perpetual_on_complete_overwrites_correct_successor[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 51 async def test_stale_perpetual_on_complete_overwrites_correct_successor( docket: Docket, worker: Worker ): """When a running Perpetual task is externally replaced and finishes after the replacement, its on_complete overwrites the correctly-timed successor.""" config: dict[str, timedelta] = {"interval": STALE_INTERVAL} task_a_started = asyncio.Event() let_a_finish = asyncio.Event() task_b_started = asyncio.Event() let_b_finish = asyncio.Event() executions: list[Execution] = [] async def racing_task( perpetual: Perpetual = Perpetual(), execution: Execution = CurrentExecution(), ): my_interval = config["interval"] call_number = len(executions) + 1 executions.append(execution) if call_number == 1: # Task A: signal start, block until released task_a_started.set() await asyncio.wait_for(let_a_finish.wait(), timeout=10) elif call_number == 2: # Task B: signal start, block until released task_b_started.set() await asyncio.wait_for(let_b_finish.wait(), timeout=10) # Task C (call 3): the successor — just runs perpetual.after(my_interval) # Schedule the initial task (A) await docket.add(racing_task, key=TASK_KEY)() # Run the worker in the background (allow 3 executions of this key) worker_task = asyncio.create_task(worker.run_at_most({TASK_KEY: 3})) # Wait for task A to start executing await asyncio.wait_for(task_a_started.wait(), timeout=10) # Simulate user changing config to a shorter interval config["interval"] = CORRECT_INTERVAL # External replace: force immediate re-execution (creates task B) replace_time = datetime.now(timezone.utc) await docket.replace(racing_task, replace_time, TASK_KEY)() # Wait for task B to start await asyncio.wait_for(task_b_started.wait(), timeout=10) # Let B finish first — B's on_complete schedules successor at B_time + 500ms let_b_finish.set() # Give B's on_complete time to complete await asyncio.sleep(0.05) # Now let A finish — A's on_complete overwrites B's successor with # A_start + 2s (stale), pushing the successor much further out let_a_finish.set() # Wait for all 3 executions to complete await asyncio.wait_for(worker_task, timeout=15) assert len(executions) == 3 # The third execution's `when` tells us which on_complete won the race. # # If B's on_complete won (correct): when ≈ B_completion + 500ms (< 1s from replace) # If A's on_complete won (stale): when ≈ A_completion + 2s (> 1s from replace) successor = executions[2] gap = successor.when - replace_time assert gap < timedelta(seconds=1), ( f"Stale execution won the race: successor scheduled " f"{gap.total_seconds():.2f}s after the correct replacement, " f"expected < 1s (correct interval is {CORRECT_INTERVAL})" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_is_superseded_after_replace[execution_ttl=0] ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 133 async def test_is_superseded_after_replace(docket: Docket): """An execution becomes superseded when the same key is rescheduled.""" async def noop(): pass # pragma: no cover await docket.add(noop, key="gen-test")() # Build an Execution from the stream message to capture its generation async with docket.redis() as redis: messages = await redis.xrange(docket.stream_key, count=1) _, message = messages[0] original = await Execution.from_message(docket, message) assert original.generation == 1 assert not await original.is_superseded() # Replacing bumps the generation in the runs hash await docket.replace(noop, datetime.now(timezone.utc), "gen-test")() assert await original.is_superseded() # Generation 0 (pre-tracking) is never considered superseded, even when # the runs hash has a higher generation — this is the mixed-version case pre_tracking = Execution( docket=docket, function=noop, args=(), kwargs={}, key="gen-test", when=datetime.now(timezone.utc), attempt=1, generation=0, ) assert not await pre_tracking.is_superseded() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_is_superseded_after_replace[execution_ttl=60s] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 133 async def test_is_superseded_after_replace(docket: Docket): """An execution becomes superseded when the same key is rescheduled.""" async def noop(): pass # pragma: no cover await docket.add(noop, key="gen-test")() # Build an Execution from the stream message to capture its generation async with docket.redis() as redis: messages = await redis.xrange(docket.stream_key, count=1) _, message = messages[0] original = await Execution.from_message(docket, message) assert original.generation == 1 assert not await original.is_superseded() # Replacing bumps the generation in the runs hash await docket.replace(noop, datetime.now(timezone.utc), "gen-test")() assert await original.is_superseded() # Generation 0 (pre-tracking) is never considered superseded, even when # the runs hash has a higher generation — this is the mixed-version case pre_tracking = Execution( docket=docket, function=noop, args=(), kwargs={}, key="gen-test", when=datetime.now(timezone.utc), attempt=1, generation=0, ) assert not await pre_tracking.is_superseded() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_superseded_message_skipped_before_execution[execution_ttl=0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 170 async def test_superseded_message_skipped_before_execution( docket: Docket, worker: Worker ): """A stale message in the stream is skipped without running the function. This covers the case where a message was already pending (e.g. after a worker crash and redelivery) when the task was replaced. The runs hash has a newer generation so the worker bails before claim(). """ calls: list[str] = [] async def tracked_task(): calls.append("ran") # pragma: no cover await docket.add(tracked_task, key="head-check")() # Bump the generation in the runs hash without touching the stream message. # This simulates the state after a replace where the old message is still # pending in the consumer group (e.g. redelivery after crash). runs_key = docket.key("runs:head-check") async with docket.redis() as redis: await redis.hincrby(runs_key, "generation", 1) # type: ignore[misc] await worker.run_until_finished() assert calls == [], "superseded task should not have executed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_superseded_message_skipped_before_execution[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 170 async def test_superseded_message_skipped_before_execution( docket: Docket, worker: Worker ): """A stale message in the stream is skipped without running the function. This covers the case where a message was already pending (e.g. after a worker crash and redelivery) when the task was replaced. The runs hash has a newer generation so the worker bails before claim(). """ calls: list[str] = [] async def tracked_task(): calls.append("ran") # pragma: no cover await docket.add(tracked_task, key="head-check")() # Bump the generation in the runs hash without touching the stream message. # This simulates the state after a replace where the old message is still # pending in the consumer group (e.g. redelivery after crash). runs_key = docket.key("runs:head-check") async with docket.redis() as redis: await redis.hincrby(runs_key, "generation", 1) # type: ignore[misc] await worker.run_until_finished() assert calls == [], "superseded task should not have executed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_old_message_without_generation_runs_normally[execution_ttl=0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 198 async def test_old_message_without_generation_runs_normally( docket: Docket, worker: Worker ): """A message from pre-generation code (no generation field) still executes. Simulates the old→new upgrade: old code scheduled a task without the generation field in either the stream message or the runs hash. The new worker should treat generation=0 as "unknown" and run it normally. """ calls: list[str] = [] async def legacy_task(): calls.append("ran") docket.register(legacy_task) # Manually construct a stream message the way old code would — no generation field message = { b"key": b"old-to-new", b"when": datetime.now(timezone.utc).isoformat().encode(), b"function": b"legacy_task", b"args": cloudpickle.dumps(()), # type: ignore[no-untyped-call] b"kwargs": cloudpickle.dumps({}), # type: ignore[no-untyped-call] b"attempt": b"1", } async with docket.redis() as redis: message_id = await redis.xadd(docket.stream_key, message) # type: ignore[arg-type] # Set up runs hash without generation, as old code would await redis.hset( # type: ignore[misc] docket.key("runs:old-to-new"), mapping={ "state": "queued", "when": str(datetime.now(timezone.utc).timestamp()), "known": str(datetime.now(timezone.utc).timestamp()), "stream_id": message_id, "function": "legacy_task", }, ) await worker.run_until_finished() assert calls == ["ran"], "old message without generation should execute normally" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_old_message_without_generation_runs_normally[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 198 async def test_old_message_without_generation_runs_normally( docket: Docket, worker: Worker ): """A message from pre-generation code (no generation field) still executes. Simulates the old→new upgrade: old code scheduled a task without the generation field in either the stream message or the runs hash. The new worker should treat generation=0 as "unknown" and run it normally. """ calls: list[str] = [] async def legacy_task(): calls.append("ran") docket.register(legacy_task) # Manually construct a stream message the way old code would — no generation field message = { b"key": b"old-to-new", b"when": datetime.now(timezone.utc).isoformat().encode(), b"function": b"legacy_task", b"args": cloudpickle.dumps(()), # type: ignore[no-untyped-call] b"kwargs": cloudpickle.dumps({}), # type: ignore[no-untyped-call] b"attempt": b"1", } async with docket.redis() as redis: message_id = await redis.xadd(docket.stream_key, message) # type: ignore[arg-type] # Set up runs hash without generation, as old code would await redis.hset( # type: ignore[misc] docket.key("runs:old-to-new"), mapping={ "state": "queued", "when": str(datetime.now(timezone.utc).timestamp()), "known": str(datetime.now(timezone.utc).timestamp()), "stream_id": message_id, "function": "legacy_task", }, ) await worker.run_until_finished() assert calls == ["ran"], "old message without generation should execute normally" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 244 async def test_new_task_moved_by_old_scheduler_runs_normally( docket: Docket, worker: Worker ): """A task scheduled by new code but moved to stream by old scheduler runs. Simulates the new→old scheduler→new worker upgrade path: new code schedules a task (generation=1 in runs hash), but an older worker's scheduler Lua moves it from queue to stream WITHOUT the generation field. The new worker receives generation=0 from the message, sees generation=1 in the runs hash, but still runs the task because generation=0 is treated as "pre-tracking". """ calls: list[str] = [] async def upgraded_task(): calls.append("ran") docket.register(upgraded_task) # Schedule with new code to get generation=1 in the runs hash future = datetime.now(timezone.utc) + timedelta(hours=1) await docket.add(upgraded_task, when=future, key="new-old-new")() async with docket.redis() as redis: # Verify new code set generation=1 in the runs hash gen = await redis.hget(docket.key("runs:new-old-new"), "generation") # type: ignore[misc] assert gen == b"1" # Simulate old scheduler moving from queue to stream WITHOUT generation parked_data: dict[bytes, bytes] = await redis.hgetall( # type: ignore[misc] docket.parked_task_key("new-old-new") ) stream_message: dict[bytes, bytes] = { k: v for k, v in parked_data.items() # type: ignore[misc] if k != b"generation" # old scheduler doesn't know about this field } message_id = await redis.xadd(docket.stream_key, stream_message) # type: ignore[arg-type] # Clean up queue/parked state as the old scheduler would await redis.zrem(docket.queue_key, "new-old-new") await redis.delete(docket.parked_task_key("new-old-new")) await redis.hset( # type: ignore[misc] docket.key("runs:new-old-new"), mapping={"state": "queued", "stream_id": message_id}, ) await worker.run_until_finished() assert calls == ["ran"], ( "task with generation=0 in message but generation=1 in runs hash " "should still execute (generation=0 means pre-tracking)" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_new_task_moved_by_old_scheduler_runs_normally[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 244 async def test_new_task_moved_by_old_scheduler_runs_normally( docket: Docket, worker: Worker ): """A task scheduled by new code but moved to stream by old scheduler runs. Simulates the new→old scheduler→new worker upgrade path: new code schedules a task (generation=1 in runs hash), but an older worker's scheduler Lua moves it from queue to stream WITHOUT the generation field. The new worker receives generation=0 from the message, sees generation=1 in the runs hash, but still runs the task because generation=0 is treated as "pre-tracking". """ calls: list[str] = [] async def upgraded_task(): calls.append("ran") docket.register(upgraded_task) # Schedule with new code to get generation=1 in the runs hash future = datetime.now(timezone.utc) + timedelta(hours=1) await docket.add(upgraded_task, when=future, key="new-old-new")() async with docket.redis() as redis: # Verify new code set generation=1 in the runs hash gen = await redis.hget(docket.key("runs:new-old-new"), "generation") # type: ignore[misc] assert gen == b"1" # Simulate old scheduler moving from queue to stream WITHOUT generation parked_data: dict[bytes, bytes] = await redis.hgetall( # type: ignore[misc] docket.parked_task_key("new-old-new") ) stream_message: dict[bytes, bytes] = { k: v for k, v in parked_data.items() # type: ignore[misc] if k != b"generation" # old scheduler doesn't know about this field } message_id = await redis.xadd(docket.stream_key, stream_message) # type: ignore[arg-type] # Clean up queue/parked state as the old scheduler would await redis.zrem(docket.queue_key, "new-old-new") await redis.delete(docket.parked_task_key("new-old-new")) await redis.hset( # type: ignore[misc] docket.key("runs:new-old-new"), mapping={"state": "queued", "stream_id": message_id}, ) await worker.run_until_finished() assert calls == ["ran"], ( "task with generation=0 in message but generation=1 in runs hash " "should still execute (generation=0 means pre-tracking)" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_replace_skips_stale_stream_message[execution_ttl=0] __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 298 async def test_replace_skips_stale_stream_message(docket: Docket, worker: Worker): """When replace() can't XDEL a message the worker already read, the generation check prevents the stale message from executing. This simulates the tight race where XREADGROUP delivers a message to the worker before replace()'s XDEL can remove it, so the stream has both the old (gen=1) and new (gen=2) messages. Only gen=2 should run. """ calls: list[int] = [] async def tracked_task( execution: Execution = CurrentExecution(), ): calls.append(execution.generation) # Schedule the task (gen=1 in stream and runs hash) await docket.add(tracked_task, key="replace-race")() # Grab the gen=1 message before replace() deletes it async with docket.redis() as redis: messages = await redis.xrange(docket.stream_key, count=10) stale_message = next(msg for _, msg in messages if msg[b"key"] == b"replace-race") # replace() deletes gen=1 from the stream and adds gen=2 await docket.replace(tracked_task, datetime.now(timezone.utc), "replace-race")() # Re-inject the stale gen=1 message as if the worker had already read it # via XREADGROUP before the XDEL could remove it async with docket.redis() as redis: await redis.xadd(docket.stream_key, stale_message) # type: ignore[arg-type] await worker.run_until_finished() # Only the gen=2 message should have executed assert calls == [2], ( f"Expected only generation 2 to execute, got generations {calls}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_replace_skips_stale_stream_message[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 298 async def test_replace_skips_stale_stream_message(docket: Docket, worker: Worker): """When replace() can't XDEL a message the worker already read, the generation check prevents the stale message from executing. This simulates the tight race where XREADGROUP delivers a message to the worker before replace()'s XDEL can remove it, so the stream has both the old (gen=1) and new (gen=2) messages. Only gen=2 should run. """ calls: list[int] = [] async def tracked_task( execution: Execution = CurrentExecution(), ): calls.append(execution.generation) # Schedule the task (gen=1 in stream and runs hash) await docket.add(tracked_task, key="replace-race")() # Grab the gen=1 message before replace() deletes it async with docket.redis() as redis: messages = await redis.xrange(docket.stream_key, count=10) stale_message = next(msg for _, msg in messages if msg[b"key"] == b"replace-race") # replace() deletes gen=1 from the stream and adds gen=2 await docket.replace(tracked_task, datetime.now(timezone.utc), "replace-race")() # Re-inject the stale gen=1 message as if the worker had already read it # via XREADGROUP before the XDEL could remove it async with docket.redis() as redis: await redis.xadd(docket.stream_key, stale_message) # type: ignore[arg-type] await worker.run_until_finished() # Only the gen=2 message should have executed assert calls == [2], ( f"Expected only generation 2 to execute, got generations {calls}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_perpetual_successor_survives_mark_as_terminal[execution_ttl=0] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 337 async def test_perpetual_successor_survives_mark_as_terminal( docket: Docket, worker: Worker ): """After a Perpetual task completes, the successor's runs hash must survive. on_complete calls docket.replace() which writes the successor's state (generation, state=queued/scheduled) to the runs hash. Then the worker calls mark_as_completed → _mark_as_terminal which either overwrites state=queued with state=completed or (with execution_ttl=0) deletes the entire hash. Either way the successor becomes invisible. """ before = datetime.now(timezone.utc) executed = asyncio.Event() async def simple_perpetual(perpetual: Perpetual = Perpetual()): perpetual.after(timedelta(hours=1)) executed.set() key = "successor-survives" await docket.add(simple_perpetual, key=key)() # Can't use run_at_most here: with {key: 1} the strike blocks # on_complete's docket.replace(); with {key: 2} the successor in the # queue keeps run_until_finished looping forever. So we run the worker # in the background, wait for the execution to complete, then cancel. worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(executed.wait(), timeout=10) await asyncio.sleep(0.1) worker_task.cancel() with contextlib.suppress(asyncio.CancelledError): await worker_task # Check the runs hash directly — it should have the successor's state, # not "completed" and not deleted. runs_key = docket.key(f"runs:{key}") async with docket.redis() as redis: runs_data: dict[bytes, bytes] = await redis.hgetall(runs_key) # type: ignore[misc] assert runs_data, ( f"runs hash for {key!r} was deleted (execution_ttl={docket.execution_ttl})" ) state: str = runs_data[b"state"].decode() # type: ignore[union-attr] assert state == "scheduled", ( f"runs hash state is {state!r}, expected 'scheduled' " f"(execution_ttl={docket.execution_ttl})" ) when = float(runs_data[b"when"]) # type: ignore[arg-type] expected_earliest = (before + timedelta(hours=1) - timedelta(seconds=5)).timestamp() expected_latest = (before + timedelta(hours=1) + timedelta(seconds=5)).timestamp() assert expected_earliest <= when <= expected_latest, ( f"Successor when={when}, expected ~1h after {before.timestamp()} " f"(execution_ttl={docket.execution_ttl})" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_perpetual_successor_survives_mark_as_terminal[execution_ttl=60s] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_race.py, line 337 async def test_perpetual_successor_survives_mark_as_terminal( docket: Docket, worker: Worker ): """After a Perpetual task completes, the successor's runs hash must survive. on_complete calls docket.replace() which writes the successor's state (generation, state=queued/scheduled) to the runs hash. Then the worker calls mark_as_completed → _mark_as_terminal which either overwrites state=queued with state=completed or (with execution_ttl=0) deletes the entire hash. Either way the successor becomes invisible. """ before = datetime.now(timezone.utc) executed = asyncio.Event() async def simple_perpetual(perpetual: Perpetual = Perpetual()): perpetual.after(timedelta(hours=1)) executed.set() key = "successor-survives" await docket.add(simple_perpetual, key=key)() # Can't use run_at_most here: with {key: 1} the strike blocks # on_complete's docket.replace(); with {key: 2} the successor in the # queue keeps run_until_finished looping forever. So we run the worker # in the background, wait for the execution to complete, then cancel. worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(executed.wait(), timeout=10) await asyncio.sleep(0.1) worker_task.cancel() with contextlib.suppress(asyncio.CancelledError): await worker_task # Check the runs hash directly — it should have the successor's state, # not "completed" and not deleted. runs_key = docket.key(f"runs:{key}") async with docket.redis() as redis: runs_data: dict[bytes, bytes] = await redis.hgetall(runs_key) # type: ignore[misc] assert runs_data, ( f"runs hash for {key!r} was deleted (execution_ttl={docket.execution_ttl})" ) state: str = runs_data[b"state"].decode() # type: ignore[union-attr] assert state == "scheduled", ( f"runs hash state is {state!r}, expected 'scheduled' " f"(execution_ttl={docket.execution_ttl})" ) when = float(runs_data[b"when"]) # type: ignore[arg-type] expected_earliest = (before + timedelta(hours=1) - timedelta(seconds=5)).timestamp() expected_latest = (before + timedelta(hours=1) + timedelta(seconds=5)).timestamp() assert expected_earliest <= when <= expected_latest, ( f"Successor when={when}, expected ~1h after {before.timestamp()} " f"(execution_ttl={docket.execution_ttl})" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_perpetual_task_with_ttl_zero ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 15 async def test_perpetual_task_with_ttl_zero(zero_ttl_docket: Docket) -> None: """Perpetual tasks should work correctly with TTL of 0.""" executions: list[str] = [] async def perpetual_task( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ) -> None: executions.append(execution.key) if len(executions) >= 3: perpetual.cancel() zero_ttl_docket.register(perpetual_task) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(perpetual_task)() await worker.run_at_most({execution.key: 3}) assert len(executions) == 3 # All executions should have the SAME key assert len(set(executions)) == 1, "Perpetual task should reuse same key" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_perpetual_task_state_isolation _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 38 async def test_perpetual_task_state_isolation(docket: Docket, worker: Worker) -> None: """Perpetual tasks with the same key should execute independently.""" executions: list[str] = [] async def perpetual_task( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ) -> None: executions.append(execution.key) if len(executions) >= 3: perpetual.cancel() docket.register(perpetual_task) execution = await docket.add(perpetual_task)() await worker.run_at_most({execution.key: 3}) assert len(executions) == 3 # Verify all executions use the same key assert len(set(executions)) == 1, "Perpetual executions should share the same key" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_perpetual_task_no_state_accumulation_with_ttl_zero ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 59 async def test_perpetual_task_no_state_accumulation_with_ttl_zero( zero_ttl_docket: Docket, ) -> None: """Perpetual tasks with TTL=0 should not accumulate state records.""" executions: list[str] = [] async def perpetual_task( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ) -> None: executions.append(execution.key) if len(executions) >= 5: perpetual.cancel() zero_ttl_docket.register(perpetual_task) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(perpetual_task)() await worker.run_at_most({execution.key: 5}) assert len(executions) == 5 # Small delay for Redis to process expirations await asyncio.sleep(0.2) # Check that we're not accumulating state records # With TTL=0, state records should be deleted immediately async with zero_ttl_docket.redis() as redis: # pragma: no branch keys = await redis.keys(f"{zero_ttl_docket.name}:runs:*") # type: ignore assert len(keys) == 0, f"Should have no state records, found {len(keys)}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_rapid_perpetual_tasks_no_conflicts ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 91 async def test_rapid_perpetual_tasks_no_conflicts( docket: Docket, worker: Worker ) -> None: """Rapid perpetual tasks should not have state conflicts.""" executions: list[str] = [] async def rapid_perpetual( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(0)), ) -> None: executions.append(execution.key) if len(executions) >= 10: perpetual.cancel() docket.register(rapid_perpetual) execution = await docket.add(rapid_perpetual)() await worker.run_at_most({execution.key: 10}) assert len(executions) == 10 # All executions should have the SAME key (perpetual tasks reuse key) assert len(set(executions)) == 1, "Perpetual executions should share same key" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_perpetual_same_key_no_state_accumulation ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 114 async def test_perpetual_same_key_no_state_accumulation( docket: Docket, worker: Worker ) -> None: """Multiple cycles of perpetual task with same key should not accumulate state records.""" executions: list[str] = [] async def perpetual_task( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(0)), ) -> None: executions.append(execution.key) if len(executions) >= 10: perpetual.cancel() docket.register(perpetual_task) execution = await docket.add(perpetual_task)() await worker.run_at_most({execution.key: 10}) assert len(executions) == 10 # All should use the same key assert len(set(executions)) == 1 # Small delay for state TTL to take effect await asyncio.sleep(0.5) # Check state records - with default 15min TTL, the last completed state should exist async with docket.redis() as redis: # Since all executions share the same key, there should be exactly 1 state record # Use SCAN instead of KEYS because KEYS with hash-tagged patterns doesn't work # reliably in cluster mode (curly braces confuse pattern matching) pattern = f"{docket.prefix}:runs:*" keys: list[bytes] = [] async for key in redis.scan_iter(match=pattern): # type: ignore keys.append(key) # type: ignore[reportUnknownArgumentType] assert len(keys) == 1, ( f"Should have exactly one state record, found {len(keys)}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_perpetual_task_state_transitions_with_same_key _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 154 async def test_perpetual_task_state_transitions_with_same_key( docket: Docket, worker: Worker ) -> None: """Each cycle of a perpetual task should use the same key.""" executions: list[str] = [] async def perpetual_tracking_keys( execution: Execution = CurrentExecution(), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=20)), ) -> None: executions.append(execution.key) if len(executions) >= 5: perpetual.cancel() docket.register(perpetual_tracking_keys) execution = await docket.add(perpetual_tracking_keys)() await worker.run_at_most({execution.key: 5}) assert len(executions) == 5 # All should share the same key assert len(set(executions)) == 1, "All iterations should share the same key" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_perpetual_publishes_completed_event[ttl_zero] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 198 async def test_perpetual_publishes_completed_event(pubsub_docket: Docket): """Perpetual tasks must still publish a completed state event on pub/sub. _mark_as_terminal skips the runs hash write when the successor has already been scheduled, but the pub/sub notification must still fire so that callers waiting via execution.subscribe() or get_result() see completion. """ async def simple_perpetual(perpetual: Perpetual = Perpetual()): perpetual.after(timedelta(hours=1)) execution = await pubsub_docket.add(simple_perpetual, key="pubsub-completion")() state_events: list[StateEvent] = [] async def collect_events(): async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": state_events.append(event) # type: ignore[arg-type] if event["state"] == ExecutionState.COMPLETED: return async with Worker( pubsub_docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: collector = asyncio.create_task(collect_events()) worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(collector, timeout=10) worker_task.cancel() with contextlib.suppress(asyncio.CancelledError): await worker_task states = [e["state"] for e in state_events] assert ExecutionState.COMPLETED in states, ( f"Expected COMPLETED in pub/sub state events, got {states}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_perpetual_publishes_completed_event[default_ttl] ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_perpetual_state.py, line 198 async def test_perpetual_publishes_completed_event(pubsub_docket: Docket): """Perpetual tasks must still publish a completed state event on pub/sub. _mark_as_terminal skips the runs hash write when the successor has already been scheduled, but the pub/sub notification must still fire so that callers waiting via execution.subscribe() or get_result() see completion. """ async def simple_perpetual(perpetual: Perpetual = Perpetual()): perpetual.after(timedelta(hours=1)) execution = await pubsub_docket.add(simple_perpetual, key="pubsub-completion")() state_events: list[StateEvent] = [] async def collect_events(): async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": state_events.append(event) # type: ignore[arg-type] if event["state"] == ExecutionState.COMPLETED: return async with Worker( pubsub_docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: collector = asyncio.create_task(collect_events()) worker_task = asyncio.create_task(worker.run_until_finished()) await asyncio.wait_for(collector, timeout=10) worker_task.cancel() with contextlib.suppress(asyncio.CancelledError): await worker_task states = [e["state"] for e in state_events] assert ExecutionState.COMPLETED in states, ( f"Expected COMPLETED in pub/sub state events, got {states}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pubsub_docket, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_progress_create ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 33 async def test_progress_create(execution: Execution): """Progress.create() should initialize instance from Redis.""" await execution.claim("worker-1") progress = execution.progress # Set some values await progress.set_total(100) await progress.increment(5) await progress.set_message("Test message") # Now create a new instance using create() progress2 = await ExecutionProgress.create(execution.docket, "test-key") # Verify it loaded the data from Redis assert progress2.current == 5 assert progress2.total == 100 assert progress2.message == "Test message" assert progress2.updated_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_progress_set_total ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 53 async def test_progress_set_total(progress: ExecutionProgress): """Progress should be able to set total value.""" await progress.set_total(100) assert progress.total == 100 assert progress.updated_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_progress_set_total_invalid _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 61 async def test_progress_set_total_invalid(docket: Docket): """Progress should raise an error if total is less than 1.""" progress = ExecutionProgress(docket, "test-key") with pytest.raises(ValueError): await progress.set_total(0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_progress_increment_invalid _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 68 async def test_progress_increment_invalid(docket: Docket): """Progress should raise an error if amount is less than 1.""" progress = ExecutionProgress(docket, "test-key") with pytest.raises(ValueError): await progress.increment(0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_progress_increment ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 75 async def test_progress_increment(progress: ExecutionProgress): """Progress should atomically increment current value.""" # Increment multiple times await progress.increment() await progress.increment() await progress.increment(2) assert progress.current == 4 # 0 + 1 + 1 + 2 = 4 assert progress.updated_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_progress_set_message __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 86 async def test_progress_set_message(progress: ExecutionProgress): """Progress should be able to set status message.""" await progress.set_message("Processing items...") assert progress.message == "Processing items..." assert progress.updated_at is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_progress_dependency_injection _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 94 async def test_progress_dependency_injection(docket: Docket, worker: Worker): """Progress dependency should be injected into task functions.""" progress_values: list[int] = [] async def task_with_progress(progress: Progress = Progress()): await progress.set_total(10) for i in range(10): await asyncio.sleep(0.001) await progress.increment() await progress.set_message(f"Processing item {i + 1}") # Capture progress data assert progress.current is not None progress_values.append(progress.current) await docket.add(task_with_progress)() await worker.run_until_finished() # Verify progress was tracked assert len(progress_values) > 0 assert progress_values[-1] == 10 # Should reach 10 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_progress_deleted_on_completion _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 117 async def test_progress_deleted_on_completion(docket: Docket, worker: Worker): """Progress data should be deleted when task completes.""" async def task_with_progress(progress: Progress = Progress()): await progress.set_total(5) await progress.increment() execution = await docket.add(task_with_progress)() # Before execution, no progress await execution.progress.sync() assert execution.progress.current is None await worker.run_until_finished() # After completion, progress should be deleted await execution.progress.sync() assert execution.progress.current is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_progress_with_multiple_increments ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 137 async def test_progress_with_multiple_increments(docket: Docket, worker: Worker): """Test progress tracking with realistic usage pattern.""" async def process_items(items: list[int], progress: Progress = Progress()): await progress.set_total(len(items)) await progress.set_message("Starting processing") for i in range(len(items)): await asyncio.sleep(0.001) # Simulate work await progress.increment() await progress.set_message(f"Processed item {i + 1}/{len(items)}") await progress.set_message("All items processed") items = list(range(20)) execution = await docket.add(process_items)(items) await worker.run_until_finished() # Verify final state await execution.sync() assert execution.state == ExecutionState.COMPLETED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_progress_without_total _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 161 async def test_progress_without_total(docket: Docket, worker: Worker): """Progress should work even without setting total.""" async def task_without_total(progress: Progress = Progress()): for _ in range(5): await progress.increment() await asyncio.sleep(0.001) execution = await docket.add(task_without_total)() await worker.run_until_finished() await execution.sync() assert execution.state == ExecutionState.COMPLETED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_concurrent_progress_updates ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_basics.py, line 177 async def test_concurrent_progress_updates(progress: ExecutionProgress): """Progress updates should be atomic and safe for concurrent access.""" # Simulate concurrent increments async def increment_many(): for _ in range(10): await progress.increment() await asyncio.gather( increment_many(), increment_many(), increment_many(), ) # Sync to ensure we have the latest value from Redis await progress.sync() # Should be exactly 30 due to atomic HINCRBY assert progress.current == 30 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_progress_publish_events ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 33 async def test_progress_publish_events(progress: ExecutionProgress): """Progress updates should publish events to pub/sub channel.""" # Set up subscriber in background events: list[ProgressEvent] = [] async def collect_events(): async for event in progress.subscribe(): # pragma: no cover events.append(event) if len(events) >= 3: # Collect 3 events then stop break subscriber_task = asyncio.create_task(collect_events()) # Give subscriber time to connect await asyncio.sleep(0.1) # Publish updates await progress.set_total(100) await progress.increment(10) await progress.set_message("Processing...") # Wait for subscriber to collect events await asyncio.wait_for(subscriber_task, timeout=2.0) # Verify we received progress events assert len(events) >= 3 # Check set_total event total_event = next(e for e in events if e.get("total") == 100) assert total_event["type"] == "progress" assert total_event["key"] == "test-key" assert "updated_at" in total_event # Check increment event increment_event = next(e for e in events if e.get("current") == 10) assert increment_event["type"] == "progress" assert increment_event["current"] == 10 # Check message event message_event = next(e for e in events if e.get("message") == "Processing...") assert message_event["type"] == "progress" assert message_event["message"] == "Processing..." file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_state_publish_events __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 77 async def test_state_publish_events(docket: Docket, the_task: AsyncMock): """State changes should publish events to pub/sub channel.""" # Note: This test verifies the pub/sub mechanism works. # Pub/sub is skipped for memory:// backend, so this test effectively # documents the expected behavior for real Redis backends. execution = await docket.add(the_task, key="test-key")() # Verify state was set correctly assert execution.state == ExecutionState.QUEUED # Verify state record exists in Redis await execution.sync() assert execution.state == ExecutionState.QUEUED file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_run_subscribe_both_state_and_progress _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 93 async def test_run_subscribe_both_state_and_progress(execution: Execution): """Run.subscribe() should yield both state and progress events.""" # Set up subscriber in background all_events: list[StateEvent | ProgressEvent] = [] async def collect_events(): async for event in execution.subscribe(): # pragma: no cover all_events.append(event) # Stop after we get a running state and some progress if ( len( [ e for e in all_events if e["type"] == "state" and e["state"] == ExecutionState.RUNNING ] ) > 0 and len([e for e in all_events if e["type"] == "progress"]) >= 3 ): break subscriber_task = asyncio.create_task(collect_events()) # Give subscriber time to connect await asyncio.sleep(0.1) # Publish mixed state and progress events await execution.claim("worker-1") await execution.progress.set_total(50) await execution.progress.increment(5) # Wait for subscriber to collect events await asyncio.wait_for(subscriber_task, timeout=2.0) # Verify we got both types state_events = [e for e in all_events if e["type"] == "state"] progress_events = [e for e in all_events if e["type"] == "progress"] assert len(state_events) >= 1 assert len(progress_events) >= 2 # Verify state event running_event = next( e for e in state_events if e["state"] == ExecutionState.RUNNING ) assert running_event["worker"] == "worker-1" # Verify progress events total_event = next(e for e in progress_events if e.get("total") == 50) assert total_event["current"] is not None and total_event["current"] >= 0 increment_event = next(e for e in progress_events if e.get("current") == 5) assert increment_event["current"] == 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_completed_state_publishes_event ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 149 async def test_completed_state_publishes_event(execution: Execution): """Completed state should publish event with completed_at timestamp.""" # Set up subscriber events: list[StateEvent] = [] async def collect_events(): async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": events.append(event) if any(e["state"] == ExecutionState.COMPLETED for e in events): break subscriber_task = asyncio.create_task(collect_events()) await asyncio.sleep(0.1) await execution.claim("worker-1") await execution.mark_as_completed() await asyncio.wait_for(subscriber_task, timeout=2.0) # Find completed event completed_event = next(e for e in events if e["state"] == ExecutionState.COMPLETED) assert completed_event["type"] == "state" assert "completed_at" in completed_event file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_failed_state_publishes_event_with_error ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 175 async def test_failed_state_publishes_event_with_error(execution: Execution): """Failed state should publish event with error message.""" # Set up subscriber events: list[StateEvent] = [] async def collect_events(): async for event in execution.subscribe(): # pragma: no cover if event["type"] == "state": events.append(event) if any(e["state"] == ExecutionState.FAILED for e in events): break subscriber_task = asyncio.create_task(collect_events()) await asyncio.sleep(0.1) await execution.claim("worker-1") await execution.mark_as_failed("Something went wrong!") await asyncio.wait_for(subscriber_task, timeout=2.0) # Find failed event failed_event = next(e for e in events if e["state"] == ExecutionState.FAILED) assert failed_event["type"] == "state" assert failed_event["error"] == "Something went wrong!" assert "completed_at" in failed_event file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_end_to_end_progress_monitoring_with_worker _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 202 async def test_end_to_end_progress_monitoring_with_worker( docket: Docket, worker: Worker ): """Test complete end-to-end progress monitoring with real worker execution.""" collected_events: list[StateEvent | ProgressEvent] = [] async def task_with_progress(progress: Progress = Progress()): """Task that reports progress as it executes.""" await progress.set_total(5) await progress.set_message("Starting work") for i in range(5): await asyncio.sleep(0.01) await progress.increment() await progress.set_message(f"Processing step {i + 1}/5") await progress.set_message("Work complete") # Schedule the task execution = await docket.add(task_with_progress)() # Start subscriber to collect events async def collect_events(): async for event in execution.subscribe(): # pragma: no cover collected_events.append(event) # Stop when we reach completed state if event["type"] == "state" and event["state"] == ExecutionState.COMPLETED: break subscriber_task = asyncio.create_task(collect_events()) # Give subscriber time to connect await asyncio.sleep(0.1) # Run the worker await worker.run_until_finished() # Wait for subscriber to finish await asyncio.wait_for(subscriber_task, timeout=5.0) # Verify we collected comprehensive events assert len(collected_events) > 0 # Extract event types state_events: list[StateEvent] = [ e for e in collected_events if e["type"] == "state" ] progress_events = [e for e in collected_events if e["type"] == "progress"] # Verify state transitions occurred # Note: scheduled may happen before subscriber connects state_sequence = [e["state"] for e in state_events] assert state_sequence == [ ExecutionState.QUEUED, ExecutionState.RUNNING, ExecutionState.COMPLETED, ] # Verify worker was recorded running_events = [e for e in state_events if e["state"] == ExecutionState.RUNNING] assert len(running_events) > 0 assert "worker" in running_events[0] # Verify progress events were published assert len(progress_events) >= 5 # At least one for each increment # Verify progress reached total final_progress = progress_events[-1] assert final_progress["current"] is not None and final_progress["current"] == 5 assert final_progress["total"] == 5 # Verify messages were updated message_events = [e for e in progress_events if e.get("message")] assert len(message_events) > 0 assert any( "complete" in e["message"].lower() for e in message_events if e["message"] is not None ) # Verify final state is completed assert state_events[-1]["state"] == ExecutionState.COMPLETED assert "completed_at" in state_events[-1] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_end_to_end_failed_task_monitoring ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 287 async def test_end_to_end_failed_task_monitoring(docket: Docket, worker: Worker): """Test progress monitoring for a task that fails.""" collected_events: list[StateEvent | ProgressEvent] = [] async def failing_task(progress: Progress = Progress()): """Task that reports progress then fails.""" await progress.set_total(10) await progress.set_message("Starting work") await progress.increment(3) await progress.set_message("About to fail") raise ValueError("Task failed intentionally") # Schedule the task execution = await docket.add(failing_task)() # Start subscriber async def collect_events(): async for event in execution.subscribe(): # pragma: no cover collected_events.append(event) # Stop when we reach failed state if event["type"] == "state" and event["state"] == ExecutionState.FAILED: break subscriber_task = asyncio.create_task(collect_events()) await asyncio.sleep(0.1) # Run the worker await worker.run_until_finished() # Wait for subscriber await asyncio.wait_for(subscriber_task, timeout=5.0) # Verify we got events assert len(collected_events) > 0 state_events = [e for e in collected_events if e["type"] == "state"] progress_events = [e for e in collected_events if e["type"] == "progress"] # Verify task reached running state state_sequence = [e["state"] for e in state_events] assert state_sequence == [ ExecutionState.QUEUED, ExecutionState.RUNNING, ExecutionState.FAILED, ] # Verify progress was reported before failure assert len(progress_events) >= 2 # Find set_total event total_event = next((e for e in progress_events if e.get("total") == 10), None) assert total_event is not None # Find increment event increment_event = next((e for e in progress_events if e.get("current") == 3), None) assert increment_event is not None # Verify error message in failed event failed_event = next(e for e in state_events if e["state"] == ExecutionState.FAILED) assert failed_event["error"] is not None assert "ValueError" in failed_event["error"] assert "intentionally" in failed_event["error"] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_subscribing_to_completed_execution ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_progress_pubsub.py, line 351 async def test_subscribing_to_completed_execution(docket: Docket, worker: Worker): """Subscribing to already-completed executions should emit final state.""" async def completed_task(): await asyncio.sleep(0.01) async def failed_task(): await asyncio.sleep(0.01) raise ValueError("Task failed") # Test subscribing to a completed task execution = await docket.add(completed_task, key="already-done:123")() # Run the task to completion first await worker.run_until_finished() # Now subscribe to the already-completed execution async def get_first_event() -> StateEvent | None: async for event in execution.subscribe(): # pragma: no cover assert event["type"] == "state" return event first_event = await get_first_event() assert first_event is not None # Verify the initial state includes completion metadata assert first_event["type"] == "state" assert first_event["state"] == ExecutionState.COMPLETED assert first_event["completed_at"] is not None assert first_event["error"] is None # Test subscribing to a failed task execution = await docket.add(failed_task, key="already-failed:456")() # Run the task to failure first await worker.run_until_finished() # Now subscribe to the already-failed execution async def get_first_failed_event() -> StateEvent | None: async for event in execution.subscribe(): # pragma: no cover assert event["type"] == "state" return event first_event = await get_first_failed_event() assert first_event is not None # Verify the initial state includes error metadata assert first_event["type"] == "state" assert first_event["state"] == ExecutionState.FAILED assert first_event["completed_at"] is not None assert first_event["error"] is not None assert first_event["error"] == "ValueError: Task failed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, execution, key_leak_checker, log_level, make_docket_name, monkeypatch, now, progress, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_redelivery_from_abandoned_worker ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 34 async def test_redelivery_from_abandoned_worker(docket: Docket, the_task: AsyncMock): """Tasks should be redelivered when a worker crashes or abandons them.""" await docket.add(the_task)() async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200) ) as worker_a: worker_a._execute = AsyncMock(side_effect=Exception("Nope")) # pyright: ignore[reportPrivateUsage] with pytest.raises(ExceptionGroup) as exc_info: await worker_a.run_until_finished() assert any("Nope" in str(e) for e in exc_info.value.exceptions) the_task.assert_not_called() async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200) ) as worker_b: async with docket.redis() as redis: pending_info = await redis.xpending( docket.stream_key, docket.worker_group_name, ) assert pending_info["pending"] == 1, ( "Expected one pending task in the stream" ) await asyncio.sleep(0.25) # longer than the redelivery timeout await worker_b.run_until_finished() the_task.assert_awaited_once_with() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_long_running_task_not_duplicated ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 67 async def test_long_running_task_not_duplicated(docket: Docket): """Test that lease renewal prevents duplicate execution when task exceeds redelivery_timeout. This test runs a task that takes 500ms with a 200ms redelivery_timeout. Without lease renewal, XAUTOCLAIM would reclaim the message after 200ms, causing duplicate execution. With lease renewal (every 50ms), the message stays claimed and no duplicates occur. """ executions: list[int] = [] async def slow_task(task_id: int): executions.append(task_id) await asyncio.sleep(0.5) await docket.add(slow_task, key="slow-1")(task_id=1) await docket.add(slow_task, key="slow-2")(task_id=2) async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) as worker: await worker.run_until_finished() assert sorted(executions) == [1, 2], f"Expected [1, 2], got {executions}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_retry_with_long_running_task ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 95 async def test_retry_with_long_running_task(docket: Docket): """Test that retries work correctly with lease renewal. A task that fails and retries should still benefit from lease renewal. Each attempt should be a distinct execution without duplicates. """ attempts: list[tuple[str, int]] = [] async def flaky_task( task_id: str, retry: Retry = Retry(attempts=3, delay=timedelta(milliseconds=50)), ): attempts.append((task_id, retry.attempt)) await asyncio.sleep(0.3) if retry.attempt < 3: raise ValueError("Temporary failure") await docket.add(flaky_task, key="flaky")(task_id="test") async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) as worker: await worker.run_until_finished() assert attempts == [ ("test", 1), ("test", 2), ("test", 3), ], f"Expected 3 distinct attempts, got {attempts}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_multiple_workers_no_duplicate_execution ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 130 async def test_multiple_workers_no_duplicate_execution(docket: Docket): """Test that lease renewal prevents duplicates across multiple competing workers. With multiple workers and tasks that run longer than redelivery_timeout, XAUTOCLAIM could reclaim a message from one worker and deliver it to another. Lease renewal prevents this by keeping messages "fresh" while being processed. """ executions: list[tuple[str, int]] = [] lock = asyncio.Lock() async def slow_task(task_id: int, worker_name: str = ""): async with lock: executions.append((worker_name, task_id)) await asyncio.sleep(0.5) # Schedule several tasks for i in range(6): await docket.add(slow_task, key=f"task-{i}")(task_id=i) # Run multiple workers concurrently with short redelivery_timeout workers = [ Worker( docket, name=f"worker-{i}", redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), concurrency=2, ) for i in range(3) ] async def run_worker(worker: Worker): async with worker: await worker.run_until_finished() await asyncio.gather(*[run_worker(w) for w in workers]) # Each task should execute exactly once task_ids = sorted([task_id for _, task_id in executions]) assert task_ids == [0, 1, 2, 3, 4, 5], f"Expected each task once, got {executions}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_perpetual_task_with_lease_renewal ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 173 async def test_perpetual_task_with_lease_renewal(docket: Docket): """Perpetual tasks that run longer than redelivery_timeout should reschedule correctly. Without lease renewal, a perpetual task running longer than redelivery_timeout could be reclaimed by XAUTOCLAIM, causing duplicate execution. """ executions: list[int] = [] async def slow_perpetual( perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=100)), ): executions.append(len(executions) + 1) await asyncio.sleep(0.4) # Longer than redelivery_timeout await docket.add(slow_perpetual, key="perpetual")() async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) as worker: await worker.run_at_most({"perpetual": 3}) assert executions == [1, 2, 3], ( f"Expected 3 sequential executions, got {executions}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_user_timeout_longer_than_redelivery __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 202 async def test_user_timeout_longer_than_redelivery(docket: Docket): """User-specified Timeout > redelivery_timeout should work with lease renewal. Lease renewal allows tasks to run longer than redelivery_timeout without being reclaimed by XAUTOCLAIM. """ task_completed = False async def long_task_with_timeout( timeout: Timeout = Timeout(timedelta(seconds=2)), ): nonlocal task_completed await asyncio.sleep(0.5) # Longer than redelivery_timeout task_completed = True await docket.add(long_task_with_timeout)() async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) as worker: await worker.run_until_finished() assert task_completed, "Task should complete even with timeout > redelivery_timeout" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_workers_with_same_redelivery_timeout __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 230 async def test_workers_with_same_redelivery_timeout(docket: Docket): """Workers with consistent redelivery_timeouts should coexist correctly. When workers share the same redelivery_timeout, their lease renewal intervals are synchronized, preventing incorrect task reclamation via XAUTOCLAIM. Note: Workers with different redelivery_timeouts can cause issues - a worker with a shorter timeout may reclaim tasks from a worker with a longer timeout. Use consistent timeouts across workers in a cluster. """ executions: list[tuple[str, int]] = [] lock = asyncio.Lock() async def tracked_task(task_id: int): async with lock: executions.append(("started", task_id)) await asyncio.sleep(0.5) # Longer than redelivery_timeout async with lock: executions.append(("completed", task_id)) for i in range(4): await docket.add(tracked_task, key=f"task-{i}")(task_id=i) # Both workers use the same redelivery_timeout. Use 1s to give lease # renewal plenty of margin on platforms with coarse timer resolution # (Windows ~15ms). Tasks sleep 0.5s, so they still exceed the renewal # interval (250ms) which is the point of this test. worker_a = Worker( docket, name="worker-a", redelivery_timeout=timedelta(seconds=1), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) worker_b = Worker( docket, name="worker-b", redelivery_timeout=timedelta(seconds=1), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) async def run_worker(w: Worker): async with w: await w.run_until_finished() await asyncio.gather(run_worker(worker_a), run_worker(worker_b)) # All tasks should complete exactly once completed = [tid for event, tid in executions if event == "completed"] assert sorted(completed) == [0, 1, 2, 3], ( f"Expected 4 completions, got {executions}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_joining_doesnt_steal_renewed_lease _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 285 async def test_worker_joining_doesnt_steal_renewed_lease(docket: Docket): """A new worker joining shouldn't steal tasks that are actively being renewed. Worker A starts a task and renews its lease. Worker B joins later and runs XAUTOCLAIM, but shouldn't reclaim A's actively-renewed task. """ executions: list[tuple[str, int]] = [] task_started = asyncio.Event() async def slow_task(task_id: int): executions.append(("start", task_id)) task_started.set() await asyncio.sleep(0.6) # Long task executions.append(("end", task_id)) await docket.add(slow_task, key="task")(task_id=1) worker_a = Worker( docket, name="worker-a", redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) async def run_a(): async with worker_a: await worker_a.run_until_finished() # Start worker A a_task = asyncio.create_task(run_a()) # Wait for task to start await asyncio.wait_for(task_started.wait(), timeout=2.0) # Small delay to ensure A is actively renewing await asyncio.sleep(0.1) # Start worker B - it should NOT steal the task worker_b = Worker( docket, name="worker-b", redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) async def run_b(): async with worker_b: await worker_b.run_until_finished() await asyncio.gather(a_task, run_b()) # Task should execute exactly once (start and end) assert executions == [("start", 1), ("end", 1)], ( f"Task stolen or duplicated: {executions}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_lease_renewal_recovers_from_redis_error ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 344 async def test_lease_renewal_recovers_from_redis_error( docket: Docket, caplog: pytest.LogCaptureFixture ): """Lease renewal should recover from transient Redis errors. If XCLAIM fails, the worker should log a warning and continue. The task should still complete successfully. """ task_completed = False async def slow_task(): nonlocal task_completed await asyncio.sleep(0.5) task_completed = True await docket.add(slow_task)() # Track XCLAIM calls to inject error on first call only xclaim_calls = 0 original_redis_xclaim = Redis.xclaim original_cluster_xclaim = RedisCluster.xclaim async def mock_redis_xclaim( # pragma: no cover self: Redis, # type: ignore[type-arg] *args: object, **kwargs: object, ) -> object: nonlocal xclaim_calls xclaim_calls += 1 if xclaim_calls == 1: raise ConnectionError("Simulated Redis error") return await original_redis_xclaim(self, *args, **kwargs) # type: ignore[arg-type] async def mock_cluster_xclaim( # pragma: no cover self: RedisCluster, # type: ignore[type-arg] *args: object, **kwargs: object, ) -> object: nonlocal xclaim_calls xclaim_calls += 1 if xclaim_calls == 1: raise ConnectionError("Simulated Redis error") return await original_cluster_xclaim(self, *args, **kwargs) # type: ignore[arg-type] with ( patch.object(Redis, "xclaim", mock_redis_xclaim), patch.object(RedisCluster, "xclaim", mock_cluster_xclaim), ): async with Worker( docket, redelivery_timeout=timedelta(milliseconds=200), minimum_check_interval=timedelta(milliseconds=10), scheduling_resolution=timedelta(milliseconds=10), ) as worker: await worker.run_until_finished() assert task_completed, "Task should complete despite renewal error" assert xclaim_calls >= 2, "Should have retried renewal after error" assert "Failed to renew leases" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_lease_renewal_exits_cleanly_with_no_active_tasks ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_redelivery.py, line 405 async def test_lease_renewal_exits_cleanly_with_no_active_tasks(docket: Docket): """Lease renewal loop should exit cleanly when worker stops with no active tasks.""" async with Worker( docket, redelivery_timeout=timedelta(milliseconds=40), minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: # Worker with no tasks exits immediately await worker.run_until_finished() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_get_result_waits_for_completion ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 13 async def test_get_result_waits_for_completion(docket: Docket, worker: Worker): """Test that get_result waits for execution to complete.""" result_value = 123 async def slow_task() -> int: await asyncio.sleep(0.1) return result_value docket.register(slow_task) execution = await docket.add(slow_task)() # Start worker in background worker_task = asyncio.create_task(worker.run_until_finished()) # get_result should wait for completion result = await execution.get_result() assert result == result_value await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_get_result_timeout ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 34 async def test_get_result_timeout(docket: Docket, worker: Worker): """Test that get_result respects timeout.""" event = asyncio.Event() # Never set, simulates hung task async def hung_task(): await event.wait() docket.register(hung_task) execution = await docket.add(hung_task)() # Start worker in background worker_task = asyncio.create_task(worker.run_until_finished()) # get_result should timeout deadline = datetime.now(timezone.utc) + timedelta(seconds=1) with pytest.raises(TimeoutError): await execution.get_result(deadline=deadline) # Let the task complete so worker can finish event.set() await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_multiple_concurrent_get_result_calls __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 57 async def test_multiple_concurrent_get_result_calls(docket: Docket, worker: Worker): """Test that multiple concurrent get_result calls work correctly.""" result_value = 999 async def returns_value() -> int: await asyncio.sleep(0.05) return result_value docket.register(returns_value) execution = await docket.add(returns_value)() # Start worker in background worker_task = asyncio.create_task(worker.run_until_finished()) # Multiple concurrent get_result calls results = await asyncio.gather( execution.get_result(), execution.get_result(), execution.get_result(), ) # All should return the same result assert all(r == result_value for r in results) await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_get_result_on_already_completed_task __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 84 async def test_get_result_on_already_completed_task(docket: Docket, worker: Worker): """Test get_result on an already completed task.""" result_value = 555 async def returns_value() -> int: return result_value docket.register(returns_value) execution = await docket.add(returns_value)() await worker.run_until_finished() # Wait for completion await execution.sync() assert execution.state == ExecutionState.COMPLETED # get_result should return immediately result = await execution.get_result() assert result == result_value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_get_result_on_already_failed_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 104 async def test_get_result_on_already_failed_task(docket: Docket, worker: Worker): """Test get_result on an already failed task.""" async def raises_error() -> int: raise ValueError("test error") docket.register(raises_error) execution = await docket.add(raises_error)() await worker.run_until_finished() # Wait for failure await execution.sync() assert execution.state == ExecutionState.FAILED # get_result should raise immediately with pytest.raises(ValueError): await execution.get_result() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_get_result_with_expired_timeout ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 123 async def test_get_result_with_expired_timeout(docket: Docket): """Test that get_result raises immediately if timeout already expired.""" # Create execution in non-terminal state execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) execution.state = ExecutionState.RUNNING # Set deadline to 1 second in the past deadline = datetime.now(timezone.utc) - timedelta(seconds=1) # Should raise TimeoutError immediately without waiting with pytest.raises(TimeoutError) as exc_info: await execution.get_result(deadline=deadline) assert "Timeout waiting for execution" in str(exc_info.value) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_get_result_failed_task_without_result_key _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 141 async def test_get_result_failed_task_without_result_key(docket: Docket): """Test get_result on failed task without stored exception.""" # Create execution in FAILED state without result_key execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) execution.state = ExecutionState.FAILED execution.error = "Something went wrong" execution.result_key = None # No exception stored # Should raise generic Exception with error message with pytest.raises(Exception) as exc_info: await execution.get_result() assert str(exc_info.value) == "Something went wrong" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_get_result_with_malformed_result_data _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 158 async def test_get_result_with_malformed_result_data(docket: Docket, worker: Worker): """Test get_result gracefully handles malformed result data.""" async def returns_value() -> int: return 123 docket.register(returns_value) execution = await docket.add(returns_value)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED assert execution.result_key is not None # Mock result_storage.get() to return data without "data" field mock_result = {"some_field": "but_no_data"} with patch.object( docket.result_storage, "get", return_value=mock_result ) as mock_get: result = await execution.get_result() # Should return None when data field is missing assert result is None mock_get.assert_called_once_with(execution.result_key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_get_result_failed_task_with_missing_exception_data ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 185 async def test_get_result_failed_task_with_missing_exception_data( docket: Docket, worker: Worker ): """Test get_result on failed task when exception data is missing from storage.""" async def raises_error() -> int: raise ValueError("test error") docket.register(raises_error) execution = await docket.add(raises_error)() await worker.run_until_finished() # Verify execution failed with result_key await execution.sync() assert execution.state == ExecutionState.FAILED assert execution.result_key is not None # Mock result_storage.get() to return None (exception data missing) with patch.object(docket.result_storage, "get", return_value=None): # Should fall back to generic error with error message with pytest.raises(Exception) as exc_info: await execution.get_result() # Should use the error message from execution.error assert "test error" in str(exc_info.value) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_get_result_with_timeout_timedelta ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 212 async def test_get_result_with_timeout_timedelta(docket: Docket, worker: Worker): """Test get_result using timeout parameter (timedelta).""" async def returns_value() -> int: return 42 docket.register(returns_value) execution = await docket.add(returns_value)() await worker.run_until_finished() result = await execution.get_result(timeout=timedelta(seconds=1)) assert result == 42 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_get_result_with_deadline_datetime ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 226 async def test_get_result_with_deadline_datetime(docket: Docket, worker: Worker): """Test get_result using deadline parameter (datetime).""" async def returns_value() -> int: return 42 docket.register(returns_value) execution = await docket.add(returns_value)() await worker.run_until_finished() deadline = datetime.now(timezone.utc) + timedelta(seconds=1) result = await execution.get_result(deadline=deadline) assert result == 42 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_get_result_with_both_timeout_and_deadline_raises ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 241 async def test_get_result_with_both_timeout_and_deadline_raises( docket: Docket, ): """Test that specifying both timeout and deadline raises ValueError.""" execution = Execution( docket, AsyncMock(), (), {}, "test-key", datetime.now(timezone.utc), 1 ) execution.state = ExecutionState.COMPLETED with pytest.raises(ValueError) as exc_info: await execution.get_result( timeout=timedelta(seconds=1), deadline=datetime.now(timezone.utc) + timedelta(seconds=1), ) assert "Cannot specify both timeout and deadline" in str(exc_info.value) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_get_result_timeout_on_pending_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_retrieval.py, line 259 async def test_get_result_timeout_on_pending_task(docket: Docket, worker: Worker): """Test get_result with timeout (timedelta) on pending task.""" event = asyncio.Event() async def waits_forever() -> int: await event.wait() return 42 docket.register(waits_forever) execution = await docket.add(waits_forever)() worker_task = asyncio.create_task(worker.run_until_finished()) with pytest.raises(TimeoutError): await execution.get_result(timeout=timedelta(seconds=0.1)) event.set() await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_result_storage_for_int_return _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 26 async def test_result_storage_for_int_return(docket: Docket, worker: Worker): """Test that int results are stored and retrievable.""" result_value = 42 async def returns_int() -> int: return result_value docket.register(returns_int) execution = await docket.add(returns_int)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED # Retrieve result result = await execution.get_result() assert result == result_value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_result_storage_for_str_return _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 46 async def test_result_storage_for_str_return(docket: Docket, worker: Worker): """Test that string results are stored and retrievable.""" result_value = "hello world" async def returns_str() -> str: return result_value docket.register(returns_str) execution = await docket.add(returns_str)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED # Retrieve result result = await execution.get_result() assert result == result_value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_result_storage_for_dict_return _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 66 async def test_result_storage_for_dict_return(docket: Docket, worker: Worker): """Test that dict results are stored and retrievable.""" result_value = {"key": "value", "number": 123} async def returns_dict() -> dict[str, Any]: return result_value docket.register(returns_dict) execution = await docket.add(returns_dict)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED # Retrieve result result = await execution.get_result() assert result == result_value file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_result_storage_for_object_return ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 86 async def test_result_storage_for_object_return(docket: Docket, worker: Worker): """Test that object results are stored and retrievable.""" class CustomObject: def __init__(self, value: int): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_no_storage_for_none_annotated_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 114 async def test_no_storage_for_none_annotated_task(docket: Docket, worker: Worker): """Test that tasks annotated with -> None don't store results.""" async def returns_none_annotated() -> None: pass docket.register(returns_none_annotated) execution = await docket.add(returns_none_annotated)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED assert execution.result_key is None # get_result should return None result = await execution.get_result() assert result is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_no_storage_for_runtime_none ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 134 async def test_no_storage_for_runtime_none(docket: Docket, worker: Worker): """Test that tasks returning None at runtime don't store results.""" async def returns_none_runtime() -> int | None: return None docket.register(returns_none_runtime) execution = await docket.add(returns_none_runtime)() await worker.run_until_finished() # Verify execution completed await execution.sync() assert execution.state == ExecutionState.COMPLETED assert execution.result_key is None # get_result should return None result = await execution.get_result() assert result is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_exception_storage_and_retrieval ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 154 async def test_exception_storage_and_retrieval(docket: Docket, worker: Worker): """Test that exceptions are stored and re-raised.""" error_msg = "Test error" error_code = 500 async def raises_error() -> int: raise CustomError(error_msg, error_code) docket.register(raises_error) execution = await docket.add(raises_error)() await worker.run_until_finished() # Verify execution failed await execution.sync() assert execution.state == ExecutionState.FAILED assert execution.result_key is not None # get_result should raise the stored exception with pytest.raises(CustomError) as exc_info: await execution.get_result() # Verify exception details are preserved assert exc_info.value.message == error_msg assert exc_info.value.code == error_code file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_result_key_stored_in_execution_record _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 180 async def test_result_key_stored_in_execution_record(docket: Docket, worker: Worker): """Test that result key is stored in execution record.""" async def returns_value() -> int: return 123 docket.register(returns_value) execution = await docket.add(returns_value)() await worker.run_until_finished() # Sync and check result field await execution.sync() assert execution.result_key == execution.key file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_result_storage_uses_provided_or_default ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 195 async def test_result_storage_uses_provided_or_default(docket: Docket): """Test that result_storage uses appropriate store type by default.""" from urllib.parse import urlparse from key_value.aio.stores.redis import RedisStore from docket._result_store import ClusterKeyValueStore, ResultStorage # docket.result_storage should be a ResultStorage wrapper assert isinstance(docket.result_storage, ResultStorage) # Check the internal store type store = docket.result_storage._store if docket._redis.is_cluster: # pragma: no cover # Cluster mode uses ClusterKeyValueStore assert isinstance(store, ClusterKeyValueStore) else: # pragma: no cover # Standalone mode uses RedisStore assert isinstance(store, RedisStore) # Verify it's connected to the same Redis result_client = store._client # type: ignore[attr-defined] pool_kwargs: dict[str, Any] = result_client.connection_pool.connection_kwargs # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType] if docket.url.startswith("memory://"): # pragma: no cover assert "server" in pool_kwargs else: parsed = urlparse(docket.url) assert pool_kwargs.get("host") == (parsed.hostname or "localhost") assert pool_kwargs.get("port") == (parsed.port or 6379) expected_db = ( int(parsed.path.lstrip("/")) if parsed.path and parsed.path != "/" else 0 ) assert pool_kwargs.get("db") == expected_db file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_result_storage_uses_custom_when_provided ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 233 async def test_result_storage_uses_custom_when_provided( redis_url: str, make_docket_name: Callable[[], str] ): """Test that result_storage uses your store if provided.""" from key_value.aio.protocols.key_value import AsyncKeyValue custom_storage = MagicMock(spec=AsyncKeyValue) custom_storage.setup = AsyncMock() async with Docket( name=make_docket_name(), url=redis_url, result_storage=custom_storage, ) as custom_docket: assert custom_docket.result_storage is custom_storage file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_result_storage_custom_without_setup __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 249 async def test_result_storage_custom_without_setup( redis_url: str, make_docket_name: Callable[[], str] ): """Test that custom storage works without a setup method.""" from key_value.aio.protocols.key_value import AsyncKeyValue # Create a mock without the setup method custom_storage = MagicMock(spec=AsyncKeyValue) del custom_storage.setup # Remove the setup method from the mock assert not hasattr(custom_storage, "setup") async with Docket( name=make_docket_name(), url=redis_url, result_storage=custom_storage, ) as custom_docket: assert custom_docket.result_storage is custom_storage file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_cluster_store_get_nonexistent _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 271 async def test_cluster_store_get_nonexistent(docket: Docket): # pragma: no cover """Test ClusterKeyValueStore.get returns None for missing keys.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) result = await store.get("nonexistent-key-test") assert result is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_cluster_store_ttl ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 285 async def test_cluster_store_ttl( # pragma: no cover docket: Docket, key_leak_checker: "KeyCountChecker" ): """Test ClusterKeyValueStore.ttl method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) # Exempt test keys from leak checker key_leak_checker.add_pattern_exemption(f"{docket.results_collection}:*") # Put with TTL await store.put("ttl-test", {"value": 123}, ttl=300) data, ttl_val = await store.ttl("ttl-test") assert data == {"value": 123} assert ttl_val is not None assert 0 < ttl_val <= 300 # Put without TTL await store.put("no-ttl-test", {"value": 456}) data, ttl_val = await store.ttl("no-ttl-test") assert data == {"value": 456} assert ttl_val is None # Nonexistent key data, ttl_val = await store.ttl("nonexistent-ttl-test") assert data is None assert ttl_val is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_cluster_store_delete __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 319 async def test_cluster_store_delete(docket: Docket): # pragma: no cover """Test ClusterKeyValueStore.delete method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) await store.put("delete-test", {"value": 789}) assert await store.get("delete-test") == {"value": 789} result = await store.delete("delete-test") assert result is True assert await store.get("delete-test") is None # Delete nonexistent result = await store.delete("already-deleted") assert result is False file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_cluster_store_get_many _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 341 async def test_cluster_store_get_many( # pragma: no cover docket: Docket, key_leak_checker: "KeyCountChecker" ): """Test ClusterKeyValueStore.get_many method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) # Exempt test keys from leak checker key_leak_checker.add_pattern_exemption(f"{docket.results_collection}:*") await store.put("many-1", {"a": 1}) await store.put("many-2", {"b": 2}) results = await store.get_many(["many-1", "many-2", "many-nonexistent"]) assert results == [{"a": 1}, {"b": 2}, None] # Empty list results = await store.get_many([]) assert results == [] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_cluster_store_ttl_many _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 367 async def test_cluster_store_ttl_many( # pragma: no cover docket: Docket, key_leak_checker: "KeyCountChecker" ): """Test ClusterKeyValueStore.ttl_many method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) # Exempt test keys from leak checker key_leak_checker.add_pattern_exemption(f"{docket.results_collection}:*") await store.put("ttl-many-1", {"a": 1}, ttl=300) await store.put("ttl-many-2", {"b": 2}) # No TTL initially results = await store.ttl_many(["ttl-many-1", "ttl-many-2", "nonexistent-ttl"]) assert len(results) == 3 assert results[0][0] == {"a": 1} assert results[0][1] is not None # Has TTL assert results[1][0] == {"b": 2} assert results[1][1] is None # No TTL assert results[2] == (None, None) # Empty list results = await store.ttl_many([]) assert results == [] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_cluster_store_put_many _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 398 async def test_cluster_store_put_many(docket: Docket): # pragma: no cover """Test ClusterKeyValueStore.put_many method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) await store.put_many( ["put-many-1", "put-many-2"], [{"x": 1}, {"y": 2}], ttl=300, ) assert await store.get("put-many-1") == {"x": 1} assert await store.get("put-many-2") == {"y": 2} # Empty list await store.put_many([], []) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_cluster_store_delete_many _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_results_storage.py, line 421 async def test_cluster_store_delete_many(docket: Docket): # pragma: no cover """Test ClusterKeyValueStore.delete_many method.""" from docket._result_store import ClusterKeyValueStore if not docket._redis.is_cluster: pytest.skip("Only runs in cluster mode") store = docket.result_storage assert isinstance(store._store, ClusterKeyValueStore) await store.put("del-many-1", {"a": 1}) await store.put("del-many-2", {"b": 2}) count = await store.delete_many(["del-many-1", "del-many-2", "nonexistent"]) assert count == 2 assert await store.get("del-many-1") is None assert await store.get("del-many-2") is None # Empty list count = await store.delete_many([]) assert count == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_context_manager ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 58 async def test_context_manager(redis_url: str, strike_name: str): """Test async context manager works correctly.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: # Should be connected assert strikes._redis is not None assert strikes._redis.is_connected assert strikes._monitor_task is not None # After exit, resources should be cleaned up (connection closed, not deleted) assert strikes._redis is not None assert not strikes._redis.is_connected assert strikes._monitor_task is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_explicit_aenter_aexit _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 72 async def test_explicit_aenter_aexit(redis_url: str, strike_name: str): """Test explicit __aenter__/__aexit__ lifecycle.""" strikes = StrikeList(url=redis_url, name=strike_name) # _redis is created in __init__, but not yet connected assert strikes._redis is not None assert not strikes._redis.is_connected assert strikes._monitor_task is None # Connect via __aenter__ await strikes.__aenter__() assert strikes._redis is not None assert strikes._redis.is_connected assert strikes._monitor_task is not None # Close via __aexit__ await strikes.__aexit__(None, None, None) assert strikes._redis is not None assert not strikes._redis.is_connected assert strikes._monitor_task is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_aenter_is_not_reentrant ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 94 async def test_aenter_is_not_reentrant(redis_url: str, strike_name: str): """Test that calling __aenter__ twice raises an assertion error.""" strikes = StrikeList(url=redis_url, name=strike_name) await strikes.__aenter__() # Second __aenter__ should raise with pytest.raises(AssertionError, match="not reentrant"): await strikes.__aenter__() await strikes.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_context_manager_reuse _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 107 async def test_context_manager_reuse(redis_url: str, strike_name: str): """Test that a StrikeList can be entered and exited multiple times.""" strikes = StrikeList(url=redis_url, name=strike_name) await strikes.__aenter__() await strikes.__aexit__(None, None, None) # Can enter again after proper exit await strikes.__aenter__() await strikes.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_prefix_property ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 119 async def test_prefix_property(redis_url: str, strike_name: str): """Test the prefix property returns the name (hash-tagged for cluster mode).""" from docket._redis import RedisConnection strikes = StrikeList(url=redis_url, name=strike_name) if RedisConnection(redis_url).is_cluster: # pragma: no cover assert strikes.prefix == f"{{{strike_name}}}" else: # pragma: no cover assert strikes.prefix == strike_name file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_strike_key_property __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 130 async def test_strike_key_property(redis_url: str, strike_name: str): """Test the strike_key property uses prefix.""" strikes = StrikeList(url=redis_url, name=strike_name) assert strikes.strike_key == f"{strikes.prefix}:strikes" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_local_only_mode ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 136 async def test_local_only_mode(strike_name: str): """Test StrikeList works without Redis (local-only mode).""" # No URL = local-only mode strikes = StrikeList(name=strike_name) await strikes.__aenter__() # Should be a no-op assert strikes._redis is None assert strikes._monitor_task is None assert strikes._strikes_loaded is None # wait_for_strikes_loaded returns immediately in local-only mode await strikes.wait_for_strikes_loaded() # Can still use locally strikes.update(Strike(None, "customer_id", Operator.EQUAL, "blocked")) assert strikes.is_stricken({"customer_id": "blocked"}) assert not strikes.is_stricken({"customer_id": "allowed"}) await strikes.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 41 @pytest.fixture(scope="session") def acl_credentials(worker_id: str) -> ACLCredentials: E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:41 _____________ ERROR at setup of test_memory_url_without_fakeredis ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 157 async def test_memory_url_without_fakeredis( strike_name: str, monkeypatch: pytest.MonkeyPatch ): """Test error when memory:// used without fakeredis.""" import sys # Temporarily make fakeredis unimportable monkeypatch.setitem(sys.modules, "fakeredis", None) monkeypatch.setitem(sys.modules, "fakeredis.aioredis", None) strikes = StrikeList(url="memory://", name=strike_name) with pytest.raises((ImportError, ModuleNotFoundError), match="fakeredis"): await strikes.__aenter__() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 41 @pytest.fixture(scope="session") def acl_credentials(worker_id: str) -> ACLCredentials: E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:41 _________ ERROR at setup of test_send_instruction_requires_connection __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 172 async def test_send_instruction_requires_connection(strike_name: str): """Test that send_instruction raises error when not connected.""" strikes = StrikeList(url="memory://", name=strike_name) instruction = Strike(None, "customer_id", Operator.EQUAL, "blocked") with pytest.raises(RuntimeError, match="not connected to Redis"): await strikes.send_instruction(instruction) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 41 @pytest.fixture(scope="session") def acl_credentials(worker_id: str) -> ACLCredentials: E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:41 _____________________ ERROR at setup of test_strike_method _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 184 async def test_strike_method(redis_url: str, strike_name: str): """Test the strike() convenience method.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await strikes.strike(parameter="customer_id", operator="==", value="blocked") assert strikes.is_stricken({"customer_id": "blocked"}) assert not strikes.is_stricken({"customer_id": "allowed"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________________ ERROR at setup of test_restore_method _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 193 async def test_restore_method(redis_url: str, strike_name: str): """Test the restore() convenience method.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await strikes.strike(parameter="customer_id", operator="==", value="blocked") assert strikes.is_stricken({"customer_id": "blocked"}) await strikes.restore(parameter="customer_id", operator="==", value="blocked") assert not strikes.is_stricken({"customer_id": "blocked"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_receives_strikes ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 206 async def test_receives_strikes(redis_url: str, strike_name: str): """Test that StrikeList receives strikes from the stream.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await send_strike(strikes, "customer_id", "==", "blocked") await asyncio.sleep(0.1) assert strikes.is_stricken({"customer_id": "blocked"}) assert not strikes.is_stricken({"customer_id": "allowed"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________________ ERROR at setup of test_receives_restore ____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 216 async def test_receives_restore(redis_url: str, strike_name: str): """Test that StrikeList receives restores from the stream.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await send_strike(strikes, "customer_id", "==", "blocked") await asyncio.sleep(0.1) assert strikes.is_stricken({"customer_id": "blocked"}) await send_restore(strikes, "customer_id", "==", "blocked") await asyncio.sleep(0.1) assert not strikes.is_stricken({"customer_id": "blocked"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_receives_multiple_strikes _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 228 async def test_receives_multiple_strikes(redis_url: str, strike_name: str): """Test receiving multiple different strikes.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await send_strike(strikes, "region", "==", "us-west") await send_strike(strikes, "priority", ">=", 5) await asyncio.sleep(0.1) # Either condition triggers strike assert strikes.is_stricken({"region": "us-west", "priority": 1}) assert strikes.is_stricken({"region": "us-east", "priority": 10}) assert not strikes.is_stricken({"region": "us-east", "priority": 1}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_new_instance_receives_existing_strikes _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 241 async def test_new_instance_receives_existing_strikes(redis_url: str, strike_name: str): """Test that a new instance receives strikes from the stream history.""" # Create first instance and send a strike async with StrikeList(url=redis_url, name=strike_name) as strikes1: await send_strike(strikes1, "customer_id", "==", "blocked") await asyncio.sleep(0.1) # Start a new StrikeList instance - should read existing strikes async with StrikeList(url=redis_url, name=strike_name) as strikes2: await strikes2.wait_for_strikes_loaded() assert strikes2.is_stricken({"customer_id": "blocked"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________________ ERROR at setup of test_all_operators _____________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 257 async def test_all_operators(redis_url: str, strike_name: str): """Test all comparison operators.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: # Test each operator await send_strike(strikes, "eq_param", "==", 42) await send_strike(strikes, "ne_param", "!=", 42) await send_strike(strikes, "gt_param", ">", 100) await send_strike(strikes, "gte_param", ">=", 100) await send_strike(strikes, "lt_param", "<", 10) await send_strike(strikes, "lte_param", "<=", 10) await send_strike(strikes, "between_param", "between", (20, 30)) await asyncio.sleep(0.1) # == assert strikes.is_stricken({"eq_param": 42}) assert not strikes.is_stricken({"eq_param": 43}) # != assert strikes.is_stricken({"ne_param": 43}) assert not strikes.is_stricken({"ne_param": 42}) # > assert strikes.is_stricken({"gt_param": 101}) assert not strikes.is_stricken({"gt_param": 100}) # >= assert strikes.is_stricken({"gte_param": 100}) assert not strikes.is_stricken({"gte_param": 99}) # < assert strikes.is_stricken({"lt_param": 9}) assert not strikes.is_stricken({"lt_param": 10}) # <= assert strikes.is_stricken({"lte_param": 10}) assert not strikes.is_stricken({"lte_param": 11}) # between assert strikes.is_stricken({"between_param": 25}) assert not strikes.is_stricken({"between_param": 19}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_empty_dict_not_stricken ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 299 async def test_empty_dict_not_stricken(redis_url: str, strike_name: str): """Test that an empty dict is never stricken.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await send_strike(strikes, "customer_id", "==", "blocked") await asyncio.sleep(0.1) assert not strikes.is_stricken({}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_type_mismatch_handled_gracefully ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 308 async def test_type_mismatch_handled_gracefully( redis_url: str, strike_name: str, caplog: pytest.LogCaptureFixture ): """Test that type mismatches don't raise exceptions.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: await send_strike(strikes, "amount", ">", 100) await asyncio.sleep(0.1) # Comparing string to int should not raise result = strikes.is_stricken({"amount": "not a number"}) assert result is False assert "Incompatible type" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_invariant_conditions_only_default_after_remove _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 325 async def test_invariant_conditions_only_default_after_remove( redis_url: str, strike_name: str ): """After removing a temporary condition, only the default condition should remain.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: # Initially only default condition assert len(strikes._conditions) == 1 default_condition = strikes._conditions[0] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_invariant_no_empty_dicts_in_task_strikes_after_restore _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 348 async def test_invariant_no_empty_dicts_in_task_strikes_after_restore( redis_url: str, strike_name: str ): """After restoring all strikes for a task, no empty dicts should remain.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: # Strike a specific task+parameter combination await strikes.strike( function="my_task", parameter="user_id", operator="==", value=123 ) await asyncio.sleep(0.1) # Verify structure exists assert "my_task" in strikes.task_strikes assert "user_id" in strikes.task_strikes["my_task"] # Restore the strike await strikes.restore( function="my_task", parameter="user_id", operator="==", value=123 ) await asyncio.sleep(0.1) # After restore, no empty dict entries should remain assert "my_task" not in strikes.task_strikes, ( "task_strikes should not contain empty task entries" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_invariant_no_empty_dicts_in_parameter_strikes_after_restore _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 375 async def test_invariant_no_empty_dicts_in_parameter_strikes_after_restore( redis_url: str, strike_name: str ): """After restoring all parameter strikes, no empty sets should remain.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: # Strike a parameter (applies to all tasks) await strikes.strike(parameter="region", operator="==", value="us-west") await asyncio.sleep(0.1) # Verify structure exists assert "region" in strikes.parameter_strikes assert len(strikes.parameter_strikes["region"]) == 1 # Restore the strike await strikes.restore(parameter="region", operator="==", value="us-west") await asyncio.sleep(0.1) # After restore, no empty set entries should remain assert "region" not in strikes.parameter_strikes, ( "parameter_strikes should not contain empty parameter entries" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_invariant_multiple_strike_restore_cycles ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 398 async def test_invariant_multiple_strike_restore_cycles( redis_url: str, strike_name: str ): """Multiple strike/restore cycles should not accumulate orphan entries.""" async with StrikeList(url=redis_url, name=strike_name) as strikes: for cycle in range(5): # Strike await strikes.strike( function="task_a", parameter="customer_id", operator="==", value=f"id-{cycle}", ) await strikes.strike( parameter="global_param", operator=">=", value=100 + cycle ) await asyncio.sleep(0.05) # Verify strikes are in effect assert "task_a" in strikes.task_strikes assert "global_param" in strikes.parameter_strikes # Restore await strikes.restore( function="task_a", parameter="customer_id", operator="==", value=f"id-{cycle}", ) await strikes.restore( parameter="global_param", operator=">=", value=100 + cycle ) await asyncio.sleep(0.05) # After each cycle, both dicts should be clean assert "task_a" not in strikes.task_strikes, ( f"Orphan in task_strikes after cycle {cycle}" ) assert "global_param" not in strikes.parameter_strikes, ( f"Orphan in parameter_strikes after cycle {cycle}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_invariant_strikelist_state_persists_through_context __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_strikelist.py, line 441 async def test_invariant_strikelist_state_persists_through_context( redis_url: str, strike_name: str ): """StrikeList data structures should persist (not be deleted) after context exit.""" strikes = StrikeList(url=redis_url, name=strike_name) # Data structures exist before entering context assert hasattr(strikes, "task_strikes") assert hasattr(strikes, "parameter_strikes") assert hasattr(strikes, "_conditions") await strikes.__aenter__() # Add some data await strikes.strike(parameter="test_param", operator="==", value="test_value") await asyncio.sleep(0.1) await strikes.__aexit__(None, None, None) # Data structures should still exist (not deleted like Worker) # This is intentional - StrikeList maintains state assert hasattr(strikes, "task_strikes") assert hasattr(strikes, "parameter_strikes") assert hasattr(strikes, "_conditions") # But connection-related state should be cleaned up assert strikes._monitor_task is None assert strikes._strikes_loaded is None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, strike_name, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_all_dockets_see_all_strikes ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 13 async def test_all_dockets_see_all_strikes(docket: Docket): async with ( Docket(docket.name, docket.url) as docket_a, Docket(docket.name, docket.url) as docket_b, Docket(docket.name, docket.url) as docket_c, ): await docket.strike("test_task") await asyncio.sleep(0.25) assert "test_task" in docket_a.strike_list.task_strikes assert "test_task" in docket_b.strike_list.task_strikes assert "test_task" in docket_c.strike_list.task_strikes await docket_a.restore("test_task") await asyncio.sleep(0.25) assert "test_task" not in docket_a.strike_list.task_strikes assert "test_task" not in docket_b.strike_list.task_strikes assert "test_task" not in docket_c.strike_list.task_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_striking_is_idempotent _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 36 async def test_striking_is_idempotent(docket: Docket): for _ in range(3): await docket.strike("test_task") await docket.strike("test_task", "customer", "==", "123") await docket.strike("test_task", "customer", "<=", "234") await docket.strike(None, "customer", "==", "345") await docket.strike(None, "customer", "<=", "456") assert docket.strike_list.task_strikes["test_task"]["customer"] == { ("==", "123"), ("<=", "234"), } assert docket.strike_list.parameter_strikes["customer"] == { ("==", "345"), ("<=", "456"), } file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_restoring_is_idempotent ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 54 async def test_restoring_is_idempotent(docket: Docket): """Covers all of the ways that we can restore a strike and all the possible code paths to show that these are all idempotent.""" await docket.strike("test_task") await docket.strike("test_task", "customer", "==", "123") await docket.strike("test_task", "customer", "<=", "234") await docket.strike("another_task", "customer", "==", "123") await docket.strike("another_task", "order", "==", "987") await docket.strike("yet_another", "order", "==", "987") await docket.strike("yet_another", "order", "==", "keep-me") await docket.strike(None, "customer", "==", "345") await docket.strike(None, "customer", "<=", "456") await docket.strike(None, "order", "==", "789") assert docket.strike_list.task_strikes["test_task"]["customer"] == { ("==", "123"), ("<=", "234"), } assert docket.strike_list.task_strikes["another_task"]["customer"] == { ("==", "123"), } assert docket.strike_list.task_strikes["another_task"]["order"] == { ("==", "987"), } assert docket.strike_list.task_strikes["yet_another"]["order"] == { ("==", "987"), ("==", "keep-me"), } assert docket.strike_list.parameter_strikes["customer"] == { ("==", "345"), ("<=", "456"), } assert docket.strike_list.parameter_strikes["order"] == { ("==", "789"), } for _ in range(3): await docket.restore("test_task") await docket.restore("test_task", "customer", "==", "123") await docket.restore("another_task", "customer", "==", "123") await docket.restore("another_task", "order", "==", "987") await docket.restore("yet_another", "order", "==", "987") await docket.restore(None, "customer", "==", "345") await docket.restore(None, "order", "==", "789") await docket.restore("test_task", "nonexistent_param", "==", "value") await docket.restore("another_task", "nonexistent_param", "==", "value") await docket.restore(None, "nonexistent_param", "==", "value") assert docket.strike_list.task_strikes["test_task"]["customer"] == { ("<=", "234"), } assert "another_task" not in docket.strike_list.task_strikes assert docket.strike_list.parameter_strikes["customer"] == { ("<=", "456"), } assert docket.strike_list.task_strikes["yet_another"]["order"] == { ("==", "keep-me"), } assert "order" not in docket.strike_list.parameter_strikes file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[==-42-42-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_strike_operators[==-42-43-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[!=-42-43-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_strike_operators[!=-42-42-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[>-42-43-True] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[>-42-42-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[>-42-41-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[>=-42-43-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[>=-42-42-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_strike_operators[>=-42-41-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[<-42-41-True] _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[<-42-42-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[<-42-43-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[<=-42-41-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____________ ERROR at setup of test_strike_operators[<=-42-42-True] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_strike_operators[<=-42-43-False] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_strike_operators[between-value16-30-True] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_strike_operators[between-value17-10-True] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_strike_operators[between-value18-50-True] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_strike_operators[between-value19-5-False] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_strike_operators[between-value20-55-False] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_strike_operators[between-not a tuple-30-False] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_strike_operators[between-value22-30-False] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 116 @pytest.mark.parametrize( "operator,value,test_value,expected_result", [ ("==", 42, 42, True), ("==", 42, 43, False), ("!=", 42, 43, True), ("!=", 42, 42, False), (">", 42, 43, True), (">", 42, 42, False), (">", 42, 41, False), (">=", 42, 43, True), (">=", 42, 42, True), (">=", 42, 41, False), ("<", 42, 41, True), ("<", 42, 42, False), ("<", 42, 43, False), ("<=", 42, 41, True), ("<=", 42, 42, True), ("<=", 42, 43, False), ("between", (10, 50), 30, True), ("between", (10, 50), 10, True), ("between", (10, 50), 50, True), ("between", (10, 50), 5, False), ("between", (10, 50), 55, False), ("between", "not a tuple", 30, False), ("between", (10, 20, 100), 30, False), # too many values ], ) def test_strike_operators( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_strike_incomparable_values[>-42-string] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_strike_incomparable_values[<-string-42] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_strike_incomparable_values[>=-None-42] _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_strike_incomparable_values[<=-42-None] _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_strike_incomparable_values[>-value4-42] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_strike_incomparable_values[<-42-test_value5] ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_strike_incomparable_values[>=-value6-42] ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_strike_incomparable_values[<=-42-test_value7] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 174 @pytest.mark.parametrize( "operator,value,test_value", [ (">", 42, "string"), # comparing int with string ("<", "string", 42), # comparing string with int (">=", None, 42), # comparing None with int ("<=", 42, None), # comparing int with None (">", {}, 42), # comparing dict with int ("<", 42, {}), # comparing int with dict (">=", [], 42), # comparing list with int ("<=", 42, []), # comparing int with list ], ) async def test_strike_incomparable_values( operator: Operator, value: Any, test_value: Any, docket: Docket, caplog: pytest.LogCaptureFixture, ): """should handle incomparable values gracefully in strikes""" # Register a test task async def test_task(parameter: Any) -> None: pass # pragma: no cover docket.register(test_task) # Create a strike with potentially incomparable values await docket.strike("test_task", "parameter", operator, value) # We should be able to add the task without errors, even if the strike would be # comparing incomparable values execution = await docket.add(test_task)(test_value) # The task might or might not be stricken depending on the implementation's # handling of incomparable values, but the operation shouldn't raise exceptions assert execution is not None # Simply access the variable to satisfy the linter assert "Incompatible type for strike condition" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_struck_automatic_perpetual_does_not_start _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 216 async def test_struck_automatic_perpetual_does_not_start(docket: Docket): """Struck automatic perpetual tasks should not be scheduled by new workers. This verifies that the race between loading strikes and scheduling automatic perpetuals is resolved: strikes are fully loaded before scheduling runs. """ called = False async def my_struck_automatic_task( perpetual: Perpetual = Perpetual( every=timedelta(milliseconds=50), automatic=True ), ): nonlocal called called = True # pragma: no cover docket.register(my_struck_automatic_task) # Strike the task before starting the worker await docket.strike("my_struck_automatic_task") # Start a fresh docket instance (simulating a new worker process) async with Docket(docket.name, docket.url) as fresh_docket: fresh_docket.register(my_struck_automatic_task) # Wait for strikes to be loaded before proceeding await fresh_docket.wait_for_strikes_loaded() # Verify the strike is loaded assert "my_struck_automatic_task" in fresh_docket.strike_list.task_strikes # Start a worker with this fresh docket - struck task should NOT be scheduled async with Worker(fresh_docket) as worker: await worker.run_until_finished() assert not called, "Struck automatic task should not have been executed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_restored_automatic_perpetual_does_start ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 254 async def test_restored_automatic_perpetual_does_start(docket: Docket): """Restored automatic perpetual tasks should be scheduled by new workers. This verifies that when a task is struck and then restored, a new worker will correctly schedule it because the restore is loaded before scheduling. """ calls = 0 async def my_restored_automatic_task( perpetual: Perpetual = Perpetual( every=timedelta(milliseconds=50), automatic=True ), ): nonlocal calls calls += 1 docket.register(my_restored_automatic_task) # Strike then restore the task await docket.strike("my_restored_automatic_task") await docket.restore("my_restored_automatic_task") # Start a fresh docket instance (simulating a new worker process) async with Docket(docket.name, docket.url) as fresh_docket: fresh_docket.register(my_restored_automatic_task) # Wait for strikes to be loaded before proceeding await fresh_docket.wait_for_strikes_loaded() # Verify the task is NOT in the strike list (was restored) assert "my_restored_automatic_task" not in fresh_docket.strike_list.task_strikes # Start a worker - restored task SHOULD be scheduled async with Worker(fresh_docket) as worker: await worker.run_at_most({"my_restored_automatic_task": 3}) assert calls == 3, f"Expected 3 calls, got {calls}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_strikes_loaded_event_is_set_after_initial_load _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_striking.py, line 293 async def test_strikes_loaded_event_is_set_after_initial_load(docket: Docket): """The strikes_loaded event should be set after initial strike stream read. This tests that wait_for_strikes_loaded() returns quickly when existing strikes have already been read from the stream. """ # Add some strikes to the stream await docket.strike("task_a") await docket.strike("task_b", "customer_id", "==", "123") # Start a fresh docket instance async with Docket(docket.name, docket.url) as fresh_docket: # wait_for_strikes_loaded should complete quickly (not block forever) await asyncio.wait_for(fresh_docket.wait_for_strikes_loaded(), timeout=5.0) # Verify the strikes are loaded assert "task_a" in fresh_docket.strike_list.task_strikes assert "task_b" in fresh_docket.strike_list.task_strikes assert fresh_docket.strike_list.task_strikes["task_b"]["customer_id"] == { ("==", "123") } file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_only ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 42 async def test_assert_task_scheduled_finds_task_by_function_only( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should find a task by function alone.""" await docket.add(simple_task)("arg1", kwarg1="value1") await assert_task_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_and_args _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 51 async def test_assert_task_scheduled_finds_task_by_function_and_args( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should find a task by function and args.""" await docket.add(simple_task)("arg1", "arg2", kwarg1="value1") await assert_task_scheduled(docket, simple_task, args=("arg1", "arg2")) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_and_kwargs _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 60 async def test_assert_task_scheduled_finds_task_by_function_and_kwargs( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should find a task by function and kwargs.""" await docket.add(simple_task)("arg1", kwarg1="value1", kwarg2="value2") await assert_task_scheduled( docket, simple_task, kwargs={"kwarg1": "value1", "kwarg2": "value2"} ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_scheduled_finds_task_by_function_args_and_kwargs _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 71 async def test_assert_task_scheduled_finds_task_by_function_args_and_kwargs( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should find a task by function, args, and kwargs.""" await docket.add(simple_task)("arg1", "arg2", kwarg1="value1") await assert_task_scheduled( docket, simple_task, args=("arg1", "arg2"), kwargs={"kwarg1": "value1"} ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_assert_task_scheduled_finds_task_by_key ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 82 async def test_assert_task_scheduled_finds_task_by_key( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should find a task by key.""" await docket.add(simple_task, key="my-task-key")("arg1") await assert_task_scheduled(docket, simple_task, key="my-task-key") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_assert_task_scheduled_works_with_function_name _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 91 async def test_assert_task_scheduled_works_with_function_name( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should work with function name as string.""" docket.register(simple_task) await docket.add("simple_task")("arg1") await assert_task_scheduled(docket, "simple_task") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_scheduled_succeeds_with_multiple_matching_tasks _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 101 async def test_assert_task_scheduled_succeeds_with_multiple_matching_tasks( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should succeed if at least one task matches.""" await docket.add(simple_task)("arg1", kwarg1="value1") await docket.add(simple_task)("arg2", kwarg1="value2") await docket.add(simple_task)("arg3", kwarg1="value3") await assert_task_scheduled(docket, simple_task, args=("arg2",)) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_assert_task_scheduled_fails_when_task_not_found ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 112 async def test_assert_task_scheduled_fails_when_task_not_found( docket: Docket, simple_task: AsyncMock, another_task: AsyncMock ): """assert_task_scheduled should fail with clear error when task not found.""" await docket.add(another_task)("arg1") with pytest.raises(AssertionError, match="simple_task.*not found"): await assert_task_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_assert_task_scheduled_fails_when_args_dont_match ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 122 async def test_assert_task_scheduled_fails_when_args_dont_match( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should fail when args don't match.""" await docket.add(simple_task)("arg1", "arg2") with pytest.raises(AssertionError, match="args.*arg3.*arg4"): await assert_task_scheduled(docket, simple_task, args=("arg3", "arg4")) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_assert_task_scheduled_fails_when_kwargs_dont_match ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 132 async def test_assert_task_scheduled_fails_when_kwargs_dont_match( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should fail when kwargs don't match.""" await docket.add(simple_task)(kwarg1="value1") with pytest.raises(AssertionError, match="kwargs.*kwarg2"): await assert_task_scheduled(docket, simple_task, kwargs={"kwarg2": "value2"}) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_assert_task_scheduled_finds_scheduled_future_task ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 142 async def test_assert_task_scheduled_finds_scheduled_future_task( docket: Docket, simple_task: AsyncMock, now: Callable[[], datetime] ): """assert_task_scheduled should find tasks scheduled in the future.""" later = now() + timedelta(seconds=10) await docket.add(simple_task, when=later)("arg1") await assert_task_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_assert_task_not_scheduled_succeeds_when_no_task ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 152 async def test_assert_task_not_scheduled_succeeds_when_no_task( docket: Docket, simple_task: AsyncMock ): """assert_task_not_scheduled should succeed when task not scheduled.""" await assert_task_not_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_not_scheduled_succeeds_when_different_task _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 159 async def test_assert_task_not_scheduled_succeeds_when_different_task( docket: Docket, simple_task: AsyncMock, another_task: AsyncMock ): """assert_task_not_scheduled should succeed when different task is scheduled.""" await docket.add(another_task)("arg1") await assert_task_not_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_assert_task_not_scheduled_fails_when_task_exists ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 168 async def test_assert_task_not_scheduled_fails_when_task_exists( docket: Docket, simple_task: AsyncMock ): """assert_task_not_scheduled should fail when task is scheduled.""" await docket.add(simple_task)("arg1") with pytest.raises(AssertionError, match="simple_task.*found.*should not"): await assert_task_not_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_assert_task_not_scheduled_with_specific_args ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 178 async def test_assert_task_not_scheduled_with_specific_args( docket: Docket, simple_task: AsyncMock ): """assert_task_not_scheduled should check specific args.""" await docket.add(simple_task)("arg1") # Should succeed - different args await assert_task_not_scheduled(docket, simple_task, args=("arg2",)) # Should fail - same args with pytest.raises(AssertionError): await assert_task_not_scheduled(docket, simple_task, args=("arg1",)) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_assert_task_count_all_tasks ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 192 async def test_assert_task_count_all_tasks( docket: Docket, simple_task: AsyncMock, another_task: AsyncMock ): """assert_task_count should count all tasks when no function specified.""" await docket.add(simple_task)("arg1") await docket.add(simple_task)("arg2") await docket.add(another_task)("arg3") await assert_task_count(docket, count=3) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_assert_task_count_for_specific_function ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 203 async def test_assert_task_count_for_specific_function( docket: Docket, simple_task: AsyncMock, another_task: AsyncMock ): """assert_task_count should count tasks for a specific function.""" await docket.add(simple_task)("arg1") await docket.add(simple_task)("arg2") await docket.add(another_task)("arg3") await assert_task_count(docket, simple_task, count=2) await assert_task_count(docket, another_task, count=1) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_assert_task_count_zero _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 215 async def test_assert_task_count_zero(docket: Docket, simple_task: AsyncMock): """assert_task_count should handle zero count.""" await assert_task_count(docket, simple_task, count=0) await assert_task_count(docket, count=0) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_assert_task_count_fails_with_wrong_count ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 221 async def test_assert_task_count_fails_with_wrong_count( docket: Docket, simple_task: AsyncMock ): """assert_task_count should fail with clear error when count is wrong.""" await docket.add(simple_task)("arg1") await docket.add(simple_task)("arg2") with pytest.raises(AssertionError, match="Expected 3.*found 2"): await assert_task_count(docket, simple_task, count=3) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_assert_task_count_with_function_name __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 232 async def test_assert_task_count_with_function_name( docket: Docket, simple_task: AsyncMock ): """assert_task_count should work with function name as string.""" docket.register(simple_task) await docket.add("simple_task")("arg1") await docket.add("simple_task")("arg2") await assert_task_count(docket, "simple_task", count=2) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_assert_no_tasks_succeeds_when_empty __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 243 async def test_assert_no_tasks_succeeds_when_empty(docket: Docket): """assert_no_tasks should succeed when docket is empty.""" await assert_no_tasks(docket) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_assert_no_tasks_fails_when_tasks_present ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 248 async def test_assert_no_tasks_fails_when_tasks_present( docket: Docket, simple_task: AsyncMock ): """assert_no_tasks should fail when tasks are present.""" await docket.add(simple_task)("arg1") with pytest.raises(AssertionError, match="Expected no tasks.*found 1"): await assert_no_tasks(docket) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_assert_no_tasks_after_tasks_complete __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 258 async def test_assert_no_tasks_after_tasks_complete( docket: Docket, worker: Worker, simple_task: AsyncMock ): """assert_no_tasks should succeed after tasks complete.""" await docket.add(simple_task)("arg1") # Should fail while task is scheduled with pytest.raises(AssertionError): await assert_no_tasks(docket) # Run tasks to completion await worker.run_until_finished() # Should succeed now await assert_no_tasks(docket) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_assert_task_scheduled_partial_kwargs_match _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 275 async def test_assert_task_scheduled_partial_kwargs_match( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should match subset of kwargs.""" await docket.add(simple_task)(kwarg1="value1", kwarg2="value2", kwarg3="value3") # Should succeed when checking only some kwargs await assert_task_scheduled(docket, simple_task, kwargs={"kwarg1": "value1"}) await assert_task_scheduled( docket, simple_task, kwargs={"kwarg1": "value1", "kwarg2": "value2"} ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_assert_task_count_includes_future_and_immediate_tasks _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 288 async def test_assert_task_count_includes_future_and_immediate_tasks( docket: Docket, simple_task: AsyncMock, now: Callable[[], datetime] ): """assert_task_count should count both immediate and future tasks.""" await docket.add(simple_task)("immediate") later = now() + timedelta(seconds=10) await docket.add(simple_task, when=later)("future1") await docket.add(simple_task, when=later)("future2") await assert_task_count(docket, simple_task, count=3) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_assert_task_scheduled_fails_when_key_doesnt_match ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 300 async def test_assert_task_scheduled_fails_when_key_doesnt_match( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should fail when key doesn't match.""" await docket.add(simple_task, key="task-1")("arg1") with pytest.raises(AssertionError, match="key='task-2'"): await assert_task_scheduled(docket, simple_task, key="task-2") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_assert_task_scheduled_fails_on_empty_docket ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_testing.py, line 310 async def test_assert_task_scheduled_fails_on_empty_docket( docket: Docket, simple_task: AsyncMock ): """assert_task_scheduled should fail with clear message on empty docket.""" with pytest.raises(AssertionError, match="no tasks scheduled on docket"): await assert_task_scheduled(docket, simple_task) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, simple_task, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_uuid7_returns_uuid_object[vendored] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 32 def test_uuid7_returns_uuid_object(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_uuid7_returns_uuid_object[docket] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 32 def test_uuid7_returns_uuid_object(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_uuid7_returns_uuid_object[stdlib] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 32 def test_uuid7_returns_uuid_object(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_uuid7_is_version_7[vendored] ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 38 def test_uuid7_is_version_7(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_uuid7_is_version_7[docket] _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 38 def test_uuid7_is_version_7(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_uuid7_is_version_7[stdlib] _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 38 def test_uuid7_is_version_7(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_uuid7_is_variant_rfc4122[vendored] ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 45 def test_uuid7_is_variant_rfc4122(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_uuid7_is_variant_rfc4122[docket] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 45 def test_uuid7_is_variant_rfc4122(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_uuid7_is_variant_rfc4122[stdlib] ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 45 def test_uuid7_is_variant_rfc4122(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_uuid7_chronological_ordering[vendored] _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 52 def test_uuid7_chronological_ordering(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_uuid7_chronological_ordering[docket] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 52 def test_uuid7_chronological_ordering(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_uuid7_chronological_ordering[stdlib] __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 52 def test_uuid7_chronological_ordering(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_uuid7_monotonicity_rapid_generation[vendored] _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 65 def test_uuid7_monotonicity_rapid_generation( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_uuid7_monotonicity_rapid_generation[docket] ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 65 def test_uuid7_monotonicity_rapid_generation( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_uuid7_monotonicity_rapid_generation[stdlib] ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 65 def test_uuid7_monotonicity_rapid_generation( file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_uuid7_uniqueness[vendored] _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 87 def test_uuid7_uniqueness(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_uuid7_uniqueness[docket] ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 87 def test_uuid7_uniqueness(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_uuid7_uniqueness[stdlib] ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 87 def test_uuid7_uniqueness(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_uuid7_as_str[vendored] _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 99 def test_uuid7_as_str(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_str[docket] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 99 def test_uuid7_as_str(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_str[stdlib] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 99 def test_uuid7_as_str(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_uuid7_as_int[vendored] _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 111 def test_uuid7_as_int(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_int[docket] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 111 def test_uuid7_as_int(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_int[stdlib] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 111 def test_uuid7_as_int(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_uuid7_as_hex[vendored] _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 119 def test_uuid7_as_hex(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_hex[docket] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 119 def test_uuid7_as_hex(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_uuid7_as_hex[stdlib] __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 119 def test_uuid7_as_hex(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_uuid7_as_bytes[vendored] ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 129 def test_uuid7_as_bytes(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_uuid7_as_bytes[docket] _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 129 def test_uuid7_as_bytes(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_uuid7_as_bytes[stdlib] _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/test_uuid7.py, line 129 def test_uuid7_as_bytes(uuid7_impl: Callable[[], uuid.UUID]) -> None: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, uuid7_impl, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_redis_key_cleanup_successful_task ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 14 async def test_redis_key_cleanup_successful_task( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker ) -> None: """Test that Redis keys are properly cleaned up after successful task execution. After execution, a tombstone (runs hash) with COMPLETED state remains with TTL. The autouse key_leak_checker fixture verifies no leaks automatically. """ # Create and register a simple task task_executed = False async def successful_task(): nonlocal task_executed task_executed = True await asyncio.sleep(0.01) # Small delay to ensure proper execution flow docket.register(successful_task) # Schedule and execute the task await docket.add(successful_task)() await worker.run_until_finished() # Verify task executed successfully assert task_executed, "Task should have executed successfully" # The autouse key_leak_checker fixture will verify no leaks on teardown file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_redis_key_cleanup_failed_task _____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 42 async def test_redis_key_cleanup_failed_task( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker ) -> None: """Test that Redis keys are properly cleaned up after failed task execution. After failure, a tombstone (runs hash) with FAILED state remains with TTL. The autouse key_leak_checker fixture verifies no leaks automatically. """ # Create a task that will fail task_attempted = False async def failing_task(): nonlocal task_attempted task_attempted = True raise ValueError("Intentional test failure") docket.register(failing_task) # Schedule and execute the task (should fail) await docket.add(failing_task)() await worker.run_until_finished() # Verify task was attempted assert task_attempted, "Task should have been attempted" # The autouse key_leak_checker fixture will verify no leaks on teardown file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_redis_key_cleanup_cancelled_task ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 70 async def test_redis_key_cleanup_cancelled_task( docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker ) -> None: """Test that Redis keys are properly cleaned up after task cancellation. After cancellation, a tombstone (runs hash) with CANCELLED state remains with TTL to support the claim check pattern via get_execution(). All other keys (queue, parked data, etc.) are cleaned up. The autouse key_leak_checker fixture verifies no leaks automatically. """ from docket.execution import ExecutionState # Create a task that won't be executed task_executed = False async def task_to_cancel(): nonlocal task_executed task_executed = True # pragma: no cover docket.register(task_to_cancel) # Schedule the task for future execution future_time = datetime.now(timezone.utc) + timedelta(seconds=10) execution = await docket.add(task_to_cancel, future_time)() # Cancel the task await docket.cancel(execution.key) # Run worker to process any cleanup await worker.run_until_finished() # Verify task was not executed assert not task_executed, "Task should not have been executed after cancellation" # Verify tombstone exists with CANCELLED state retrieved = await docket.get_execution(execution.key) assert retrieved is not None, "Tombstone should exist after cancellation" assert retrieved.state == ExecutionState.CANCELLED # The autouse key_leak_checker fixture will verify no leaks on teardown file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_verify_remaining_keys_have_ttl_detects_leaks ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 112 async def test_verify_remaining_keys_have_ttl_detects_leaks( redis_url: str, docket: Docket, worker: Worker, key_leak_checker: KeyCountChecker ) -> None: """Test that verify_remaining_keys_have_ttl properly detects keys without TTL.""" leak_key = docket.key("test-leak") # Exempt the leak from autouse checker key_leak_checker.add_exemption(leak_key) async with docket.redis() as redis: # Intentionally create a key without TTL (simulating a memory leak) await redis.set(leak_key, "leaked-value") # Remove exemption and manually verify it would detect the leak key_leak_checker.exemptions.remove(leak_key) with pytest.raises(AssertionError, match="Memory leak detected"): await key_leak_checker.verify_remaining_keys_have_ttl() # Clean up await redis.delete(leak_key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_consumer_group_created_on_first_worker_read ______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 134 async def test_consumer_group_created_on_first_worker_read( redis_url: str, make_docket_name: Callable[[], str] ): """Consumer group should be created when worker first tries to read. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) async def dummy_task(): pass async with docket: docket.register(dummy_task) await docket.add(dummy_task)() async with docket.redis() as redis: assert await redis.exists(docket.stream_key) groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 0, "Consumer group should not exist before worker" async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() async with docket.redis() as redis: groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 1 assert groups[0]["name"] == docket.worker_group_name.encode() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_multiple_workers_racing_to_create_group ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 169 async def test_multiple_workers_racing_to_create_group( redis_url: str, make_docket_name: Callable[[], str] ): """Multiple workers starting simultaneously should all succeed. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) call_counts: dict[str, int] = {} async def counting_task(worker: Worker = CurrentWorker()): call_counts[worker.name] = call_counts.get(worker.name, 0) + 1 async with docket: docket.register(counting_task) for _ in range(20): await docket.add(counting_task)() workers = [ Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) for _ in range(5) ] for w in workers: await w.__aenter__() await asyncio.gather(*[w.run_until_finished() for w in workers]) for w in workers: await w.__aexit__(None, None, None) total_calls = sum(call_counts.values()) assert total_calls == 20 async with docket.redis() as redis: groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_worker_handles_nogroup_error_gracefully ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 213 async def test_worker_handles_nogroup_error_gracefully( redis_url: str, make_docket_name: Callable[[], str] ): """Worker should handle NOGROUP error and create group automatically. Issue #206: Lazy stream/consumer group bootstrap. """ docket = Docket(name=make_docket_name(), url=redis_url) task_executed = False async def simple_task(): nonlocal task_executed task_executed = True async with docket: docket.register(simple_task) await docket.add(simple_task)() async with docket.redis() as redis: groups = await redis.xinfo_groups(docket.stream_key) assert len(groups) == 0 async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() assert task_executed, "Task should have been executed" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_handles_nogroup_in_xreadgroup __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_bootstrap.py, line 246 async def test_worker_handles_nogroup_in_xreadgroup( redis_url: str, make_docket_name: Callable[[], str], caplog: pytest.LogCaptureFixture, ): """Worker should handle NOGROUP error in xreadgroup and retry. Issue #206: Lazy stream/consumer group bootstrap. This tests the rare case where xautoclaim succeeds but then xreadgroup gets NOGROUP (e.g., if the group was deleted between the two calls). """ from unittest.mock import patch import redis.asyncio from redis.exceptions import ResponseError docket = Docket(name=make_docket_name(), url=redis_url) task_executed = False async def simple_task(): nonlocal task_executed task_executed = True async with docket: docket.register(simple_task) # Add a task so the worker has something to process await docket.add(simple_task)() # Ensure group exists first so xautoclaim won't hit NOGROUP await docket._ensure_stream_and_group() # pyright: ignore[reportPrivateUsage] # Track how many times xreadgroup is called call_count = 0 original_redis_xreadgroup = redis.asyncio.Redis.xreadgroup original_cluster_xreadgroup = redis.asyncio.RedisCluster.xreadgroup async def mock_redis_xreadgroup( # pragma: no cover # pyright: ignore[reportUnknownParameterType] self: redis.asyncio.Redis, # type: ignore[type-arg] *args: object, **kwargs: object, ) -> object: nonlocal call_count call_count += 1 if call_count == 1: raise ResponseError("NOGROUP No such key or consumer group") return await original_redis_xreadgroup(self, *args, **kwargs) # type: ignore[arg-type] async def mock_cluster_xreadgroup( # pragma: no cover # pyright: ignore[reportUnknownParameterType] self: redis.asyncio.RedisCluster, # type: ignore[type-arg] *args: object, **kwargs: object, ) -> object: nonlocal call_count call_count += 1 if call_count == 1: raise ResponseError("NOGROUP No such key or consumer group") return await original_cluster_xreadgroup(self, *args, **kwargs) # type: ignore[arg-type] with ( patch.object(redis.asyncio.Redis, "xreadgroup", mock_redis_xreadgroup), patch.object( redis.asyncio.RedisCluster, "xreadgroup", mock_cluster_xreadgroup ), caplog.at_level(logging.DEBUG), ): async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: await worker.run_until_finished() # Task should have executed after NOGROUP was handled assert task_executed # Should have called xreadgroup at least twice (once NOGROUP, then success) assert call_count >= 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_worker_acknowledges_messages ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 23 async def test_worker_acknowledges_messages( docket: Docket, worker: Worker, the_task: AsyncMock ): """The worker should acknowledge and drain messages as they're processed""" await docket.add(the_task)() await worker.run_until_finished() async with docket.redis() as redis: pending_info = await redis.xpending( name=docket.stream_key, groupname=docket.worker_group_name, ) assert pending_info["pending"] == 0 assert await redis.xlen(docket.stream_key) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________________ ERROR at setup of test_two_workers_split_work _________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 42 async def test_two_workers_split_work(docket: Docket): """Two workers should split the workload""" # Use concurrency=1 so workers claim tasks one at a time for finer distribution worker1 = Worker(docket, concurrency=1) worker2 = Worker(docket, concurrency=1) call_counts = { worker1: 0, worker2: 0, } # Tasks wait for this event, ensuring both workers claim work before any completes proceed = asyncio.Event() async def the_task(worker: Worker = CurrentWorker()): await proceed.wait() call_counts[worker] += 1 for _ in range(100): await docket.add(the_task)() async with worker1, worker2: run1 = asyncio.create_task(worker1.run_until_finished()) run2 = asyncio.create_task(worker2.run_until_finished()) # Give both workers time to claim tasks await asyncio.sleep(0.2) # Let all tasks complete proceed.set() await run1 await run2 assert call_counts[worker1] + call_counts[worker2] == 100 # Both workers should participate (at least 20% each) assert call_counts[worker1] > 20 assert call_counts[worker2] > 20 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_reconnects_when_connection_is_lost _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 80 async def test_worker_reconnects_when_connection_is_lost( docket: Docket, the_task: AsyncMock ): """The worker should reconnect when the connection is lost""" worker = Worker(docket, reconnection_delay=timedelta(milliseconds=100)) # Mock the _worker_loop method to fail once then succeed original_worker_loop = worker._worker_loop # type: ignore[protected-access] call_count = 0 async def mock_worker_loop(redis: Redis, forever: bool = False): nonlocal call_count call_count += 1 if call_count == 1: raise ConnectionError("Simulated connection error") return await original_worker_loop(redis, forever=forever) worker._worker_loop = mock_worker_loop # type: ignore[protected-access] await docket.add(the_task)() async with worker: await worker.run_until_finished() assert call_count == 2 the_task.assert_called_once() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_worker_respects_concurrency_limit ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 108 async def test_worker_respects_concurrency_limit(docket: Docket, worker: Worker): """Worker should not exceed its configured concurrency limit""" task_results: set[int] = set() currently_running = 0 max_concurrency_observed = 0 async def concurrency_tracking_task(index: int): nonlocal currently_running, max_concurrency_observed currently_running += 1 max_concurrency_observed = max(max_concurrency_observed, currently_running) await asyncio.sleep(0.1) # Long enough to overlap even on slow CI runners task_results.add(index) currently_running -= 1 for i in range(50): await docket.add(concurrency_tracking_task)(index=i) worker.concurrency = 5 await worker.run_until_finished() assert task_results == set(range(50)) assert 1 < max_concurrency_observed <= 5 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_handles_unregistered_task_execution_on_initial_delivery _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 138 async def test_worker_handles_unregistered_task_execution_on_initial_delivery( docket: Docket, worker: Worker, caplog: pytest.LogCaptureFixture, the_task: AsyncMock, ): """worker should handle the case when an unregistered task is executed""" await docket.add(the_task)() docket.tasks.pop("the_task") with caplog.at_level(logging.WARNING): await worker.run_until_finished() # Default fallback logs warning and ACKs the message assert "Unknown task 'the_task' received - dropping" in caplog.text assert "Register via CLI (--tasks your.module:tasks)" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_handles_unregistered_task_execution_on_redelivery _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 157 async def test_worker_handles_unregistered_task_execution_on_redelivery( docket: Docket, caplog: pytest.LogCaptureFixture, ): """worker should handle the case when an unregistered task is redelivered""" async def test_task(): await asyncio.sleep(0.01) # Register and schedule the task first docket.register(test_task) await docket.add(test_task)() # First run the task successfully to ensure line 249 coverage async with Worker( docket, redelivery_timeout=timedelta(milliseconds=100) ) as worker_success: await worker_success.run_until_finished() # Schedule another task for the redelivery test await docket.add(test_task)() # First worker fails during execution async with Worker( docket, redelivery_timeout=timedelta(milliseconds=100) ) as worker_a: worker_a._execute = AsyncMock(side_effect=Exception("Simulated failure")) # type: ignore[protected-access] with pytest.raises(ExceptionGroup) as exc_info: await worker_a.run_until_finished() assert any("Simulated failure" in str(e) for e in exc_info.value.exceptions) # Verify task is pending redelivery async with docket.redis() as redis: pending_info = await redis.xpending( docket.stream_key, docket.worker_group_name, ) assert pending_info["pending"] == 1 await asyncio.sleep(0.125) # Wait for redelivery timeout # Unregister the task before redelivery docket.tasks.pop("test_task") # Second worker should handle the unregistered task gracefully async with Worker( docket, redelivery_timeout=timedelta(milliseconds=100) ) as worker_b: with caplog.at_level(logging.WARNING): await worker_b.run_until_finished() # Default fallback logs warning and ACKs the message assert "Unknown task 'test_task' received - dropping" in caplog.text assert "Register via CLI (--tasks your.module:tasks)" in caplog.text file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_worker_announcements __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 216 async def test_worker_announcements( docket: Docket, the_task: AsyncMock, another_task: AsyncMock ): # Use 100ms heartbeat - short enough for fast tests, long enough to be reliable # under CPU contention in CI environments heartbeat = timedelta(milliseconds=100) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 docket.register(the_task) docket.register(another_task) async with Worker(docket, name="worker-a") as worker_a: await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.workers() assert len(workers) == 1 assert worker_a.name in {w.name for w in workers} async with Worker(docket, name="worker-b") as worker_b: await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.workers() assert len(workers) == 2 assert {w.name for w in workers} == {worker_a.name, worker_b.name} for worker in workers: # Allow generous timing tolerance - CI can have significant delays assert worker.last_seen > datetime.now(timezone.utc) - (heartbeat * 20) assert worker.tasks == builtin_tasks | {"the_task", "another_task"} await asyncio.sleep(heartbeat.total_seconds() * 10) workers = await docket.workers() assert len(workers) == 1 assert worker_a.name in {w.name for w in workers} assert worker_b.name not in {w.name for w in workers} await asyncio.sleep(heartbeat.total_seconds() * 10) workers = await docket.workers() assert len(workers) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_task_announcements ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 260 async def test_task_announcements( docket: Docket, the_task: AsyncMock, another_task: AsyncMock ): """Test that we can ask about which workers are available for a task""" # Use 100ms heartbeat - short enough for fast tests, long enough to be reliable # under CPU contention in CI environments heartbeat = timedelta(milliseconds=100) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 docket.register(the_task) docket.register(another_task) async with Worker(docket, name="worker-a") as worker_a: await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.task_workers("the_task") assert len(workers) == 1 assert worker_a.name in {w.name for w in workers} async with Worker(docket, name="worker-b") as worker_b: await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.task_workers("the_task") assert len(workers) == 2 assert {w.name for w in workers} == {worker_a.name, worker_b.name} for worker in workers: # Allow generous timing tolerance - CI can have significant delays assert worker.last_seen > datetime.now(timezone.utc) - (heartbeat * 20) assert worker.tasks == builtin_tasks | {"the_task", "another_task"} await asyncio.sleep(heartbeat.total_seconds() * 10) workers = await docket.task_workers("the_task") assert len(workers) == 1 assert worker_a.name in {w.name for w in workers} assert worker_b.name not in {w.name for w in workers} await asyncio.sleep(heartbeat.total_seconds() * 10) workers = await docket.task_workers("the_task") assert len(workers) == 0 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_recovers_from_redis_errors[error0] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 305 @pytest.mark.parametrize( "error", [ ConnectionError("oof"), ValueError("woops"), ], ) async def test_worker_recovers_from_redis_errors( docket: Docket, the_task: AsyncMock, monkeypatch: pytest.MonkeyPatch, error: Exception, ): """Should recover from errors and continue sending heartbeats""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 docket.register(the_task) original_redis = docket.redis error_time = None redis_calls = 0 @asynccontextmanager async def mock_redis() -> AsyncGenerator[Redis | RedisCluster, None]: nonlocal redis_calls, error_time redis_calls += 1 if redis_calls == 2: error_time = datetime.now(timezone.utc) raise error async with original_redis() as r: yield r monkeypatch.setattr(docket, "redis", mock_redis) async with Worker(docket) as worker: await asyncio.sleep(heartbeat.total_seconds() * 1.5) await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.workers() assert len(workers) == 1 assert worker.name in {w.name for w in workers} # Verify that the last_seen timestamp is after our error worker_info = next(w for w in workers if w.name == worker.name) assert error_time assert worker_info.last_seen > error_time, ( "Worker should have sent heartbeats after the Redis error" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_recovers_from_redis_errors[error1] _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 305 @pytest.mark.parametrize( "error", [ ConnectionError("oof"), ValueError("woops"), ], ) async def test_worker_recovers_from_redis_errors( docket: Docket, the_task: AsyncMock, monkeypatch: pytest.MonkeyPatch, error: Exception, ): """Should recover from errors and continue sending heartbeats""" heartbeat = timedelta(milliseconds=20) docket.heartbeat_interval = heartbeat docket.missed_heartbeats = 3 docket.register(the_task) original_redis = docket.redis error_time = None redis_calls = 0 @asynccontextmanager async def mock_redis() -> AsyncGenerator[Redis | RedisCluster, None]: nonlocal redis_calls, error_time redis_calls += 1 if redis_calls == 2: error_time = datetime.now(timezone.utc) raise error async with original_redis() as r: yield r monkeypatch.setattr(docket, "redis", mock_redis) async with Worker(docket) as worker: await asyncio.sleep(heartbeat.total_seconds() * 1.5) await asyncio.sleep(heartbeat.total_seconds() * 5) workers = await docket.workers() assert len(workers) == 1 assert worker.name in {w.name for w in workers} # Verify that the last_seen timestamp is after our error worker_info = next(w for w in workers if w.name == worker.name) assert error_time assert worker_info.last_seen > error_time, ( "Worker should have sent heartbeats after the Redis error" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_worker_can_be_told_to_skip_automatic_tasks _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 361 async def test_worker_can_be_told_to_skip_automatic_tasks(docket: Docket): """A worker can be told to skip automatic tasks""" from docket import Perpetual called = False async def perpetual_task( perpetual: Perpetual = Perpetual( every=timedelta(milliseconds=50), automatic=True ), ): nonlocal called called = True # pragma: no cover docket.register(perpetual_task) # Without the flag, this would hang because the task would always be scheduled async with Worker(docket, schedule_automatic_tasks=False) as worker: await worker.run_until_finished() assert not called file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_cleanup_without_dependencies ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 384 async def test_worker_concurrency_cleanup_without_dependencies(docket: Docket): """Test worker cleanup when dependencies are not defined.""" cleanup_executed = False async def simple_task(): nonlocal cleanup_executed # Force an exception after dependencies would be set raise ValueError("Force cleanup path") await docket.add(simple_task)() async with Worker(docket) as worker: # This should trigger the finally block cleanup await worker.run_until_finished() # Exception was handled by worker, test that it didn't crash cleanup_executed = True assert cleanup_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_worker_concurrency_no_limit_with_custom_docket _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 404 async def test_worker_concurrency_no_limit_with_custom_docket(docket: Docket): """Test early return when task has no concurrency limit using custom docket.""" task_executed = False async def task_without_concurrency(): nonlocal task_executed task_executed = True await docket.add(task_without_concurrency)() async with Worker(docket) as worker: await worker.run_until_finished() assert task_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_exception_before_dependencies __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_core.py, line 420 async def test_worker_exception_before_dependencies(docket: Docket): """Test finally block when exception occurs before dependencies are set.""" task_failed = False async def task_that_will_fail(): nonlocal task_failed task_failed = True raise RuntimeError("Test exception for coverage") try: await task_that_will_fail() except RuntimeError: pass # Reset flag to test worker behavior task_failed = False # Mock resolved_dependencies to fail before setting dependencies await docket.add(task_that_will_fail)() async with Worker(docket) as worker: # Patch resolved_dependencies to raise an exception immediately with patch("docket.worker.resolved_dependencies") as mock_deps: # Create a context manager that fails on entry context = AsyncMock() context.__aenter__.side_effect = RuntimeError( "Dependencies failed to resolve" ) mock_deps.return_value = context # This should trigger the finally block where "dependencies" not in locals() await worker.run_until_finished() # The task function shouldn't run via worker due to dependency failure assert task_failed is False file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_invariant_tasks_by_key_empty_after_completion _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 20 async def test_invariant_tasks_by_key_empty_after_completion(docket: Docket): """After run_until_finished, _tasks_by_key should be empty (all tasks done).""" async def simple_task(): pass docket.register(simple_task) async with Worker(docket, concurrency=4) as worker: for _ in range(50): await docket.add(simple_task)() await worker.run_until_finished() # After completion, _tasks_by_key should be empty assert len(worker._tasks_by_key) == 0 # type: ignore[protected-access] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____ ERROR at setup of test_invariant_tasks_by_key_no_growth_over_batches _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 38 async def test_invariant_tasks_by_key_no_growth_over_batches(docket: Docket): """Running multiple batches should not accumulate entries in _tasks_by_key.""" async def simple_task(): pass docket.register(simple_task) async with Worker(docket, concurrency=4) as worker: for batch in range(5): for _ in range(20): await docket.add(simple_task)() await worker.run_until_finished() # After each batch, verify cleanup assert len(worker._tasks_by_key) == 0, f"Leak after batch {batch}" # type: ignore[protected-access] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_invariant_execution_counts_empty_after_completion ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 56 async def test_invariant_execution_counts_empty_after_completion(docket: Docket): """_execution_counts should be empty after normal run_until_finished (no run_at_most).""" async def simple_task(): pass docket.register(simple_task) async with Worker(docket, concurrency=4) as worker: for _ in range(10): await docket.add(simple_task)() await worker.run_until_finished() # After normal completion, _execution_counts should be empty assert len(worker._execution_counts) == 0 # type: ignore[protected-access] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_invariant_execution_counts_cleared_after_run_at_most __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 74 async def test_invariant_execution_counts_cleared_after_run_at_most(docket: Docket): """_execution_counts should be cleared after run_at_most completes.""" iteration_count = 0 async def perpetual_task( perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=10)), ): nonlocal iteration_count iteration_count += 1 docket.register(perpetual_task) await docket.add(perpetual_task, key="test-perpetual")() async with Worker(docket, concurrency=1) as worker: await worker.run_at_most({"test-perpetual": 3}) # run_at_most clears _execution_counts in its finally block assert len(worker._execution_counts) == 0 # type: ignore[protected-access] assert iteration_count == 3 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_invariant_worker_attributes_deleted_after_exit _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 96 async def test_invariant_worker_attributes_deleted_after_exit(docket: Docket): """Worker internal attributes should be deleted after context exit.""" worker = Worker(docket) await worker.__aenter__() # Attributes exist during context assert hasattr(worker, "_tasks_by_key") assert hasattr(worker, "_execution_counts") assert hasattr(worker, "_worker_stopping") assert hasattr(worker, "_worker_done") assert hasattr(worker, "_cancellation_ready") assert hasattr(worker, "_heartbeat_task") assert hasattr(worker, "_shared_context") await worker.__aexit__(None, None, None) # Attributes cleaned up after exit assert not hasattr(worker, "_tasks_by_key") assert not hasattr(worker, "_execution_counts") assert not hasattr(worker, "_worker_stopping") assert not hasattr(worker, "_worker_done") assert not hasattr(worker, "_cancellation_ready") assert not hasattr(worker, "_heartbeat_task") assert not hasattr(worker, "_shared_context") assert not hasattr(worker, "_stack") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_invariant_cleanup_after_task_exceptions ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 123 async def test_invariant_cleanup_after_task_exceptions(docket: Docket): """_tasks_by_key should be cleaned up even when tasks raise exceptions.""" async def failing_task(): raise ValueError("intentional failure") docket.register(failing_task) async with Worker(docket, concurrency=4) as worker: for _ in range(10): await docket.add(failing_task)() await worker.run_until_finished() # Even with failures, _tasks_by_key should be empty assert len(worker._tasks_by_key) == 0 # type: ignore[protected-access] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_invariant_cleanup_with_varied_tasks __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 141 async def test_invariant_cleanup_with_varied_tasks(docket: Docket): """Cleanup should work with all task types: deps, timeouts, returns, kwargs.""" async def simple_task(): pass async def task_with_deps( execution: Execution = CurrentExecution(), logger: logging.LoggerAdapter[logging.Logger] = TaskLogger(), ): logger.info(f"Running {execution.key}") async def task_with_timeout( timeout: Timeout = Timeout(timedelta(seconds=5)), ): await asyncio.sleep(0.01) async def task_with_return() -> str: return "result" async def task_with_kwargs(a: int, b: str = "default"): pass for task in [ simple_task, task_with_deps, task_with_timeout, task_with_return, task_with_kwargs, ]: docket.register(task) async with Worker(docket, concurrency=4) as worker: # Add varied tasks for _ in range(5): await docket.add(simple_task)() await docket.add(task_with_deps)() await docket.add(task_with_timeout)() await docket.add(task_with_return)() await docket.add(task_with_kwargs)(a=1, b="test") await worker.run_until_finished() # Verify cleanup regardless of task type assert len(worker._tasks_by_key) == 0 # type: ignore[protected-access] file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_invariant_shared_context_reset_after_worker_exit ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_invariants.py, line 188 async def test_invariant_shared_context_reset_after_worker_exit(docket: Docket): """SharedContext ContextVars should be reset after worker exits.""" worker = Worker(docket) await worker.__aenter__() # During context, resolved should have a value resolved = SharedContext.resolved.get() assert isinstance(resolved, dict) await worker.__aexit__(None, None, None) # After exit, resolved should be reset (LookupError since no value was set before) with pytest.raises(LookupError): SharedContext.resolved.get() file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_run_forever_cancels_promptly_with_future_tasks _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 21 async def test_run_forever_cancels_promptly_with_future_tasks( docket: Docket, the_task: AsyncMock, now: Callable[[], datetime] ): """run_forever() should cancel promptly even with future-scheduled tasks. Issue #260: Perpetual tasks block worker shutdown. """ execution = await docket.add(the_task, now() + timedelta(seconds=15))() async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: worker_task = asyncio.create_task(worker.run_forever()) await asyncio.sleep(0.05) worker_task.cancel() with suppress(asyncio.CancelledError): # pragma: no branch async with async_timeout(1.0): # pragma: no branch await worker_task the_task.assert_not_called() await testing.assert_task_scheduled(docket, the_task, key=execution.key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_run_until_finished_exits_promptly_with_future_tasks __ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 46 async def test_run_until_finished_exits_promptly_with_future_tasks( docket: Docket, the_task: AsyncMock, now: Callable[[], datetime] ): """run_until_finished() should exit promptly when only future tasks exist. Issue #260: Perpetual tasks block worker shutdown. """ execution = await docket.add(the_task, now() + timedelta(seconds=15))() async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: async with async_timeout(1.0): # pragma: no branch await worker.run_until_finished() the_task.assert_not_called() await testing.assert_task_scheduled(docket, the_task, key=execution.key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_run_at_most_cancels_promptly_with_future_tasks _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 67 async def test_run_at_most_cancels_promptly_with_future_tasks( docket: Docket, the_task: AsyncMock, now: Callable[[], datetime] ): """run_at_most() should cancel promptly even with future-scheduled tasks. Issue #260: Perpetual tasks block worker shutdown. """ execution = await docket.add(the_task, now() + timedelta(seconds=15))() async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: worker_task = asyncio.create_task(worker.run_at_most({execution.key: 1})) await asyncio.sleep(0.05) worker_task.cancel() with suppress(asyncio.CancelledError): # pragma: no branch async with async_timeout(1.0): # pragma: no branch await worker_task the_task.assert_not_called() await testing.assert_task_scheduled(docket, the_task, key=execution.key) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_aexit_completes_on_immediate_cancellation ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 92 async def test_worker_aexit_completes_on_immediate_cancellation(docket: Docket): """Verify __aexit__ doesn't hang when worker is cancelled before setup completes. This tests the fix for a race condition where CancelledError during async setup would leave _worker_done cleared, causing __aexit__ to hang forever. """ async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: worker_task = asyncio.create_task(worker.run_forever()) # Cancel immediately - before setup completes worker_task.cancel() # __aexit__ should complete promptly (within 1 second) # Without the fix, this would hang forever with suppress(asyncio.CancelledError): async with async_timeout(1.0): # pragma: no branch await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_done_set_after_early_cancellation ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 114 async def test_worker_done_set_after_early_cancellation(docket: Docket): """Verify _worker_done is set even when cancelled during setup phase.""" worker = Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) await worker.__aenter__() # Start worker and cancel before it can process any tasks worker_task = asyncio.create_task(worker.run_forever()) await asyncio.sleep(0.01) # Brief yield worker_task.cancel() with suppress(asyncio.CancelledError): await worker_task # Verify the event is set after the worker loop finishes # (must check before __aexit__ which deletes the attribute) assert worker._worker_done.is_set() # pyright: ignore[reportPrivateUsage] # __aexit__ should complete promptly because _worker_done should be set async with async_timeout(1.0): # pragma: no branch await worker.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___________ ERROR at setup of test_worker_rapid_start_cancel_cycles ____________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 140 async def test_worker_rapid_start_cancel_cycles(docket: Docket): """Verify worker handles rapid start/cancel cycles without hanging.""" for _ in range(10): async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: worker_task = asyncio.create_task(worker.run_forever()) # Random delay before cancelling await asyncio.sleep(random.uniform(0, 0.02)) worker_task.cancel() with suppress(asyncio.CancelledError): async with async_timeout(1.0): # pragma: no branch await worker_task file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_cancellation_during_setup_before_scheduler_created _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 158 async def test_worker_cancellation_during_setup_before_scheduler_created( docket: Docket, ): """Test cancellation during _cancellation_ready.wait() before scheduler/lease tasks exist. This hits the None branches in the finally block for scheduler_task and lease_renewal_task. """ worker = Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) await worker.__aenter__() # Patch _cancellation_listener to block indefinitely on _cancellation_ready # This ensures scheduler_task and lease_renewal_task are never created async def slow_listener() -> None: # Don't set _cancellation_ready, just wait forever await asyncio.Event().wait() with patch.object(worker, "_cancellation_listener", slow_listener): worker_task = asyncio.create_task(worker.run_forever()) # Give time for the task to start and reach _cancellation_ready.wait() await asyncio.sleep(0.01) worker_task.cancel() with suppress(asyncio.CancelledError): async with async_timeout(1.0): # pragma: no branch await worker_task # Cleanup async with async_timeout(1.0): # pragma: no branch await worker.__aexit__(None, None, None) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_cancellation_listener_handles_connection_error _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 193 async def test_cancellation_listener_handles_connection_error(docket: Docket): """Test that _cancellation_listener handles ConnectionError and reconnects.""" error_handled = asyncio.Event() error_count = 0 original_pubsub = docket._pubsub # pyright: ignore[reportPrivateUsage] @asynccontextmanager async def failing_pubsub() -> AsyncGenerator[Any, None]: nonlocal error_count async with original_pubsub() as pubsub: original_get_message = pubsub.get_message async def failing_get_message( **kwargs: Any, ) -> dict[str, Any] | None: nonlocal error_count error_count += 1 if error_count == 1: raise ConnectionError("Test connection error") # Signal that we got past the error handler error_handled.set() return await original_get_message(**kwargs) # pyright: ignore[reportUnknownVariableType] pubsub.get_message = failing_get_message # type: ignore[method-assign] yield pubsub async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: with patch.object(docket, "_pubsub", failing_pubsub): worker_task = asyncio.create_task(worker.run_forever()) # Wait for the error to be handled and reconnection to succeed async with async_timeout(5.0): # pragma: no branch await error_handled.wait() worker_task.cancel() with suppress(asyncio.CancelledError): # pragma: no branch await worker_task assert error_count >= 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_cancellation_listener_handles_generic_exception ____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 236 async def test_cancellation_listener_handles_generic_exception(docket: Docket): """Test that _cancellation_listener handles generic Exception and continues.""" error_handled = asyncio.Event() error_count = 0 original_pubsub = docket._pubsub # pyright: ignore[reportPrivateUsage] @asynccontextmanager async def failing_pubsub() -> AsyncGenerator[Any, None]: nonlocal error_count async with original_pubsub() as pubsub: original_get_message = pubsub.get_message async def failing_get_message( **kwargs: Any, ) -> dict[str, Any] | None: nonlocal error_count error_count += 1 if error_count == 1: raise RuntimeError("Test generic error") # Signal that we got past the error handler error_handled.set() return await original_get_message(**kwargs) # pyright: ignore[reportUnknownVariableType] pubsub.get_message = failing_get_message # type: ignore[method-assign] yield pubsub async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: with patch.object(docket, "_pubsub", failing_pubsub): worker_task = asyncio.create_task(worker.run_forever()) # Wait for the error to be handled and reconnection to succeed async with async_timeout(5.0): # pragma: no branch await error_handled.wait() worker_task.cancel() with suppress(asyncio.CancelledError): # pragma: no branch await worker_task assert error_count >= 2 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_worker_drains_active_tasks_on_shutdown _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_lifecycle.py, line 279 async def test_worker_drains_active_tasks_on_shutdown(docket: Docket): """Active tasks are gathered and processed in the finally block at shutdown. Uses an event handshake so the task is guaranteed to still be running when the worker is cancelled. The finally block's asyncio.gather waits for the task, and we release it from a separate coroutine. """ task_started = asyncio.Event() task_can_finish = asyncio.Event() task_drained = False async def blocking_task(): nonlocal task_drained task_started.set() await task_can_finish.wait() task_drained = True await docket.add(blocking_task)() async with Worker( docket, minimum_check_interval=timedelta(milliseconds=5), scheduling_resolution=timedelta(milliseconds=5), ) as worker: worker_task = asyncio.create_task(worker.run_forever()) await task_started.wait() worker_task.cancel() # Release the task after the cancel propagates — the finally # block's gather is waiting for this task to complete async def release_task(): await asyncio.sleep(0.05) task_can_finish.set() release = asyncio.create_task(release_task()) with suppress(asyncio.CancelledError): # pragma: no branch async with async_timeout(5.0): # pragma: no branch await worker_task await release assert task_drained file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __ ERROR at setup of test_perpetual_tasks_are_scheduled_close_to_target_time ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 16 async def test_perpetual_tasks_are_scheduled_close_to_target_time( docket: Docket, worker: Worker ): """A perpetual task is scheduled as close to the target period as possible""" timestamps: list[datetime] = [] async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): timestamps.append(datetime.now(timezone.utc)) await docket.add(perpetual_task, key="my-key")(a="a", b=2) await worker.run_at_most({"my-key": 8}) assert len(timestamps) == 8 intervals = [next - previous for previous, next in zip(timestamps, timestamps[1:])] # Skip the first interval as initial scheduling may differ from steady-state rescheduling steady_state_intervals = intervals[1:] average = sum(steady_state_intervals, timedelta(0)) / len(steady_state_intervals) debug = ", ".join([f"{i.total_seconds() * 1000:.2f}ms" for i in intervals]) # It's not reliable to assert the maximum duration on different machine setups, but # we'll make sure that the minimum is observed (within 5ms), which is the guarantee assert average >= timedelta(milliseconds=50), debug file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_worker_can_exit_from_perpetual_tasks_that_queue_further_tasks _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 48 async def test_worker_can_exit_from_perpetual_tasks_that_queue_further_tasks( docket: Docket, worker: Worker ): """A worker can exit if it's processing a perpetual task that queues more tasks""" inner_calls = 0 async def inner_task(): nonlocal inner_calls inner_calls += 1 async def perpetual_task( docket: Docket = CurrentDocket(), perpetual: Perpetual = Perpetual(every=timedelta(milliseconds=50)), ): await docket.add(inner_task)() await docket.add(inner_task)() execution = await docket.add(perpetual_task)() await worker.run_at_most({execution.key: 3}) assert inner_calls == 6 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ___ ERROR at setup of test_worker_can_exit_from_long_horizon_perpetual_tasks ___ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 73 async def test_worker_can_exit_from_long_horizon_perpetual_tasks( docket: Docket, worker: Worker ): """A worker can exit in a timely manner from a perpetual task that has a long horizon because it is stricken on both execution and rescheduling""" calls: int = 0 async def perpetual_task( a: str, b: int, perpetual: Perpetual = Perpetual(every=timedelta(weeks=37)), ): nonlocal calls calls += 1 await docket.add(perpetual_task, key="my-key")(a="a", b=2) await worker.run_at_most({"my-key": 1}) assert calls == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________________ ERROR at setup of test_formatting_durations __________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 95 def test_formatting_durations(): file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______ ERROR at setup of test_worker_timeout_exceeds_redelivery_timeout _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 110 async def test_worker_timeout_exceeds_redelivery_timeout(docket: Docket): """Test worker handles user timeout longer than redelivery timeout.""" task_executed = False async def test_task( timeout: Timeout = Timeout(timedelta(seconds=5)), ): nonlocal task_executed task_executed = True await asyncio.sleep(0.01) await docket.add(test_task)() # Use short redelivery timeout (100ms) to trigger the condition where user timeout > redelivery timeout async with Worker(docket, redelivery_timeout=timedelta(milliseconds=100)) as worker: await worker.run_until_finished() assert task_executed file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ________ ERROR at setup of test_replacement_race_condition_stream_tasks ________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 131 async def test_replacement_race_condition_stream_tasks( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Test that replace() properly cancels tasks already in the stream. This reproduces the race condition where: 1. Task is scheduled for immediate execution 2. Scheduler moves it to stream 3. replace() tries to cancel but only checks queue/hash, not stream 4. Both original and replacement tasks execute """ key = f"my-cool-task:{uuid4()}" # Schedule a task immediately (will be moved to stream quickly) await docket.add(the_task, now(), key=key)("a", "b", c="c") # Let the scheduler move the task to the stream # The scheduler runs every 250ms by default await asyncio.sleep(0.3) # Now replace the task - this should cancel the one in the stream later = now() + timedelta(milliseconds=100) await docket.replace(the_task, later, key=key)("b", "c", c="d") # Run the worker to completion await worker.run_until_finished() # Should only execute the replacement task, not both the_task.assert_awaited_once_with("b", "c", c="d") assert the_task.await_count == 1, ( f"Task was called {the_task.await_count} times, expected 1" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_replace_task_in_queue_before_stream __________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 165 async def test_replace_task_in_queue_before_stream( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Test that replace() works correctly when task is still in queue.""" key = f"my-cool-task:{uuid4()}" # Schedule a task slightly in the future (stays in queue) soon = now() + timedelta(seconds=1) await docket.add(the_task, soon, key=key)("a", "b", c="c") # Replace immediately (before scheduler can move it) later = now() + timedelta(milliseconds=100) await docket.replace(the_task, later, key=key)("b", "c", c="d") await worker.run_until_finished() # Should only execute the replacement the_task.assert_awaited_once_with("b", "c", c="d") assert the_task.await_count == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_rapid_replace_operations ________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 186 async def test_rapid_replace_operations( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Test multiple rapid replace operations.""" key = f"my-cool-task:{uuid4()}" # Schedule initial task await docket.add(the_task, now(), key=key)("a", "b", c="c") # Rapid replacements for i in range(5): when = now() + timedelta(milliseconds=50 + i * 10) await docket.replace(the_task, when, key=key)(f"arg{i}", b=f"b{i}") await worker.run_until_finished() # Should only execute the last replacement the_task.assert_awaited_once_with("arg4", b="b4") assert the_task.await_count == 1 file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_duplicate_execution_race_condition_non_perpetual_task[default_ttl] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 207 @pytest.mark.parametrize( "execution_ttl", [None, timedelta(0)], ids=["default_ttl", "zero_ttl"] ) async def test_duplicate_execution_race_condition_non_perpetual_task( redis_url: str, execution_ttl: timedelta | None, make_docket_name: Callable[[], str] ): """Reproduce race condition where non-perpetual tasks execute multiple times. Bug: known_task_key is deleted BEFORE task function runs (worker.py:588), allowing duplicate docket.add() calls with the same key to succeed while the original task is still executing. Timeline: 1. Task A scheduled with key="task:123" -> known_key set 2. Worker picks up Task A, _perpetuate_if_requested() returns False 3. Worker calls _delete_known_task() -> known_key DELETED 4. Worker starts executing the actual task function (slow task) 5. Meanwhile, docket.add(key="task:123") checks EXISTS known_key -> 0 6. Duplicate task scheduled and picked up by concurrent worker 7. Both tasks execute in parallel Tests both default TTL and execution_ttl=0 to ensure fix doesn't depend on volatile results keys. """ execution_count = 0 task_started = asyncio.Event() async def slow_task(task_id: str): nonlocal execution_count execution_count += 1 task_started.set() await asyncio.sleep(0.3) docket_kwargs: dict[str, object] = { "name": make_docket_name(), "url": redis_url, } if execution_ttl is not None: docket_kwargs["execution_ttl"] = execution_ttl async with Docket(**docket_kwargs) as docket: # type: ignore[arg-type] docket.register(slow_task) task_key = f"race-test:{uuid4()}" async with Worker(docket, concurrency=2) as worker: worker_task = asyncio.create_task(worker.run_until_finished()) # Schedule first task await docket.add(slow_task, key=task_key)("first") # Wait for task to start (known_key already deleted at this point) await asyncio.wait_for(task_started.wait(), timeout=2.0) await asyncio.sleep(0.05) # Small buffer to ensure deletion happened # Attempt duplicate - should be rejected but isn't due to bug await docket.add(slow_task, key=task_key)("second") await asyncio.wait_for(worker_task, timeout=5.0) # BUG: execution_count == 2 (both tasks ran) # EXPECTED: execution_count == 1 (duplicate rejected) assert execution_count == 1, ( f"Task executed {execution_count} times, expected 1" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _ ERROR at setup of test_duplicate_execution_race_condition_non_perpetual_task[zero_ttl] _ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 207 @pytest.mark.parametrize( "execution_ttl", [None, timedelta(0)], ids=["default_ttl", "zero_ttl"] ) async def test_duplicate_execution_race_condition_non_perpetual_task( redis_url: str, execution_ttl: timedelta | None, make_docket_name: Callable[[], str] ): """Reproduce race condition where non-perpetual tasks execute multiple times. Bug: known_task_key is deleted BEFORE task function runs (worker.py:588), allowing duplicate docket.add() calls with the same key to succeed while the original task is still executing. Timeline: 1. Task A scheduled with key="task:123" -> known_key set 2. Worker picks up Task A, _perpetuate_if_requested() returns False 3. Worker calls _delete_known_task() -> known_key DELETED 4. Worker starts executing the actual task function (slow task) 5. Meanwhile, docket.add(key="task:123") checks EXISTS known_key -> 0 6. Duplicate task scheduled and picked up by concurrent worker 7. Both tasks execute in parallel Tests both default TTL and execution_ttl=0 to ensure fix doesn't depend on volatile results keys. """ execution_count = 0 task_started = asyncio.Event() async def slow_task(task_id: str): nonlocal execution_count execution_count += 1 task_started.set() await asyncio.sleep(0.3) docket_kwargs: dict[str, object] = { "name": make_docket_name(), "url": redis_url, } if execution_ttl is not None: docket_kwargs["execution_ttl"] = execution_ttl async with Docket(**docket_kwargs) as docket: # type: ignore[arg-type] docket.register(slow_task) task_key = f"race-test:{uuid4()}" async with Worker(docket, concurrency=2) as worker: worker_task = asyncio.create_task(worker.run_until_finished()) # Schedule first task await docket.add(slow_task, key=task_key)("first") # Wait for task to start (known_key already deleted at this point) await asyncio.wait_for(task_started.wait(), timeout=2.0) await asyncio.sleep(0.05) # Small buffer to ensure deletion happened # Attempt duplicate - should be rejected but isn't due to bug await docket.add(slow_task, key=task_key)("second") await asyncio.wait_for(worker_task, timeout=5.0) # BUG: execution_count == 2 (both tasks ran) # EXPECTED: execution_count == 1 (duplicate rejected) assert execution_count == 1, ( f"Task executed {execution_count} times, expected 1" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______ ERROR at setup of test_wrongtype_error_with_legacy_known_task_key _______ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 273 async def test_wrongtype_error_with_legacy_known_task_key( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime], caplog: pytest.LogCaptureFixture, ) -> None: """Test graceful handling when known task keys exist as strings from legacy implementations. Regression test for issue where worker scheduler would get WRONGTYPE errors when trying to HSET on known task keys that existed as string values from older docket versions. The original error occurred when: 1. A legacy docket created known task keys as simple string values (timestamps) 2. The new scheduler tried to HSET stream_message_id on these keys 3. Redis threw WRONGTYPE error because you can't HSET on a string key 4. This caused scheduler loop failures in production This test reproduces that scenario by manually setting up the legacy state, then verifies the new code handles it gracefully without errors. """ import logging key = f"legacy-task:{uuid4()}" # Simulate legacy behavior: create the known task key as a string # This is what older versions of docket would have done async with docket.redis() as redis: known_task_key = docket.known_task_key(key) when = now() + timedelta(seconds=1) # Set up legacy state: known key as string, task in queue with parked data await redis.set(known_task_key, str(when.timestamp())) await redis.zadd(docket.queue_key, {key: when.timestamp()}) await redis.hset( # type: ignore docket.parked_task_key(key), mapping={ "key": key, "when": when.isoformat(), "function": "trace", "args": cloudpickle.dumps(["legacy task test"]), # type: ignore[arg-type] "kwargs": cloudpickle.dumps({}), # type: ignore[arg-type] "attempt": "1", }, ) # Capture logs to ensure no errors occur and see task execution with caplog.at_level(logging.INFO): await worker.run_until_finished() # Should not have any ERROR logs now that the issue is fixed error_logs = [record for record in caplog.records if record.levelname == "ERROR"] assert len(error_logs) == 0, ( f"Expected no error logs, but got: {[r.message for r in error_logs]}" ) # The task should execute successfully # Since we used trace, we should see an INFO log with the message info_logs = [record for record in caplog.records if record.levelname == "INFO"] trace_logs = [ record for record in info_logs if "legacy task test" in record.message ] assert len(trace_logs) > 0, ( f"Expected to see trace log with 'legacy task test', got: {[r.message for r in info_logs]}" ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________ ERROR at setup of test_replace_task_with_legacy_known_key ___________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 341 async def test_replace_task_with_legacy_known_key( docket: Docket, worker: Worker, the_task: AsyncMock, now: Callable[[], datetime] ): """Test that replace() works with legacy string known_keys. This reproduces the exact production scenario where replace() would get WRONGTYPE errors when trying to HGET on legacy string known_keys. The main goal is to verify no WRONGTYPE error occurs. """ key = f"legacy-replace-task:{uuid4()}" # Simulate legacy state: create known_key as string (old format) async with docket.redis() as redis: known_task_key = docket.known_task_key(key) when = now() # Create legacy known_key as STRING (what old code did) await redis.set(known_task_key, str(when.timestamp())) # Now try to replace - this should work without WRONGTYPE error # The key point is that this call succeeds without throwing WRONGTYPE replacement_time = now() + timedelta(seconds=1) await docket.replace("trace", replacement_time, key=key)("replacement message") file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _________ ERROR at setup of test_worker_run_classmethod_memory_backend _________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_scheduling.py, line 366 async def test_worker_run_classmethod_memory_backend() -> None: """Worker.run should complete immediately when there is no work queued.""" await Worker.run( docket_name=f"test-run-{uuid4()}", url="memory://", tasks=[], schedule_automatic_tasks=False, until_finished=True, ) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ______________ ERROR at setup of test_task_executes_with_ttl_zero ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_ttl_zero.py, line 10 async def test_task_executes_with_ttl_zero(zero_ttl_docket: Docket) -> None: """Tasks should execute successfully when execution_ttl is set to 0.""" executed: list[int] = [] async def simple_task(value: int) -> int: executed.append(value) return value * 2 zero_ttl_docket.register(simple_task) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(simple_task)(42) await worker.run_until_finished() assert executed == [42] assert execution.key is not None file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 ____ ERROR at setup of test_state_record_expires_immediately_with_ttl_zero _____ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_ttl_zero.py, line 28 async def test_state_record_expires_immediately_with_ttl_zero( zero_ttl_docket: Docket, ) -> None: """State records should be deleted immediately when execution_ttl is 0.""" async def simple_task() -> str: return "done" zero_ttl_docket.register(simple_task) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(simple_task)() await worker.run_until_finished() # Verify state record was deleted state = await execution.sync() assert state is None, "State should be None after TTL=0 deletion" # Verify no state records exist in Redis async with zero_ttl_docket.redis() as redis: # pragma: no branch keys = await redis.keys(f"{zero_ttl_docket.name}:runs:*") # type: ignore assert len(keys) == 0, f"Should have no state records, found {len(keys)}" file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _____________ ERROR at setup of test_result_storage_with_ttl_zero ______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_ttl_zero.py, line 52 async def test_result_storage_with_ttl_zero(zero_ttl_docket: Docket) -> None: """Results should be stored with TTL of 0 when execution_ttl is 0.""" async def task_with_result() -> str: return "result" zero_ttl_docket.register(task_with_result) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(task_with_result)() await worker.run_until_finished() # With TTL=0, the result expires immediately # Attempting to get it should timeout deadline = datetime.now(timezone.utc) + timedelta(seconds=0.1) with pytest.raises(TimeoutError): # pragma: no branch await execution.get_result(deadline=deadline) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 _______________ ERROR at setup of test_failed_task_with_ttl_zero _______________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_ttl_zero.py, line 71 async def test_failed_task_with_ttl_zero(zero_ttl_docket: Docket) -> None: """Failed tasks should handle TTL=0 correctly.""" async def failing_task() -> None: raise ValueError("intentional failure") zero_ttl_docket.register(failing_task) async with Worker(docket=zero_ttl_docket) as worker: execution = await zero_ttl_docket.add(failing_task)() await worker.run_until_finished() # Task should have failed but not crashed await asyncio.sleep(0.1) # With TTL=0, exception data expires immediately deadline = datetime.now(timezone.utc) + timedelta(seconds=0.1) with pytest.raises(TimeoutError): # pragma: no branch await execution.get_result(deadline=deadline) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 __________________ ERROR at setup of test_mixed_ttl_workload ___________________ file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/worker/test_ttl_zero.py, line 92 async def test_mixed_ttl_workload( redis_url: str, make_docket_name: Callable[[], str] ) -> None: """Tasks with different TTL settings should not interfere with each other.""" async with ( # pragma: no branch Docket( name=make_docket_name(), url=redis_url, execution_ttl=timedelta(seconds=60), ) as docket_with_ttl, Docket( name=make_docket_name(), url=redis_url, execution_ttl=timedelta(0), ) as docket_with_zero_ttl, ): results_with_ttl: list[int] = [] results_zero_ttl: list[int] = [] async def task_with_ttl(value: int) -> int: results_with_ttl.append(value) return value * 2 async def task_zero_ttl(value: int) -> int: results_zero_ttl.append(value) return value * 3 docket_with_ttl.register(task_with_ttl) docket_with_zero_ttl.register(task_zero_ttl) async with ( # pragma: no branch Worker(docket=docket_with_ttl) as worker_with_ttl, Worker(docket=docket_with_zero_ttl) as worker_with_zero_ttl, ): # Schedule tasks on both dockets exec_with_ttl = await docket_with_ttl.add(task_with_ttl)(10) exec_zero_ttl = await docket_with_zero_ttl.add(task_zero_ttl)(20) # Run both workers await asyncio.gather( worker_with_ttl.run_until_finished(), worker_with_zero_ttl.run_until_finished(), ) assert results_with_ttl == [10] assert results_zero_ttl == [20] # Task with TTL should have retrievable result deadline = datetime.now(timezone.utc) + timedelta(seconds=1) result = await exec_with_ttl.get_result(deadline=deadline) assert result == 20 # Task with zero TTL should have expired result deadline = datetime.now(timezone.utc) + timedelta(seconds=0.1) with pytest.raises(TimeoutError): # pragma: no branch await exec_zero_ttl.get_result(deadline=deadline) file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 149 @pytest.fixture(scope="session") def redis_port(redis_server: Container | None) -> int: file /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py, line 58 @pytest.fixture(scope="session") def redis_server( E fixture 'worker_id' not found > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, acl_credentials, another_task, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, docket, doctest_namespace, event_loop_policy, key_leak_checker, log_level, make_docket_name, monkeypatch, now, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, redis_port, redis_server, redis_url, the_task, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory, worker, zero_ttl_docket > use 'pytest --fixtures [testpath]' for help on them. /builddir/build/BUILD/python-pydocket-0.17.9-build/pydocket-0.17.9/tests/conftest.py:58 =========================== short test summary info ============================ ERROR tests/cli/test_clear.py::test_clear_command_empty_docket ERROR tests/cli/test_clear.py::test_clear_command_with_immediate_tasks ERROR tests/cli/test_clear.py::test_clear_command_with_scheduled_tasks ERROR tests/cli/test_clear.py::test_clear_command_with_mixed_tasks ERROR tests/cli/test_clear.py::test_clear_command_with_keyed_tasks ERROR tests/cli/test_clear.py::test_clear_command_basic_functionality ERROR tests/cli/test_clear.py::test_clear_command_preserves_strikes ERROR tests/cli/test_clear.py::test_clear_command_with_custom_url ERROR tests/cli/test_clear.py::test_clear_command_with_custom_docket_name 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 ERROR tests/cli/test_parsing.py::test_duration_parsing_passes_through_defaults ERROR tests/cli/test_parsing.py::test_duration_parsing_plain_seconds ERROR tests/cli/test_parsing.py::test_duration_parsing_seconds_with_suffix ERROR tests/cli/test_parsing.py::test_duration_parsing_minutes_with_suffix ERROR tests/cli/test_parsing.py::test_duration_parsing_hours_with_suffix ERROR tests/cli/test_parsing.py::test_duration_parsing_minutes_seconds_format ERROR tests/cli/test_parsing.py::test_duration_parsing_hours_minutes_seconds_format ERROR tests/cli/test_parsing.py::test_duration_parsing_invalid_format[1:2:3:4] ERROR tests/cli/test_parsing.py::test_duration_parsing_invalid_format[abc] ERROR tests/cli/test_parsing.py::test_duration_parsing_invalid_format[:] ERROR tests/cli/test_snapshot.py::test_snapshot_empty_docket ERROR tests/cli/test_snapshot.py::test_snapshot_with_scheduled_tasks ERROR tests/cli/test_snapshot.py::test_snapshot_with_running_tasks ERROR tests/cli/test_snapshot.py::test_snapshot_with_mixed_tasks ERROR tests/cli/test_snapshot.py::test_relative_time[now0-when0-in 0:15:00] ERROR tests/cli/test_snapshot.py::test_relative_time[now1-when1-at 2023-01-02 12:00:00 +0000] ERROR tests/cli/test_snapshot.py::test_relative_time[now2-when2-0:15:00 ago] ERROR tests/cli/test_snapshot.py::test_relative_time[now3-when3-at 2023-01-01 10:00:00 +0000] ERROR tests/cli/test_snapshot.py::test_snapshot_with_stats_flag_empty ERROR tests/cli/test_snapshot.py::test_snapshot_with_stats_flag_mixed_tasks ERROR tests/cli/test_snapshot.py::test_snapshot_with_stats_shows_timestamp_columns ERROR tests/cli/test_snapshot.py::test_snapshot_stats_with_running_tasks_only ERROR tests/cli/test_snapshot.py::test_snapshot_cli_stats_skips_table_when_empty ERROR tests/cli/test_striking.py::test_strike ERROR tests/cli/test_striking.py::test_restore ERROR tests/cli/test_striking.py::test_task_only_strike ERROR tests/cli/test_striking.py::test_task_only_restore ERROR tests/cli/test_striking.py::test_parameter_only_strike ERROR tests/cli/test_striking.py::test_parameter_only_restore ERROR tests/cli/test_striking.py::test_strike_with_no_function_or_parameter[strike] ERROR tests/cli/test_striking.py::test_strike_with_no_function_or_parameter[restore] ERROR tests/cli/test_striking.py::test_interpret_python_value[None-None] ERROR tests/cli/test_striking.py::test_interpret_python_value[hello-hello] ERROR tests/cli/test_striking.py::test_interpret_python_value[int:42-42] ERROR tests/cli/test_striking.py::test_interpret_python_value[float:3.14-3.14] ERROR tests/cli/test_striking.py::test_interpret_python_value[decimal.Decimal:3.14-expected_result4] ERROR tests/cli/test_striking.py::test_interpret_python_value[bool:True-True] ERROR tests/cli/test_striking.py::test_interpret_python_value[bool:False-False] ERROR tests/cli/test_striking.py::test_interpret_python_value[datetime.timedelta:10-expected_result7] ERROR tests/cli/test_striking.py::test_interpret_python_value[uuid.UUID:123e4567-e89b-12d3-a456-426614174000-expected_result8] ERROR tests/cli/test_tasks.py::test_trace_command ERROR tests/cli/test_tasks.py::test_fail_command ERROR tests/cli/test_tasks.py::test_sleep_command 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 ERROR tests/cli/test_version.py::test_version_command ERROR tests/cli/test_version.py::test_version_matches_semantic_versioning ERROR tests/cli/test_watch.py::test_watch_completed_task ERROR tests/cli/test_watch.py::test_watch_failed_task ERROR tests/cli/test_watch.py::test_watch_running_task_until_completion ERROR tests/cli/test_watch.py::test_watch_with_progress_updates ERROR tests/cli/test_watch.py::test_watch_scheduled_task_transition ERROR tests/cli/test_watch.py::test_watch_task_with_initial_progress ERROR tests/cli/test_watch.py::test_watch_task_with_worker_assignment ERROR tests/cli/test_watch.py::test_watch_task_that_starts_while_watching ERROR tests/cli/test_watch.py::test_watch_receives_progress_events_during_execution ERROR tests/cli/test_watch.py::test_watch_already_running_task_with_progress ERROR tests/cli/test_watch.py::test_watch_task_with_worker_in_state_event ERROR tests/cli/test_watch.py::test_watch_task_with_incomplete_data ERROR tests/cli/test_worker.py::test_worker_command_exposes_all_the_options_of_worker ERROR tests/cli/test_worker.py::test_worker_command ERROR tests/cli/test_worker.py::test_worker_command_with_fallback_task ERROR tests/cli/test_worker.py::test_rich_logging_format ERROR tests/cli/test_worker.py::test_plain_logging_format ERROR tests/cli/test_worker.py::test_json_logging_format ERROR tests/cli/test_worker.py::test_sigterm_gracefully_drains_inflight_tasks ERROR tests/cli/test_worker.py::test_sigint_gracefully_drains_inflight_tasks ERROR tests/cli/test_workers.py::test_list_workers_command ERROR tests/cli/test_workers.py::test_list_workers_for_task 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 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 ERROR tests/fundamentals/test_cron.py::test_automatic_cron_waits_for_scheduled_time ERROR tests/fundamentals/test_cron.py::test_cron_with_timezone 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 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 ERROR tests/fundamentals/test_perpetual.py::test_perpetual_tasks 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 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 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 ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_later ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_earlier ERROR tests/fundamentals/test_scheduling.py::test_rescheduling_by_name 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 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 ERROR tests/fundamentals/test_timeouts.py::test_simple_timeout_cancels_tasks ERROR tests/fundamentals/test_timeouts.py::test_timeout_can_be_extended 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 ERROR tests/test_agenda.py::test_agenda_add_single_task ERROR tests/test_agenda.py::test_agenda_add_multiple_tasks ERROR tests/test_agenda.py::test_agenda_scatter_basic ERROR tests/test_agenda.py::test_agenda_scatter_with_start_time ERROR tests/test_agenda.py::test_agenda_scatter_with_jitter ERROR tests/test_agenda.py::test_agenda_scatter_with_large_jitter ERROR tests/test_agenda.py::test_agenda_scatter_single_task ERROR tests/test_agenda.py::test_agenda_scatter_empty ERROR tests/test_agenda.py::test_agenda_scatter_heterogeneous_tasks ERROR tests/test_agenda.py::test_agenda_scatter_preserves_order ERROR tests/test_agenda.py::test_agenda_reusability ERROR tests/test_agenda.py::test_agenda_scatter_requires_over_parameter ERROR tests/test_agenda.py::test_agenda_scatter_with_task_by_name 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 ERROR tests/test_cancellation.py::test_cancel_running_task ERROR tests/test_cancellation.py::test_cancel_running_task_state ERROR tests/test_cancellation.py::test_cancel_running_task_with_cleanup ERROR tests/test_cancellation.py::test_cancel_task_that_ignores_cancellation ERROR tests/test_cancellation.py::test_cancel_already_completed_is_noop ERROR tests/test_cancellation.py::test_cancel_publishes_state_event ERROR tests/test_cancellation.py::test_cancel_only_affects_running_worker 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 ERROR tests/test_cancellation.py::test_get_result_raises_execution_cancelled_for_cancelled_task ERROR tests/test_dependencies_advanced.py::test_sync_function_dependency 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 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 ERROR tests/test_dependencies_advanced.py::test_mixed_nested_dependencies 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 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 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 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 ERROR tests/test_docket_clear.py::test_clear_with_immediate_tasks ERROR tests/test_docket_clear.py::test_clear_with_scheduled_tasks ERROR tests/test_docket_clear.py::test_clear_with_mixed_tasks ERROR tests/test_docket_clear.py::test_clear_with_parked_tasks ERROR tests/test_docket_clear.py::test_clear_preserves_strikes ERROR tests/test_docket_clear.py::test_clear_returns_total_count ERROR tests/test_docket_clear.py::test_clear_no_redis_key_leaks ERROR tests/test_docket_clear.py::test_clear_with_execution_ttl_zero ERROR tests/test_docket_clear.py::test_stream_not_created_on_docket_init 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 ERROR tests/test_docket_execution.py::test_get_execution_for_scheduled_task ERROR tests/test_docket_execution.py::test_get_execution_for_queued_task 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 ERROR tests/test_docket_execution.py::test_cancelled_state_with_ttl_zero ERROR tests/test_docket_execution.py::test_get_execution_after_cancel 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 ERROR tests/test_docket_keys.py::test_key_builds_correct_key ERROR tests/test_docket_keys.py::test_queue_key_uses_key_method ERROR tests/test_docket_keys.py::test_stream_key_uses_key_method ERROR tests/test_docket_keys.py::test_workers_set_uses_key_method ERROR tests/test_docket_keys.py::test_known_task_key_uses_key_method ERROR tests/test_docket_keys.py::test_parked_task_key_uses_key_method ERROR tests/test_docket_keys.py::test_stream_id_key_uses_key_method ERROR tests/test_docket_keys.py::test_runs_key_uses_key_method ERROR tests/test_docket_keys.py::test_cancel_channel_uses_key_method ERROR tests/test_docket_keys.py::test_results_collection_uses_key_method ERROR tests/test_docket_keys.py::test_worker_tasks_set_uses_key_method ERROR tests/test_docket_keys.py::test_task_workers_set_uses_key_method ERROR tests/test_docket_keys.py::test_worker_group_name_not_prefixed 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] 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 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 ERROR tests/test_docket_registration.py::test_registered_task_usable_after_aenter ERROR tests/test_docket_registration.py::test_tasks_persist_after_aexit ERROR tests/test_docket_registration.py::test_docket_reentry_preserves_tasks ERROR tests/test_docket_registration.py::test_register_collection 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 ERROR tests/test_docket_registration.py::test_alias_appears_in_worker_announcements ERROR tests/test_execution.py::test_compact_signature[no_args-] ERROR tests/test_execution.py::test_compact_signature[one_arg-a: str] 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 ERROR tests/test_execution.py::test_execution_args_is_immutable ERROR tests/test_execution.py::test_execution_kwargs_is_immutable ERROR tests/test_execution.py::test_execution_key_is_immutable 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 ERROR tests/test_execution_state.py::test_run_state_pending_to_running ERROR tests/test_execution_state.py::test_run_state_completed_on_success ERROR tests/test_execution_state.py::test_run_state_failed_on_exception ERROR tests/test_execution_state.py::test_run_state_ttl_after_completion ERROR tests/test_execution_state.py::test_custom_execution_ttl ERROR tests/test_execution_state.py::test_full_lifecycle_integration ERROR tests/test_execution_state.py::test_run_add_returns_run_instance ERROR tests/test_execution_state.py::test_error_message_stored_on_failure 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 ERROR tests/test_fallback_task.py::test_fallback_dependency_injection ERROR tests/test_fallback_task.py::test_fallback_custom_user_dependency ERROR tests/test_fallback_task.py::test_fallback_return_completes_task ERROR tests/test_fallback_task.py::test_fallback_exception_triggers_retry 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 ERROR tests/test_key_leak_protection.py::test_exemption_mechanism ERROR tests/test_key_leak_protection.py::test_multiple_exemptions ERROR tests/test_key_leak_protection.py::test_worker_task_sets_are_exempt ERROR tests/test_key_leak_protection.py::test_queue_is_cleaned_up ERROR tests/test_memory_backend.py::test_docket_memory_backend ERROR tests/test_memory_backend.py::test_multiple_memory_dockets ERROR tests/test_memory_backend.py::test_memory_backend_reuses_server ERROR tests/test_memory_backend.py::test_different_memory_urls_are_isolated ERROR tests/test_memory_backend.py::test_memory_url_with_path_isolation 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 ERROR tests/test_perpetual_state.py::test_perpetual_task_state_isolation 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 ERROR tests/test_progress_basics.py::test_progress_set_total ERROR tests/test_progress_basics.py::test_progress_set_total_invalid ERROR tests/test_progress_basics.py::test_progress_increment_invalid ERROR tests/test_progress_basics.py::test_progress_increment ERROR tests/test_progress_basics.py::test_progress_set_message ERROR tests/test_progress_basics.py::test_progress_dependency_injection ERROR tests/test_progress_basics.py::test_progress_deleted_on_completion ERROR tests/test_progress_basics.py::test_progress_with_multiple_increments ERROR tests/test_progress_basics.py::test_progress_without_total ERROR tests/test_progress_basics.py::test_concurrent_progress_updates ERROR tests/test_progress_pubsub.py::test_progress_publish_events ERROR tests/test_progress_pubsub.py::test_state_publish_events ERROR tests/test_progress_pubsub.py::test_run_subscribe_both_state_and_progress ERROR tests/test_progress_pubsub.py::test_completed_state_publishes_event 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 ERROR tests/test_redelivery.py::test_long_running_task_not_duplicated ERROR tests/test_redelivery.py::test_retry_with_long_running_task ERROR tests/test_redelivery.py::test_multiple_workers_no_duplicate_execution ERROR tests/test_redelivery.py::test_perpetual_task_with_lease_renewal ERROR tests/test_redelivery.py::test_user_timeout_longer_than_redelivery ERROR tests/test_redelivery.py::test_workers_with_same_redelivery_timeout 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 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 ERROR tests/test_results_storage.py::test_result_storage_for_str_return ERROR tests/test_results_storage.py::test_result_storage_for_dict_return 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 ERROR tests/test_results_storage.py::test_exception_storage_and_retrieval 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 ERROR tests/test_results_storage.py::test_cluster_store_ttl ERROR tests/test_results_storage.py::test_cluster_store_delete ERROR tests/test_results_storage.py::test_cluster_store_get_many ERROR tests/test_results_storage.py::test_cluster_store_ttl_many ERROR tests/test_results_storage.py::test_cluster_store_put_many ERROR tests/test_results_storage.py::test_cluster_store_delete_many ERROR tests/test_strikelist.py::test_context_manager ERROR tests/test_strikelist.py::test_explicit_aenter_aexit ERROR tests/test_strikelist.py::test_aenter_is_not_reentrant ERROR tests/test_strikelist.py::test_context_manager_reuse ERROR tests/test_strikelist.py::test_prefix_property ERROR tests/test_strikelist.py::test_strike_key_property ERROR tests/test_strikelist.py::test_local_only_mode ERROR tests/test_strikelist.py::test_memory_url_without_fakeredis ERROR tests/test_strikelist.py::test_send_instruction_requires_connection ERROR tests/test_strikelist.py::test_strike_method ERROR tests/test_strikelist.py::test_restore_method ERROR tests/test_strikelist.py::test_receives_strikes ERROR tests/test_strikelist.py::test_receives_restore ERROR tests/test_strikelist.py::test_receives_multiple_strikes ERROR tests/test_strikelist.py::test_new_instance_receives_existing_strikes ERROR tests/test_strikelist.py::test_all_operators ERROR tests/test_strikelist.py::test_empty_dict_not_stricken ERROR tests/test_strikelist.py::test_type_mismatch_handled_gracefully 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 ERROR tests/test_striking.py::test_striking_is_idempotent ERROR tests/test_striking.py::test_restoring_is_idempotent ERROR tests/test_striking.py::test_strike_operators[==-42-42-True] ERROR tests/test_striking.py::test_strike_operators[==-42-43-False] ERROR tests/test_striking.py::test_strike_operators[!=-42-43-True] ERROR tests/test_striking.py::test_strike_operators[!=-42-42-False] ERROR tests/test_striking.py::test_strike_operators[>-42-43-True] ERROR tests/test_striking.py::test_strike_operators[>-42-42-False] ERROR tests/test_striking.py::test_strike_operators[>-42-41-False] ERROR tests/test_striking.py::test_strike_operators[>=-42-43-True] ERROR tests/test_striking.py::test_strike_operators[>=-42-42-True] ERROR tests/test_striking.py::test_strike_operators[>=-42-41-False] ERROR tests/test_striking.py::test_strike_operators[<-42-41-True] ERROR tests/test_striking.py::test_strike_operators[<-42-42-False] ERROR tests/test_striking.py::test_strike_operators[<-42-43-False] ERROR tests/test_striking.py::test_strike_operators[<=-42-41-True] ERROR tests/test_striking.py::test_strike_operators[<=-42-42-True] ERROR tests/test_striking.py::test_strike_operators[<=-42-43-False] 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] ERROR tests/test_striking.py::test_strike_incomparable_values[<=-42-None] 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 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 ERROR tests/test_testing.py::test_assert_task_count_for_specific_function ERROR tests/test_testing.py::test_assert_task_count_zero 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 ERROR tests/test_testing.py::test_assert_no_tasks_succeeds_when_empty 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 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] ERROR tests/test_uuid7.py::test_uuid7_returns_uuid_object[docket] ERROR tests/test_uuid7.py::test_uuid7_returns_uuid_object[stdlib] ERROR tests/test_uuid7.py::test_uuid7_is_version_7[vendored] ERROR tests/test_uuid7.py::test_uuid7_is_version_7[docket] ERROR tests/test_uuid7.py::test_uuid7_is_version_7[stdlib] ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[vendored] ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[docket] ERROR tests/test_uuid7.py::test_uuid7_is_variant_rfc4122[stdlib] ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[vendored] ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[docket] ERROR tests/test_uuid7.py::test_uuid7_chronological_ordering[stdlib] 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] ERROR tests/test_uuid7.py::test_uuid7_uniqueness[docket] ERROR tests/test_uuid7.py::test_uuid7_uniqueness[stdlib] ERROR tests/test_uuid7.py::test_uuid7_as_str[vendored] ERROR tests/test_uuid7.py::test_uuid7_as_str[docket] ERROR tests/test_uuid7.py::test_uuid7_as_str[stdlib] ERROR tests/test_uuid7.py::test_uuid7_as_int[vendored] ERROR tests/test_uuid7.py::test_uuid7_as_int[docket] ERROR tests/test_uuid7.py::test_uuid7_as_int[stdlib] ERROR tests/test_uuid7.py::test_uuid7_as_hex[vendored] ERROR tests/test_uuid7.py::test_uuid7_as_hex[docket] ERROR tests/test_uuid7.py::test_uuid7_as_hex[stdlib] ERROR tests/test_uuid7.py::test_uuid7_as_bytes[vendored] ERROR tests/test_uuid7.py::test_uuid7_as_bytes[docket] ERROR tests/test_uuid7.py::test_uuid7_as_bytes[stdlib] ERROR tests/worker/test_bootstrap.py::test_redis_key_cleanup_successful_task ERROR tests/worker/test_bootstrap.py::test_redis_key_cleanup_failed_task 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 ERROR tests/worker/test_core.py::test_two_workers_split_work ERROR tests/worker/test_core.py::test_worker_reconnects_when_connection_is_lost ERROR tests/worker/test_core.py::test_worker_respects_concurrency_limit 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 ERROR tests/worker/test_core.py::test_task_announcements 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 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 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 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 ERROR tests/worker/test_ttl_zero.py::test_failed_task_with_ttl_zero ERROR tests/worker/test_ttl_zero.py::test_mixed_ttl_workload ============================= 688 errors in 3.21s ============================== RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.6lGmMJ (%check) Bad exit status from /var/tmp/rpm-tmp.6lGmMJ (%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-1771936605.746189/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 22 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 5032f13895a94d58989b13ab507c8139 -D /var/lib/mock/fedora-rawhide-x86_64-1771936605.746189/root -a -u mockbuild --capability=cap_ipc_lock --capability=cap_ipc_lock --bind=/tmp/mock-resolv.0zx1pbeo:/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