Warning: Permanently added '2620:52:3:1:dead:beef:cafe:c11a' (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/9547888-fedora-rawhide-x86_64 --chroot fedora-rawhide-x86_64 Version: 1.4 PID: 5254 Logging PID: 5256 Task: {'allow_user_ssh': False, 'appstream': False, 'background': False, 'build_id': 9547888, 'buildroot_pkgs': [], 'chroot': 'fedora-rawhide-x86_64', 'enable_net': False, 'fedora_review': False, 'git_hash': '2699c4909fb0f0ac4abb9f366de437a05242c1a3', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/davidsch/testing/python-xbout', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'python-xbout', 'package_version': '0.3.8-1', 'project_dirname': 'testing', 'project_name': 'testing', 'project_owner': 'davidsch', 'repo_priority': None, 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/davidsch/testing/fedora-rawhide-x86_64/', 'id': 'copr_base', 'name': 'Copr repository', 'priority': None}], 'sandbox': 'davidsch/testing--davidsch', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': None, 'submitter': 'davidsch', 'tags': [], 'task_id': '9547888-fedora-rawhide-x86_64', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/davidsch/testing/python-xbout /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/davidsch/testing/python-xbout', '/var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout'... Running: git checkout 2699c4909fb0f0ac4abb9f366de437a05242c1a3 -- cmd: ['git', 'checkout', '2699c4909fb0f0ac4abb9f366de437a05242c1a3', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout rc: 0 stdout: stderr: Note: switching to '2699c4909fb0f0ac4abb9f366de437a05242c1a3'. 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 2699c49 automatic import of python-xbout Running: dist-git-client sources INFO: Calling: curl -H Pragma: -o xbout-0.3.8.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/davidsch/testing/python-xbout/xbout-0.3.8.tar.gz/md5/6ab5be44abea51ad4bd376f1e4b2d9b9/xbout-0.3.8.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed tail: /var/lib/copr-rpmbuild/main.log: file truncated 100 4701k 100 4701k 0 0 14.6M 0 --:--:-- --:--:-- --:--:-- 14.6M INFO: Reading stdout from command: md5sum xbout-0.3.8.tar.gz Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout/python-xbout.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1757624430.291162 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.3 starting (python version = 3.13.5, NVR = mock-6.3-1.fc42), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout/python-xbout.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-fkssy6d3/python-xbout --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1757624430.291162 -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-fkssy6d3/python-xbout/python-xbout.spec) Config(fedora-rawhide-x86_64) Start: clean chroot Finish: clean chroot Mock Version: 6.3 INFO: Mock Version: 6.3 Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1757624430.291162/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-33d9c871-e05a-40c7-8404-c2d438f87303 INFO: Checking that c18324068313465390d3a0709f1f854b458663a7ae1ae31e9701085edde56a8d image matches host's architecture INFO: Copy content of container c18324068313465390d3a0709f1f854b458663a7ae1ae31e9701085edde56a8d to /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1757624430.291162/root INFO: mounting c18324068313465390d3a0709f1f854b458663a7ae1ae31e9701085edde56a8d with podman image mount INFO: image c18324068313465390d3a0709f1f854b458663a7ae1ae31e9701085edde56a8d as /var/lib/containers/storage/overlay/2c2c87afdaf8f7b10dcfc72d2fcf55f008b6d04fcb8eb84cd6bc2b7d30a91f6e/merged INFO: umounting image c18324068313465390d3a0709f1f854b458663a7ae1ae31e9701085edde56a8d (/var/lib/containers/storage/overlay/2c2c87afdaf8f7b10dcfc72d2fcf55f008b6d04fcb8eb84cd6bc2b7d30a91f6e/merged) with podman image umount INFO: Removing image mock-bootstrap-33d9c871-e05a-40c7-8404-c2d438f87303 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-1757624430.291162/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-5.99.92-1.fc44.x86_64 rpm-sequoia-1.9.0-2.fc43.x86_64 dnf5-5.2.17.0-1.fc44.x86_64 dnf5-plugins-5.2.17.0-1.fc44.x86_64 Start: installing minimal buildroot with dnf5 Updating and loading repositories: Copr repository 100% | 49.2 KiB/s | 10.0 KiB | 00m00s fedora 100% | 14.8 MiB/s | 21.8 MiB | 00m01s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash x86_64 5.3.0-2.fc43 fedora 8.4 MiB bzip2 x86_64 1.0.8-21.fc43 fedora 95.3 KiB coreutils x86_64 9.7-5.fc43 fedora 5.4 MiB cpio x86_64 2.15-6.fc43 fedora 1.1 MiB diffutils x86_64 3.12-3.fc43 fedora 1.6 MiB fedora-release-common noarch 44-0.2 fedora 20.4 KiB findutils x86_64 1:4.10.0-6.fc43 fedora 1.8 MiB gawk x86_64 5.3.2-2.fc43 fedora 1.8 MiB glibc-minimal-langpack x86_64 2.42.9000-5.fc44 fedora 0.0 B grep x86_64 3.12-2.fc43 fedora 1.0 MiB gzip x86_64 1.14-1.fc44 fedora 397.8 KiB info x86_64 7.2-6.fc43 fedora 353.9 KiB patch x86_64 2.8-2.fc43 fedora 222.8 KiB redhat-rpm-config noarch 343-13.fc44 fedora 183.2 KiB rpm-build x86_64 5.99.92-1.fc44 fedora 285.5 KiB sed x86_64 4.9-5.fc43 fedora 857.3 KiB shadow-utils x86_64 2:4.18.0-3.fc43 fedora 3.9 MiB tar x86_64 2:1.35-6.fc43 fedora 2.9 MiB unzip x86_64 6.0-68.fc44 fedora 390.3 KiB util-linux x86_64 2.41.1-16.fc44 fedora 3.5 MiB which x86_64 2.23-3.fc43 fedora 83.5 KiB xz x86_64 1:5.8.1-2.fc43 fedora 1.3 MiB Installing dependencies: add-determinism x86_64 0.6.0-2.fc43 fedora 2.4 MiB alternatives x86_64 1.33-2.fc43 fedora 62.2 KiB ansible-srpm-macros noarch 1-18.1.fc43 fedora 35.7 KiB audit-libs x86_64 4.1.1-2.fc44 fedora 378.9 KiB binutils x86_64 2.45.50-3.fc44 fedora 27.3 MiB build-reproducibility-srpm-macros noarch 0.6.0-2.fc43 fedora 735.0 B bzip2-libs x86_64 1.0.8-21.fc43 fedora 80.6 KiB ca-certificates noarch 2025.2.80_v9.0.304-2.fc44 fedora 2.7 MiB coreutils-common x86_64 9.7-5.fc43 fedora 11.3 MiB crypto-policies noarch 20250714-4.gitcd6043a.fc44 fedora 146.9 KiB curl x86_64 8.16.0~rc3-1.fc44 fedora 475.3 KiB cyrus-sasl-lib x86_64 2.1.28-33.fc44 fedora 2.3 MiB debugedit x86_64 5.2-3.fc44 fedora 214.0 KiB dwz x86_64 0.16-2.fc43 fedora 287.1 KiB ed x86_64 1.22.2-1.fc44 fedora 148.1 KiB efi-srpm-macros noarch 6-4.fc43 fedora 40.1 KiB elfutils x86_64 0.193-3.fc43 fedora 2.9 MiB elfutils-debuginfod-client x86_64 0.193-3.fc43 fedora 83.9 KiB elfutils-default-yama-scope noarch 0.193-3.fc43 fedora 1.8 KiB elfutils-libelf x86_64 0.193-3.fc43 fedora 1.2 MiB elfutils-libs x86_64 0.193-3.fc43 fedora 683.4 KiB fedora-gpg-keys noarch 44-0.1 fedora 131.2 KiB fedora-release noarch 44-0.2 fedora 0.0 B fedora-release-identity-basic noarch 44-0.2 fedora 664.0 B fedora-repos noarch 44-0.1 fedora 4.9 KiB fedora-repos-rawhide noarch 44-0.1 fedora 2.2 KiB file x86_64 5.46-7.fc44 fedora 100.2 KiB file-libs x86_64 5.46-7.fc44 fedora 11.9 MiB filesystem x86_64 3.18-50.fc43 fedora 112.0 B filesystem-srpm-macros noarch 3.18-50.fc43 fedora 38.2 KiB fonts-srpm-macros noarch 1:2.0.5-23.fc43 fedora 55.8 KiB forge-srpm-macros noarch 0.4.0-3.fc43 fedora 38.9 KiB fpc-srpm-macros noarch 1.3-15.fc43 fedora 144.0 B gap-srpm-macros noarch 1-1.fc44 fedora 2.0 KiB gdb-minimal x86_64 16.3-5.fc44 fedora 13.3 MiB gdbm-libs x86_64 1:1.23-10.fc43 fedora 129.9 KiB ghc-srpm-macros noarch 1.9.2-3.fc43 fedora 779.0 B glibc x86_64 2.42.9000-5.fc44 fedora 6.7 MiB glibc-common x86_64 2.42.9000-5.fc44 fedora 1.0 MiB glibc-gconv-extra x86_64 2.42.9000-5.fc44 fedora 7.2 MiB gmp x86_64 1:6.3.0-4.fc44 fedora 815.3 KiB gnat-srpm-macros noarch 6-8.fc43 fedora 1.0 KiB gnupg2 x86_64 2.4.8-4.fc43 fedora 6.5 MiB gnupg2-dirmngr x86_64 2.4.8-4.fc43 fedora 618.4 KiB gnupg2-gpg-agent x86_64 2.4.8-4.fc43 fedora 671.4 KiB gnupg2-gpgconf x86_64 2.4.8-4.fc43 fedora 250.0 KiB gnupg2-keyboxd x86_64 2.4.8-4.fc43 fedora 201.4 KiB gnupg2-verify x86_64 2.4.8-4.fc43 fedora 348.5 KiB gnutls x86_64 3.8.10-3.fc43 fedora 3.8 MiB go-srpm-macros noarch 3.8.0-1.fc44 fedora 61.9 KiB gpgverify noarch 2.2-3.fc43 fedora 8.7 KiB ima-evm-utils-libs x86_64 1.6.2-6.fc43 fedora 60.7 KiB jansson x86_64 2.14-3.fc43 fedora 89.1 KiB java-srpm-macros noarch 1-7.fc43 fedora 870.0 B json-c x86_64 0.18-7.fc43 fedora 82.7 KiB kernel-srpm-macros noarch 1.0-27.fc43 fedora 1.9 KiB keyutils-libs x86_64 1.6.3-6.fc43 fedora 54.3 KiB krb5-libs x86_64 1.21.3-7.fc43 fedora 2.3 MiB libacl x86_64 2.3.2-4.fc43 fedora 35.9 KiB libarchive x86_64 3.8.1-3.fc43 fedora 951.1 KiB libassuan x86_64 2.5.7-4.fc43 fedora 163.8 KiB libattr x86_64 2.5.2-6.fc43 fedora 24.4 KiB libblkid x86_64 2.41.1-16.fc44 fedora 262.4 KiB libbrotli x86_64 1.1.0-9.fc44 fedora 833.3 KiB libcap x86_64 2.76-3.fc44 fedora 209.1 KiB libcap-ng x86_64 0.8.5-7.fc44 fedora 68.9 KiB libcom_err x86_64 1.47.3-2.fc43 fedora 63.1 KiB libcurl x86_64 8.16.0~rc3-1.fc44 fedora 919.6 KiB libeconf x86_64 0.7.9-2.fc43 fedora 64.9 KiB libevent x86_64 2.1.12-16.fc43 fedora 883.1 KiB libfdisk x86_64 2.41.1-16.fc44 fedora 380.4 KiB libffi x86_64 3.5.2-1.fc44 fedora 83.8 KiB libfsverity x86_64 1.6-3.fc43 fedora 28.5 KiB libgcc x86_64 15.2.1-1.fc44.1 fedora 266.6 KiB libgcrypt x86_64 1.11.1-2.fc43 fedora 1.6 MiB libgomp x86_64 15.2.1-1.fc44.1 fedora 541.1 KiB libgpg-error x86_64 1.55-2.fc43 fedora 915.3 KiB libidn2 x86_64 2.3.8-2.fc43 fedora 552.5 KiB libksba x86_64 1.6.7-4.fc43 fedora 398.5 KiB liblastlog2 x86_64 2.41.1-16.fc44 fedora 33.9 KiB libmount x86_64 2.41.1-16.fc44 fedora 372.7 KiB libnghttp2 x86_64 1.67.0-1.fc44 fedora 162.3 KiB libpkgconf x86_64 2.3.0-3.fc43 fedora 78.1 KiB libpsl x86_64 0.21.5-6.fc43 fedora 76.4 KiB libselinux x86_64 3.9-4.fc44 fedora 193.1 KiB libsemanage x86_64 3.9-3.fc44 fedora 308.5 KiB libsepol x86_64 3.9-2.fc43 fedora 822.0 KiB libsmartcols x86_64 2.41.1-16.fc44 fedora 180.5 KiB libssh x86_64 0.11.3-1.fc44 fedora 567.1 KiB libssh-config noarch 0.11.3-1.fc44 fedora 277.0 B libstdc++ x86_64 15.2.1-1.fc44.1 fedora 2.8 MiB libtasn1 x86_64 4.20.0-2.fc43 fedora 176.3 KiB libtool-ltdl x86_64 2.5.4-7.fc43 fedora 70.1 KiB libunistring x86_64 1.1-10.fc43 fedora 1.7 MiB libusb1 x86_64 1.0.29-4.fc44 fedora 171.3 KiB libuuid x86_64 2.41.1-16.fc44 fedora 37.4 KiB libverto x86_64 0.3.2-11.fc43 fedora 25.4 KiB libxcrypt x86_64 4.4.38-8.fc43 fedora 284.5 KiB libxml2 x86_64 2.12.10-4.fc44 fedora 1.7 MiB libzstd x86_64 1.5.7-2.fc43 fedora 799.9 KiB lua-libs x86_64 5.4.8-2.fc43 fedora 280.8 KiB lua-srpm-macros noarch 1-16.fc43 fedora 1.3 KiB lz4-libs x86_64 1.10.0-3.fc43 fedora 161.4 KiB mpfr x86_64 4.2.2-2.fc43 fedora 832.8 KiB ncurses-base noarch 6.5-7.20250614.fc43 fedora 328.1 KiB ncurses-libs x86_64 6.5-7.20250614.fc43 fedora 946.3 KiB nettle x86_64 3.10.1-2.fc43 fedora 790.6 KiB npth x86_64 1.8-3.fc43 fedora 49.6 KiB ocaml-srpm-macros noarch 11-2.fc43 fedora 1.9 KiB openblas-srpm-macros noarch 2-20.fc43 fedora 112.0 B openldap x86_64 2.6.10-4.fc44 fedora 659.8 KiB openssl-libs x86_64 1:3.5.1-3.fc44 fedora 9.2 MiB p11-kit x86_64 0.25.6-1.fc44 fedora 2.3 MiB p11-kit-trust x86_64 0.25.6-1.fc44 fedora 443.5 KiB package-notes-srpm-macros noarch 0.5-14.fc43 fedora 1.6 KiB pam-libs x86_64 1.7.1-3.fc43 fedora 126.8 KiB pcre2 x86_64 10.46-1.fc44 fedora 697.7 KiB pcre2-syntax noarch 10.46-1.fc44 fedora 275.3 KiB perl-srpm-macros noarch 1-60.fc43 fedora 861.0 B pkgconf x86_64 2.3.0-3.fc43 fedora 88.5 KiB pkgconf-m4 noarch 2.3.0-3.fc43 fedora 14.4 KiB pkgconf-pkg-config x86_64 2.3.0-3.fc43 fedora 989.0 B popt x86_64 1.19-9.fc43 fedora 132.8 KiB publicsuffix-list-dafsa noarch 20250616-2.fc43 fedora 69.1 KiB pyproject-srpm-macros noarch 1.18.4-1.fc44 fedora 1.9 KiB python-srpm-macros noarch 3.14-7.fc44 fedora 51.5 KiB qt5-srpm-macros noarch 5.15.17-2.fc43 fedora 500.0 B qt6-srpm-macros noarch 6.9.2-1.fc44 fedora 464.0 B readline x86_64 8.3-2.fc43 fedora 511.7 KiB rpm x86_64 5.99.92-1.fc44 fedora 3.0 MiB rpm-build-libs x86_64 5.99.92-1.fc44 fedora 272.4 KiB rpm-libs x86_64 5.99.92-1.fc44 fedora 933.7 KiB rpm-sequoia x86_64 1.9.0-2.fc43 fedora 2.5 MiB rpm-sign-libs x86_64 5.99.92-1.fc44 fedora 39.7 KiB rust-srpm-macros noarch 26.4-1.fc44 fedora 4.8 KiB setup noarch 2.15.0-26.fc43 fedora 725.0 KiB sqlite-libs x86_64 3.50.2-2.fc43 fedora 1.5 MiB systemd-libs x86_64 258~rc4-1.fc44 fedora 2.3 MiB systemd-standalone-sysusers x86_64 258~rc4-1.fc44 fedora 293.5 KiB tpm2-tss x86_64 4.1.3-8.fc43 fedora 1.6 MiB tree-sitter-srpm-macros noarch 0.4.2-1.fc43 fedora 8.3 KiB util-linux-core x86_64 2.41.1-16.fc44 fedora 1.5 MiB xxhash-libs x86_64 0.8.3-3.fc43 fedora 90.2 KiB xz-libs x86_64 1:5.8.1-2.fc43 fedora 217.8 KiB zig-srpm-macros noarch 1-5.fc43 fedora 1.1 KiB zip x86_64 3.0-44.fc43 fedora 694.5 KiB zlib-ng-compat x86_64 2.2.5-1.fc43 fedora 137.6 KiB zstd x86_64 1.5.7-2.fc43 fedora 1.7 MiB Installing groups: Buildsystem building group Transaction Summary: Installing: 170 packages Total size of inbound packages is 59 MiB. Need to download 59 MiB. After this operation, 199 MiB extra will be used (install 199 MiB, remove 0 B). [ 1/170] bzip2-0:1.0.8-21.fc43.x86_64 100% | 225.4 KiB/s | 51.6 KiB | 00m00s [ 2/170] cpio-0:2.15-6.fc43.x86_64 100% | 1.5 MiB/s | 293.1 KiB | 00m00s [ 3/170] coreutils-0:9.7-5.fc43.x86_64 100% | 2.4 MiB/s | 1.1 MiB | 00m00s [ 4/170] bash-0:5.3.0-2.fc43.x86_64 100% | 3.9 MiB/s | 1.9 MiB | 00m00s [ 5/170] fedora-release-common-0:44-0. 100% | 391.1 KiB/s | 25.0 KiB | 00m00s [ 6/170] diffutils-0:3.12-3.fc43.x86_6 100% | 2.5 MiB/s | 392.3 KiB | 00m00s [ 7/170] findutils-1:4.10.0-6.fc43.x86 100% | 4.3 MiB/s | 550.0 KiB | 00m00s [ 8/170] glibc-minimal-langpack-0:2.42 100% | 601.9 KiB/s | 45.7 KiB | 00m00s [ 9/170] grep-0:3.12-2.fc43.x86_64 100% | 4.4 MiB/s | 299.1 KiB | 00m00s [ 10/170] gzip-0:1.14-1.fc44.x86_64 100% | 3.3 MiB/s | 177.7 KiB | 00m00s [ 11/170] info-0:7.2-6.fc43.x86_64 100% | 2.8 MiB/s | 182.9 KiB | 00m00s [ 12/170] patch-0:2.8-2.fc43.x86_64 100% | 1.9 MiB/s | 113.8 KiB | 00m00s [ 13/170] redhat-rpm-config-0:343-13.fc 100% | 980.3 KiB/s | 79.4 KiB | 00m00s [ 14/170] rpm-build-0:5.99.92-1.fc44.x8 100% | 1.9 MiB/s | 135.6 KiB | 00m00s [ 15/170] sed-0:4.9-5.fc43.x86_64 100% | 2.8 MiB/s | 317.1 KiB | 00m00s [ 16/170] shadow-utils-2:4.18.0-3.fc43. 100% | 9.7 MiB/s | 1.3 MiB | 00m00s [ 17/170] unzip-0:6.0-68.fc44.x86_64 100% | 2.0 MiB/s | 184.6 KiB | 00m00s [ 18/170] tar-2:1.35-6.fc43.x86_64 100% | 4.1 MiB/s | 856.4 KiB | 00m00s [ 19/170] which-0:2.23-3.fc43.x86_64 100% | 521.7 KiB/s | 41.7 KiB | 00m00s [ 20/170] xz-1:5.8.1-2.fc43.x86_64 100% | 6.0 MiB/s | 572.5 KiB | 00m00s [ 21/170] gawk-0:5.3.2-2.fc43.x86_64 100% | 8.1 MiB/s | 1.1 MiB | 00m00s [ 22/170] util-linux-0:2.41.1-16.fc44.x 100% | 6.6 MiB/s | 1.2 MiB | 00m00s [ 23/170] filesystem-0:3.18-50.fc43.x86 100% | 4.7 MiB/s | 1.3 MiB | 00m00s [ 24/170] ncurses-libs-0:6.5-7.20250614 100% | 1.9 MiB/s | 332.7 KiB | 00m00s [ 25/170] glibc-0:2.42.9000-5.fc44.x86_ 100% | 8.8 MiB/s | 2.2 MiB | 00m00s [ 26/170] bzip2-libs-0:1.0.8-21.fc43.x8 100% | 559.3 KiB/s | 43.1 KiB | 00m00s [ 27/170] libacl-0:2.3.2-4.fc43.x86_64 100% | 207.5 KiB/s | 24.3 KiB | 00m00s [ 28/170] gmp-1:6.3.0-4.fc44.x86_64 100% | 1.9 MiB/s | 319.3 KiB | 00m00s [ 29/170] libattr-0:2.5.2-6.fc43.x86_64 100% | 313.2 KiB/s | 17.9 KiB | 00m00s [ 30/170] libcap-0:2.76-3.fc44.x86_64 100% | 1.6 MiB/s | 86.9 KiB | 00m00s [ 31/170] coreutils-common-0:9.7-5.fc43 100% | 7.2 MiB/s | 2.1 MiB | 00m00s [ 32/170] libselinux-0:3.9-4.fc44.x86_6 100% | 768.3 KiB/s | 97.6 KiB | 00m00s [ 33/170] systemd-libs-0:258~rc4-1.fc44 100% | 5.6 MiB/s | 821.8 KiB | 00m00s [ 34/170] fedora-repos-0:44-0.1.noarch 100% | 73.8 KiB/s | 9.1 KiB | 00m00s [ 35/170] glibc-common-0:2.42.9000-5.fc 100% | 3.8 MiB/s | 332.4 KiB | 00m00s [ 36/170] openssl-libs-1:3.5.1-3.fc44.x 100% | 8.4 MiB/s | 2.5 MiB | 00m00s [ 37/170] pcre2-0:10.46-1.fc44.x86_64 100% | 3.2 MiB/s | 262.2 KiB | 00m00s [ 38/170] ed-0:1.22.2-1.fc44.x86_64 100% | 1.4 MiB/s | 83.7 KiB | 00m00s [ 39/170] ansible-srpm-macros-0:1-18.1. 100% | 321.1 KiB/s | 19.9 KiB | 00m00s [ 40/170] build-reproducibility-srpm-ma 100% | 179.1 KiB/s | 11.8 KiB | 00m00s [ 41/170] dwz-0:0.16-2.fc43.x86_64 100% | 1.7 MiB/s | 135.5 KiB | 00m00s [ 42/170] efi-srpm-macros-0:6-4.fc43.no 100% | 315.4 KiB/s | 22.4 KiB | 00m00s [ 43/170] file-0:5.46-7.fc44.x86_64 100% | 696.3 KiB/s | 48.7 KiB | 00m00s [ 44/170] filesystem-srpm-macros-0:3.18 100% | 419.3 KiB/s | 26.4 KiB | 00m00s [ 45/170] forge-srpm-macros-0:0.4.0-3.f 100% | 436.7 KiB/s | 20.1 KiB | 00m00s [ 46/170] fpc-srpm-macros-0:1.3-15.fc43 100% | 96.2 KiB/s | 7.9 KiB | 00m00s [ 47/170] gap-srpm-macros-0:1-1.fc44.no 100% | 111.8 KiB/s | 8.6 KiB | 00m00s [ 48/170] fonts-srpm-macros-1:2.0.5-23. 100% | 167.7 KiB/s | 27.2 KiB | 00m00s [ 49/170] ghc-srpm-macros-0:1.9.2-3.fc4 100% | 153.4 KiB/s | 8.7 KiB | 00m00s [ 50/170] gnat-srpm-macros-0:6-8.fc43.n 100% | 116.3 KiB/s | 8.5 KiB | 00m00s [ 51/170] kernel-srpm-macros-0:1.0-27.f 100% | 148.7 KiB/s | 8.9 KiB | 00m00s [ 52/170] java-srpm-macros-0:1-7.fc43.n 100% | 72.9 KiB/s | 7.9 KiB | 00m00s [ 53/170] go-srpm-macros-0:3.8.0-1.fc44 100% | 198.0 KiB/s | 28.3 KiB | 00m00s [ 54/170] openblas-srpm-macros-0:2-20.f 100% | 64.9 KiB/s | 7.6 KiB | 00m00s [ 55/170] ocaml-srpm-macros-0:11-2.fc43 100% | 60.1 KiB/s | 9.3 KiB | 00m00s [ 56/170] package-notes-srpm-macros-0:0 100% | 92.6 KiB/s | 9.0 KiB | 00m00s [ 57/170] perl-srpm-macros-0:1-60.fc43. 100% | 58.4 KiB/s | 8.3 KiB | 00m00s [ 58/170] lua-srpm-macros-0:1-16.fc43.n 100% | 14.3 KiB/s | 8.8 KiB | 00m01s [ 59/170] pyproject-srpm-macros-0:1.18. 100% | 32.8 KiB/s | 13.7 KiB | 00m00s [ 60/170] qt6-srpm-macros-0:6.9.2-1.fc4 100% | 80.2 KiB/s | 9.4 KiB | 00m00s [ 61/170] python-srpm-macros-0:3.14-7.f 100% | 39.9 KiB/s | 23.6 KiB | 00m01s [ 62/170] qt5-srpm-macros-0:5.15.17-2.f 100% | 22.8 KiB/s | 8.7 KiB | 00m00s [ 63/170] rust-srpm-macros-0:26.4-1.fc4 100% | 88.6 KiB/s | 11.2 KiB | 00m00s [ 64/170] tree-sitter-srpm-macros-0:0.4 100% | 296.7 KiB/s | 13.4 KiB | 00m00s [ 65/170] zip-0:3.0-44.fc43.x86_64 100% | 3.6 MiB/s | 261.6 KiB | 00m00s [ 66/170] zig-srpm-macros-0:1-5.fc43.no 100% | 88.8 KiB/s | 8.4 KiB | 00m00s [ 67/170] debugedit-0:5.2-3.fc44.x86_64 100% | 1.2 MiB/s | 85.6 KiB | 00m00s [ 68/170] elfutils-libelf-0:0.193-3.fc4 100% | 3.8 MiB/s | 207.8 KiB | 00m00s [ 69/170] libarchive-0:3.8.1-3.fc43.x86 100% | 5.5 MiB/s | 421.1 KiB | 00m00s [ 70/170] libgcc-0:15.2.1-1.fc44.1.x86_ 100% | 2.6 MiB/s | 131.8 KiB | 00m00s [ 71/170] libstdc++-0:15.2.1-1.fc44.1.x 100% | 10.9 MiB/s | 918.9 KiB | 00m00s [ 72/170] popt-0:1.19-9.fc43.x86_64 100% | 1.0 MiB/s | 65.7 KiB | 00m00s [ 73/170] rpm-0:5.99.92-1.fc44.x86_64 100% | 666.5 KiB/s | 564.5 KiB | 00m01s [ 74/170] readline-0:8.3-2.fc43.x86_64 100% | 1.5 MiB/s | 224.6 KiB | 00m00s [ 75/170] rpm-libs-0:5.99.92-1.fc44.x86 100% | 5.5 MiB/s | 399.9 KiB | 00m00s [ 76/170] rpm-build-libs-0:5.99.92-1.fc 100% | 940.0 KiB/s | 127.8 KiB | 00m00s [ 77/170] zstd-0:1.5.7-2.fc43.x86_64 100% | 5.0 MiB/s | 485.9 KiB | 00m00s [ 78/170] libeconf-0:0.7.9-2.fc43.x86_6 100% | 652.1 KiB/s | 35.2 KiB | 00m00s [ 79/170] audit-libs-0:4.1.1-2.fc44.x86 100% | 975.5 KiB/s | 138.5 KiB | 00m00s [ 80/170] libsemanage-0:3.9-3.fc44.x86_ 100% | 2.4 MiB/s | 123.4 KiB | 00m00s [ 81/170] pam-libs-0:1.7.1-3.fc43.x86_6 100% | 1.1 MiB/s | 57.5 KiB | 00m00s [ 82/170] libxcrypt-0:4.4.38-8.fc43.x86 100% | 1.2 MiB/s | 127.0 KiB | 00m00s [ 83/170] setup-0:2.15.0-26.fc43.noarch 100% | 2.7 MiB/s | 157.3 KiB | 00m00s [ 84/170] mpfr-0:4.2.2-2.fc43.x86_64 100% | 4.3 MiB/s | 347.0 KiB | 00m00s [ 85/170] xz-libs-1:5.8.1-2.fc43.x86_64 100% | 1.1 MiB/s | 112.9 KiB | 00m00s [ 86/170] elfutils-0:0.193-3.fc43.x86_6 100% | 566.8 KiB/s | 571.3 KiB | 00m01s [ 87/170] libblkid-0:2.41.1-16.fc44.x86 100% | 2.7 MiB/s | 123.1 KiB | 00m00s [ 88/170] libcap-ng-0:0.8.5-7.fc44.x86_ 100% | 518.8 KiB/s | 32.2 KiB | 00m00s [ 89/170] liblastlog2-0:2.41.1-16.fc44. 100% | 429.3 KiB/s | 23.2 KiB | 00m00s [ 90/170] libsmartcols-0:2.41.1-16.fc44 100% | 1.8 MiB/s | 84.0 KiB | 00m00s [ 91/170] libfdisk-0:2.41.1-16.fc44.x86 100% | 1.2 MiB/s | 161.3 KiB | 00m00s [ 92/170] libuuid-0:2.41.1-16.fc44.x86_ 100% | 483.9 KiB/s | 26.1 KiB | 00m00s [ 93/170] libmount-0:2.41.1-16.fc44.x86 100% | 1.0 MiB/s | 162.4 KiB | 00m00s [ 94/170] zlib-ng-compat-0:2.2.5-1.fc43 100% | 1.6 MiB/s | 79.2 KiB | 00m00s [ 95/170] ncurses-base-0:6.5-7.20250614 100% | 1.4 MiB/s | 88.2 KiB | 00m00s [ 96/170] util-linux-core-0:2.41.1-16.f 100% | 2.2 MiB/s | 551.0 KiB | 00m00s [ 97/170] libsepol-0:3.9-2.fc43.x86_64 100% | 3.7 MiB/s | 345.4 KiB | 00m00s [ 98/170] crypto-policies-0:20250714-4. 100% | 1.5 MiB/s | 98.4 KiB | 00m00s [ 99/170] fedora-gpg-keys-0:44-0.1.noar 100% | 1.8 MiB/s | 138.8 KiB | 00m00s [100/170] fedora-repos-rawhide-0:44-0.1 100% | 192.2 KiB/s | 8.6 KiB | 00m00s [101/170] pcre2-syntax-0:10.46-1.fc44.n 100% | 3.2 MiB/s | 162.2 KiB | 00m00s [102/170] add-determinism-0:0.6.0-2.fc4 100% | 8.9 MiB/s | 919.3 KiB | 00m00s [103/170] ca-certificates-0:2025.2.80_v 100% | 2.7 MiB/s | 973.8 KiB | 00m00s [104/170] file-libs-0:5.46-7.fc44.x86_6 100% | 6.6 MiB/s | 849.7 KiB | 00m00s [105/170] glibc-gconv-extra-0:2.42.9000 100% | 2.4 MiB/s | 1.6 MiB | 00m01s [106/170] curl-0:8.16.0~rc3-1.fc44.x86_ 100% | 1.4 MiB/s | 236.1 KiB | 00m00s [107/170] elfutils-debuginfod-client-0: 100% | 520.3 KiB/s | 46.8 KiB | 00m00s [108/170] elfutils-libs-0:0.193-3.fc43. 100% | 1.6 MiB/s | 269.7 KiB | 00m00s [109/170] libzstd-0:1.5.7-2.fc43.x86_64 100% | 1.7 MiB/s | 314.6 KiB | 00m00s [110/170] lz4-libs-0:1.10.0-3.fc43.x86_ 100% | 1.4 MiB/s | 78.0 KiB | 00m00s [111/170] lua-libs-0:5.4.8-2.fc43.x86_6 100% | 1.7 MiB/s | 131.7 KiB | 00m00s [112/170] rpm-sign-libs-0:5.99.92-1.fc4 100% | 366.2 KiB/s | 28.2 KiB | 00m00s [113/170] libgomp-0:15.2.1-1.fc44.1.x86 100% | 2.0 MiB/s | 371.7 KiB | 00m00s [114/170] libxml2-0:2.12.10-4.fc44.x86_ 100% | 2.2 MiB/s | 692.5 KiB | 00m00s [115/170] elfutils-default-yama-scope-0 100% | 149.7 KiB/s | 12.4 KiB | 00m00s [116/170] rpm-sequoia-0:1.9.0-2.fc43.x8 100% | 7.2 MiB/s | 933.3 KiB | 00m00s [117/170] json-c-0:0.18-7.fc43.x86_64 100% | 488.9 KiB/s | 45.0 KiB | 00m00s [118/170] gnupg2-0:2.4.8-4.fc43.x86_64 100% | 11.7 MiB/s | 1.6 MiB | 00m00s [119/170] ima-evm-utils-libs-0:1.6.2-6. 100% | 413.0 KiB/s | 29.3 KiB | 00m00s [120/170] sqlite-libs-0:3.50.2-2.fc43.x 100% | 2.6 MiB/s | 760.5 KiB | 00m00s [121/170] libfsverity-0:1.6-3.fc43.x86_ 100% | 338.7 KiB/s | 18.6 KiB | 00m00s [122/170] gpgverify-0:2.2-3.fc43.noarch 100% | 154.2 KiB/s | 11.1 KiB | 00m00s [123/170] gnupg2-gpg-agent-0:2.4.8-4.fc 100% | 4.1 MiB/s | 272.9 KiB | 00m00s [124/170] gnupg2-keyboxd-0:2.4.8-4.fc43 100% | 2.8 MiB/s | 94.7 KiB | 00m00s [125/170] gnupg2-gpgconf-0:2.4.8-4.fc43 100% | 1.4 MiB/s | 115.0 KiB | 00m00s [126/170] gnupg2-dirmngr-0:2.4.8-4.fc43 100% | 2.2 MiB/s | 274.6 KiB | 00m00s [127/170] gnupg2-verify-0:2.4.8-4.fc43. 100% | 1.1 MiB/s | 171.2 KiB | 00m00s [128/170] libassuan-0:2.5.7-4.fc43.x86_ 100% | 354.8 KiB/s | 67.4 KiB | 00m00s [129/170] libgpg-error-0:1.55-2.fc43.x8 100% | 3.2 MiB/s | 244.3 KiB | 00m00s [130/170] npth-0:1.8-3.fc43.x86_64 100% | 288.3 KiB/s | 25.7 KiB | 00m00s [131/170] tpm2-tss-0:4.1.3-8.fc43.x86_6 100% | 5.4 MiB/s | 425.9 KiB | 00m00s [132/170] libgcrypt-0:1.11.1-2.fc43.x86 100% | 1.8 MiB/s | 595.8 KiB | 00m00s [133/170] libksba-0:1.6.7-4.fc43.x86_64 100% | 1.8 MiB/s | 160.4 KiB | 00m00s [134/170] libusb1-0:1.0.29-4.fc44.x86_6 100% | 1.0 MiB/s | 79.9 KiB | 00m00s [135/170] openldap-0:2.6.10-4.fc44.x86_ 100% | 1.8 MiB/s | 259.5 KiB | 00m00s [136/170] libidn2-0:2.3.8-2.fc43.x86_64 100% | 2.6 MiB/s | 174.9 KiB | 00m00s [137/170] libtasn1-0:4.20.0-2.fc43.x86_ 100% | 827.4 KiB/s | 74.5 KiB | 00m00s [138/170] gnutls-0:3.8.10-3.fc43.x86_64 100% | 4.8 MiB/s | 1.4 MiB | 00m00s [139/170] libunistring-0:1.1-10.fc43.x8 100% | 5.2 MiB/s | 542.9 KiB | 00m00s [140/170] nettle-0:3.10.1-2.fc43.x86_64 100% | 2.3 MiB/s | 424.2 KiB | 00m00s [141/170] p11-kit-0:0.25.6-1.fc44.x86_6 100% | 2.9 MiB/s | 509.2 KiB | 00m00s [142/170] cyrus-sasl-lib-0:2.1.28-33.fc 100% | 7.5 MiB/s | 796.5 KiB | 00m00s [143/170] libffi-0:3.5.2-1.fc44.x86_64 100% | 441.5 KiB/s | 41.1 KiB | 00m00s [144/170] libevent-0:2.1.12-16.fc43.x86 100% | 2.5 MiB/s | 257.8 KiB | 00m00s [145/170] libtool-ltdl-0:2.5.4-7.fc43.x 100% | 323.5 KiB/s | 36.2 KiB | 00m00s [146/170] gdbm-libs-1:1.23-10.fc43.x86_ 100% | 810.9 KiB/s | 56.8 KiB | 00m00s [147/170] alternatives-0:1.33-2.fc43.x8 100% | 419.4 KiB/s | 40.7 KiB | 00m00s [148/170] jansson-0:2.14-3.fc43.x86_64 100% | 471.6 KiB/s | 45.3 KiB | 00m00s [149/170] pkgconf-pkg-config-0:2.3.0-3. 100% | 57.2 KiB/s | 9.6 KiB | 00m00s [150/170] pkgconf-0:2.3.0-3.fc43.x86_64 100% | 311.7 KiB/s | 44.6 KiB | 00m00s [151/170] pkgconf-m4-0:2.3.0-3.fc43.noa 100% | 278.2 KiB/s | 13.9 KiB | 00m00s [152/170] libpkgconf-0:2.3.0-3.fc43.x86 100% | 220.3 KiB/s | 37.9 KiB | 00m00s [153/170] p11-kit-trust-0:0.25.6-1.fc44 100% | 725.0 KiB/s | 138.5 KiB | 00m00s [154/170] fedora-release-0:44-0.2.noarc 100% | 205.2 KiB/s | 14.0 KiB | 00m00s [155/170] systemd-standalone-sysusers-0 100% | 1.8 MiB/s | 143.7 KiB | 00m00s [156/170] binutils-0:2.45.50-3.fc44.x86 100% | 9.0 MiB/s | 5.9 MiB | 00m01s [157/170] xxhash-libs-0:0.8.3-3.fc43.x8 100% | 349.9 KiB/s | 38.5 KiB | 00m00s [158/170] fedora-release-identity-basic 100% | 125.8 KiB/s | 14.7 KiB | 00m00s [159/170] gdb-minimal-0:16.3-5.fc44.x86 100% | 19.1 MiB/s | 4.4 MiB | 00m00s [160/170] libcurl-0:8.16.0~rc3-1.fc44.x 100% | 2.5 MiB/s | 409.8 KiB | 00m00s [161/170] libbrotli-0:1.1.0-9.fc44.x86_ 100% | 2.2 MiB/s | 339.1 KiB | 00m00s [162/170] krb5-libs-0:1.21.3-7.fc43.x86 100% | 4.6 MiB/s | 758.9 KiB | 00m00s [163/170] libnghttp2-0:1.67.0-1.fc44.x8 100% | 988.9 KiB/s | 73.2 KiB | 00m00s [164/170] libpsl-0:0.21.5-6.fc43.x86_64 100% | 1.2 MiB/s | 65.0 KiB | 00m00s [165/170] libssh-0:0.11.3-1.fc44.x86_64 100% | 2.6 MiB/s | 232.8 KiB | 00m00s [166/170] keyutils-libs-0:1.6.3-6.fc43. 100% | 298.6 KiB/s | 31.4 KiB | 00m00s [167/170] libcom_err-0:1.47.3-2.fc43.x8 100% | 304.5 KiB/s | 26.8 KiB | 00m00s [168/170] libverto-0:0.3.2-11.fc43.x86_ 100% | 299.6 KiB/s | 20.7 KiB | 00m00s [169/170] publicsuffix-list-dafsa-0:202 100% | 845.0 KiB/s | 59.2 KiB | 00m00s [170/170] libssh-config-0:0.11.3-1.fc44 100% | 211.9 KiB/s | 9.1 KiB | 00m00s -------------------------------------------------------------------------------- [170/170] Total 100% | 7.3 MiB/s | 59.0 MiB | 00m08s Running transaction 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 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 0x31645531: UserID : "Fedora (43) " Fingerprint: C6E7F081CF80E13146676E88829B606631645531 From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-43-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. [ 1/172] Verify package files 100% | 682.0 B/s | 170.0 B | 00m00s [ 2/172] Prepare transaction 100% | 1.8 KiB/s | 170.0 B | 00m00s [ 3/172] Installing libgcc-0:15.2.1-1. 100% | 131.0 MiB/s | 268.3 KiB | 00m00s [ 4/172] Installing libssh-config-0:0. 100% | 0.0 B/s | 816.0 B | 00m00s [ 5/172] Installing publicsuffix-list- 100% | 68.2 MiB/s | 69.8 KiB | 00m00s [ 6/172] Installing fedora-release-ide 100% | 898.4 KiB/s | 920.0 B | 00m00s [ 7/172] Installing fedora-gpg-keys-0: 100% | 15.9 MiB/s | 179.0 KiB | 00m00s [ 8/172] Installing fedora-repos-rawhi 100% | 2.4 MiB/s | 2.4 KiB | 00m00s [ 9/172] Installing fedora-repos-0:44- 100% | 5.6 MiB/s | 5.7 KiB | 00m00s [ 10/172] Installing fedora-release-com 100% | 8.1 MiB/s | 24.8 KiB | 00m00s [ 11/172] Installing fedora-release-0:4 100% | 5.5 KiB/s | 124.0 B | 00m00s >>> Running sysusers scriptlet: setup-0:2.15.0-26.fc43.noarch >>> Finished sysusers scriptlet: setup-0:2.15.0-26.fc43.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/172] Installing setup-0:2.15.0-26. 100% | 35.7 MiB/s | 730.6 KiB | 00m00s >>> [RPM] /etc/hosts created as /etc/hosts.rpmnew [ 13/172] Installing filesystem-0:3.18- 100% | 1.2 MiB/s | 212.8 KiB | 00m00s [ 14/172] Installing pkgconf-m4-0:2.3.0 100% | 14.5 MiB/s | 14.8 KiB | 00m00s [ 15/172] Installing pcre2-syntax-0:10. 100% | 90.4 MiB/s | 277.8 KiB | 00m00s [ 16/172] Installing ncurses-base-0:6.5 100% | 13.3 MiB/s | 353.5 KiB | 00m00s [ 17/172] Installing bash-0:5.3.0-2.fc4 100% | 110.9 MiB/s | 8.4 MiB | 00m00s [ 18/172] Installing glibc-common-0:2.4 100% | 37.8 MiB/s | 1.0 MiB | 00m00s [ 19/172] Installing glibc-gconv-extra- 100% | 91.4 MiB/s | 7.3 MiB | 00m00s [ 20/172] Installing glibc-0:2.42.9000- 100% | 48.9 MiB/s | 6.7 MiB | 00m00s [ 21/172] Installing ncurses-libs-0:6.5 100% | 66.5 MiB/s | 952.8 KiB | 00m00s [ 22/172] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 23/172] Installing zlib-ng-compat-0:2 100% | 135.2 MiB/s | 138.4 KiB | 00m00s [ 24/172] Installing bzip2-libs-0:1.0.8 100% | 79.8 MiB/s | 81.7 KiB | 00m00s [ 25/172] Installing libgpg-error-0:1.5 100% | 47.3 MiB/s | 921.1 KiB | 00m00s [ 26/172] Installing libstdc++-0:15.2.1 100% | 189.6 MiB/s | 2.8 MiB | 00m00s [ 27/172] Installing xz-libs-1:5.8.1-2. 100% | 213.8 MiB/s | 218.9 KiB | 00m00s [ 28/172] Installing libassuan-0:2.5.7- 100% | 3.7 MiB/s | 165.6 KiB | 00m00s [ 29/172] Installing libgcrypt-0:1.11.1 100% | 262.5 MiB/s | 1.6 MiB | 00m00s [ 30/172] Installing readline-0:8.3-2.f 100% | 83.6 MiB/s | 513.9 KiB | 00m00s [ 31/172] Installing gmp-1:6.3.0-4.fc44 100% | 199.6 MiB/s | 817.5 KiB | 00m00s [ 32/172] Installing libuuid-0:2.41.1-1 100% | 37.6 MiB/s | 38.5 KiB | 00m00s [ 33/172] Installing popt-0:1.19-9.fc43 100% | 19.4 MiB/s | 139.4 KiB | 00m00s [ 34/172] Installing npth-0:1.8-3.fc43. 100% | 49.5 MiB/s | 50.7 KiB | 00m00s [ 35/172] Installing libblkid-0:2.41.1- 100% | 128.7 MiB/s | 263.5 KiB | 00m00s [ 36/172] Installing libxcrypt-0:4.4.38 100% | 93.5 MiB/s | 287.2 KiB | 00m00s [ 37/172] Installing libzstd-0:1.5.7-2. 100% | 111.8 MiB/s | 801.1 KiB | 00m00s [ 38/172] Installing elfutils-libelf-0: 100% | 233.3 MiB/s | 1.2 MiB | 00m00s [ 39/172] Installing sqlite-libs-0:3.50 100% | 151.6 MiB/s | 1.5 MiB | 00m00s [ 40/172] Installing gnupg2-gpgconf-0:2 100% | 16.4 MiB/s | 252.0 KiB | 00m00s [ 41/172] Installing libattr-0:2.5.2-6. 100% | 24.8 MiB/s | 25.4 KiB | 00m00s [ 42/172] Installing libacl-0:2.3.2-4.f 100% | 35.9 MiB/s | 36.8 KiB | 00m00s [ 43/172] Installing libtasn1-0:4.20.0- 100% | 43.5 MiB/s | 178.1 KiB | 00m00s [ 44/172] Installing libunistring-0:1.1 100% | 191.9 MiB/s | 1.7 MiB | 00m00s [ 45/172] Installing libidn2-0:2.3.8-2. 100% | 24.8 MiB/s | 558.7 KiB | 00m00s [ 46/172] Installing crypto-policies-0: 100% | 15.3 MiB/s | 172.0 KiB | 00m00s [ 47/172] Installing dwz-0:0.16-2.fc43. 100% | 15.7 MiB/s | 288.5 KiB | 00m00s [ 48/172] Installing gnupg2-verify-0:2. 100% | 24.4 MiB/s | 349.9 KiB | 00m00s [ 49/172] Installing mpfr-0:4.2.2-2.fc4 100% | 203.7 MiB/s | 834.4 KiB | 00m00s [ 50/172] Installing gawk-0:5.3.2-2.fc4 100% | 17.3 MiB/s | 1.8 MiB | 00m00s [ 51/172] Installing libksba-0:1.6.7-4. 100% | 130.6 MiB/s | 401.1 KiB | 00m00s [ 52/172] Installing unzip-0:6.0-68.fc4 100% | 24.0 MiB/s | 393.8 KiB | 00m00s [ 53/172] Installing file-libs-0:5.46-7 100% | 42.3 MiB/s | 11.9 MiB | 00m00s [ 54/172] Installing file-0:5.46-7.fc44 100% | 5.8 MiB/s | 101.7 KiB | 00m00s [ 55/172] Installing pcre2-0:10.46-1.fc 100% | 170.7 MiB/s | 699.1 KiB | 00m00s [ 56/172] Installing grep-0:3.12-2.fc43 100% | 40.1 MiB/s | 1.0 MiB | 00m00s [ 57/172] Installing xz-1:5.8.1-2.fc43. 100% | 44.4 MiB/s | 1.3 MiB | 00m00s [ 58/172] Installing libeconf-0:0.7.9-2 100% | 32.5 MiB/s | 66.5 KiB | 00m00s [ 59/172] Installing libcap-ng-0:0.8.5- 100% | 34.6 MiB/s | 70.8 KiB | 00m00s [ 60/172] Installing audit-libs-0:4.1.1 100% | 124.2 MiB/s | 381.5 KiB | 00m00s [ 61/172] Installing pam-libs-0:1.7.1-3 100% | 63.0 MiB/s | 129.0 KiB | 00m00s [ 62/172] Installing libcap-0:2.76-3.fc 100% | 10.5 MiB/s | 214.3 KiB | 00m00s [ 63/172] Installing systemd-libs-0:258 100% | 194.7 MiB/s | 2.3 MiB | 00m00s [ 64/172] Installing libsmartcols-0:2.4 100% | 88.7 MiB/s | 181.6 KiB | 00m00s [ 65/172] Installing libsepol-0:3.9-2.f 100% | 114.8 MiB/s | 822.9 KiB | 00m00s [ 66/172] Installing libselinux-0:3.9-4 100% | 94.9 MiB/s | 194.4 KiB | 00m00s [ 67/172] Installing findutils-1:4.10.0 100% | 74.3 MiB/s | 1.9 MiB | 00m00s [ 68/172] Installing sed-0:4.9-5.fc43.x 100% | 35.2 MiB/s | 865.5 KiB | 00m00s [ 69/172] Installing libmount-0:2.41.1- 100% | 182.5 MiB/s | 373.7 KiB | 00m00s [ 70/172] Installing lz4-libs-0:1.10.0- 100% | 158.6 MiB/s | 162.5 KiB | 00m00s [ 71/172] Installing lua-libs-0:5.4.8-2 100% | 137.6 MiB/s | 281.9 KiB | 00m00s [ 72/172] Installing json-c-0:0.18-7.fc 100% | 82.0 MiB/s | 84.0 KiB | 00m00s [ 73/172] Installing libffi-0:3.5.2-1.f 100% | 83.2 MiB/s | 85.2 KiB | 00m00s [ 74/172] Installing p11-kit-0:0.25.6-1 100% | 61.9 MiB/s | 2.3 MiB | 00m00s [ 75/172] Installing alternatives-0:1.3 100% | 4.8 MiB/s | 63.8 KiB | 00m00s [ 76/172] Installing p11-kit-trust-0:0. 100% | 14.5 MiB/s | 445.1 KiB | 00m00s [ 77/172] Installing zstd-0:1.5.7-2.fc4 100% | 81.4 MiB/s | 1.7 MiB | 00m00s [ 78/172] Installing util-linux-core-0: 100% | 49.3 MiB/s | 1.5 MiB | 00m00s [ 79/172] Installing tar-2:1.35-6.fc43. 100% | 89.6 MiB/s | 3.0 MiB | 00m00s [ 80/172] Installing libsemanage-0:3.9- 100% | 151.5 MiB/s | 310.2 KiB | 00m00s [ 81/172] Installing systemd-standalone 100% | 19.1 MiB/s | 294.1 KiB | 00m00s [ 82/172] Installing libusb1-0:1.0.29-4 100% | 84.4 MiB/s | 172.9 KiB | 00m00s [ 83/172] Installing zip-0:3.0-44.fc43. 100% | 40.1 MiB/s | 698.4 KiB | 00m00s [ 84/172] Installing gnupg2-keyboxd-0:2 100% | 13.2 MiB/s | 202.7 KiB | 00m00s [ 85/172] Installing libpsl-0:0.21.5-6. 100% | 75.7 MiB/s | 77.5 KiB | 00m00s [ 86/172] Installing liblastlog2-0:2.41 100% | 2.5 MiB/s | 36.0 KiB | 00m00s [ 87/172] Installing libfdisk-0:2.41.1- 100% | 93.1 MiB/s | 381.5 KiB | 00m00s [ 88/172] Installing nettle-0:3.10.1-2. 100% | 193.8 MiB/s | 793.7 KiB | 00m00s [ 89/172] Installing gnutls-0:3.8.10-3. 100% | 192.0 MiB/s | 3.8 MiB | 00m00s [ 90/172] Installing libxml2-0:2.12.10- 100% | 77.5 MiB/s | 1.7 MiB | 00m00s [ 91/172] Installing bzip2-0:1.0.8-21.f 100% | 7.0 MiB/s | 99.8 KiB | 00m00s [ 92/172] Installing add-determinism-0: 100% | 97.7 MiB/s | 2.4 MiB | 00m00s [ 93/172] Installing build-reproducibil 100% | 1.0 MiB/s | 1.0 KiB | 00m00s [ 94/172] Installing cpio-0:2.15-6.fc43 100% | 50.0 MiB/s | 1.1 MiB | 00m00s [ 95/172] Installing diffutils-0:3.12-3 100% | 62.5 MiB/s | 1.6 MiB | 00m00s [ 96/172] Installing ed-0:1.22.2-1.fc44 100% | 10.5 MiB/s | 150.4 KiB | 00m00s [ 97/172] Installing patch-0:2.8-2.fc43 100% | 15.6 MiB/s | 224.3 KiB | 00m00s [ 98/172] Installing libgomp-0:15.2.1-1 100% | 176.6 MiB/s | 542.5 KiB | 00m00s [ 99/172] Installing libtool-ltdl-0:2.5 100% | 69.6 MiB/s | 71.2 KiB | 00m00s [100/172] Installing gdbm-libs-1:1.23-1 100% | 32.1 MiB/s | 131.6 KiB | 00m00s [101/172] Installing cyrus-sasl-lib-0:2 100% | 92.0 MiB/s | 2.3 MiB | 00m00s [102/172] Installing jansson-0:2.14-3.f 100% | 44.2 MiB/s | 90.5 KiB | 00m00s [103/172] Installing libpkgconf-0:2.3.0 100% | 77.4 MiB/s | 79.2 KiB | 00m00s [104/172] Installing pkgconf-0:2.3.0-3. 100% | 6.3 MiB/s | 91.0 KiB | 00m00s [105/172] Installing pkgconf-pkg-config 100% | 147.8 KiB/s | 1.8 KiB | 00m00s [106/172] Installing xxhash-libs-0:0.8. 100% | 22.4 MiB/s | 91.6 KiB | 00m00s [107/172] Installing libbrotli-0:1.1.0- 100% | 204.0 MiB/s | 835.6 KiB | 00m00s [108/172] Installing libnghttp2-0:1.67. 100% | 159.5 MiB/s | 163.4 KiB | 00m00s [109/172] Installing keyutils-libs-0:1. 100% | 54.4 MiB/s | 55.7 KiB | 00m00s [110/172] Installing libcom_err-0:1.47. 100% | 31.4 MiB/s | 64.2 KiB | 00m00s [111/172] Installing libverto-0:0.3.2-1 100% | 13.3 MiB/s | 27.2 KiB | 00m00s [112/172] Installing filesystem-srpm-ma 100% | 38.0 MiB/s | 38.9 KiB | 00m00s [113/172] Installing elfutils-default-y 100% | 157.2 KiB/s | 2.0 KiB | 00m00s [114/172] Installing elfutils-libs-0:0. 100% | 167.3 MiB/s | 685.2 KiB | 00m00s [115/172] Installing rust-srpm-macros-0 100% | 5.4 MiB/s | 5.6 KiB | 00m00s [116/172] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 740.0 B | 00m00s [117/172] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [118/172] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [119/172] Installing package-notes-srpm 100% | 673.2 KiB/s | 2.0 KiB | 00m00s [120/172] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [121/172] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.1 KiB | 00m00s [122/172] Installing kernel-srpm-macros 100% | 2.3 MiB/s | 2.3 KiB | 00m00s [123/172] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [124/172] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [125/172] Installing gap-srpm-macros-0: 100% | 2.5 MiB/s | 2.6 KiB | 00m00s [126/172] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [127/172] Installing ansible-srpm-macro 100% | 35.4 MiB/s | 36.2 KiB | 00m00s [128/172] Installing coreutils-common-0 100% | 168.5 MiB/s | 11.3 MiB | 00m00s [129/172] Installing openssl-libs-1:3.5 100% | 116.7 MiB/s | 9.2 MiB | 00m00s [130/172] Installing coreutils-0:9.7-5. 100% | 61.2 MiB/s | 5.4 MiB | 00m00s [131/172] Installing ca-certificates-0: 100% | 1.1 MiB/s | 2.5 MiB | 00m02s [132/172] Installing libarchive-0:3.8.1 100% | 93.1 MiB/s | 953.1 KiB | 00m00s [133/172] Installing krb5-libs-0:1.21.3 100% | 63.7 MiB/s | 2.3 MiB | 00m00s >>> Running sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.x86_64 >>> Finished sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.x86_64 >>> Scriptlet output: >>> Creating group 'tss' with GID 59. >>> Creating user 'tss' (Account used for TPM access) with UID 59 and GID 59. >>> [134/172] Installing tpm2-tss-0:4.1.3-8 100% | 112.3 MiB/s | 1.6 MiB | 00m00s [135/172] Installing ima-evm-utils-libs 100% | 30.3 MiB/s | 62.0 KiB | 00m00s [136/172] Installing gnupg2-gpg-agent-0 100% | 16.1 MiB/s | 675.4 KiB | 00m00s [137/172] Installing libssh-0:0.11.3-1. 100% | 92.6 MiB/s | 569.2 KiB | 00m00s [138/172] Installing gzip-0:1.14-1.fc44 100% | 17.9 MiB/s | 403.3 KiB | 00m00s [139/172] Installing rpm-sequoia-0:1.9. 100% | 190.7 MiB/s | 2.5 MiB | 00m00s [140/172] Installing rpm-libs-0:5.99.92 100% | 152.2 MiB/s | 935.3 KiB | 00m00s [141/172] Installing libfsverity-0:1.6- 100% | 28.8 MiB/s | 29.5 KiB | 00m00s [142/172] Installing libevent-0:2.1.12- 100% | 144.3 MiB/s | 886.8 KiB | 00m00s [143/172] Installing openldap-0:2.6.10- 100% | 108.0 MiB/s | 663.6 KiB | 00m00s [144/172] Installing libcurl-0:8.16.0~r 100% | 128.4 MiB/s | 920.7 KiB | 00m00s [145/172] Installing elfutils-debuginfo 100% | 4.0 MiB/s | 86.2 KiB | 00m00s [146/172] Installing elfutils-0:0.193-3 100% | 94.1 MiB/s | 2.9 MiB | 00m00s [147/172] Installing binutils-0:2.45.50 100% | 80.0 MiB/s | 27.4 MiB | 00m00s [148/172] Installing gdb-minimal-0:16.3 100% | 114.3 MiB/s | 13.3 MiB | 00m00s [149/172] Installing debugedit-0:5.2-3. 100% | 11.8 MiB/s | 217.3 KiB | 00m00s [150/172] Installing curl-0:8.16.0~rc3- 100% | 11.1 MiB/s | 478.1 KiB | 00m00s [151/172] Installing rpm-0:5.99.92-1.fc 100% | 40.9 MiB/s | 2.5 MiB | 00m00s [152/172] Installing efi-srpm-macros-0: 100% | 40.2 MiB/s | 41.1 KiB | 00m00s [153/172] Installing java-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [154/172] Installing lua-srpm-macros-0: 100% | 1.9 MiB/s | 1.9 KiB | 00m00s [155/172] Installing tree-sitter-srpm-m 100% | 9.1 MiB/s | 9.3 KiB | 00m00s [156/172] Installing zig-srpm-macros-0: 100% | 1.6 MiB/s | 1.7 KiB | 00m00s [157/172] Installing gnupg2-dirmngr-0:2 100% | 17.8 MiB/s | 621.1 KiB | 00m00s [158/172] Installing gnupg2-0:2.4.8-4.f 100% | 123.6 MiB/s | 6.6 MiB | 00m00s [159/172] Installing rpm-sign-libs-0:5. 100% | 39.6 MiB/s | 40.6 KiB | 00m00s [160/172] Installing rpm-build-libs-0:5 100% | 53.4 MiB/s | 273.2 KiB | 00m00s [161/172] Installing gpgverify-0:2.2-3. 100% | 9.2 MiB/s | 9.4 KiB | 00m00s [162/172] Installing rpm-build-0:5.99.9 100% | 16.0 MiB/s | 294.3 KiB | 00m00s [163/172] Installing pyproject-srpm-mac 100% | 2.4 MiB/s | 2.5 KiB | 00m00s [164/172] Installing redhat-rpm-config- 100% | 30.8 MiB/s | 189.4 KiB | 00m00s [165/172] Installing forge-srpm-macros- 100% | 4.9 MiB/s | 40.3 KiB | 00m00s [166/172] Installing fonts-srpm-macros- 100% | 27.8 MiB/s | 57.0 KiB | 00m00s [167/172] Installing go-srpm-macros-0:3 100% | 30.8 MiB/s | 63.0 KiB | 00m00s [168/172] Installing python-srpm-macros 100% | 25.8 MiB/s | 52.8 KiB | 00m00s [169/172] Installing which-0:2.23-3.fc4 100% | 3.5 MiB/s | 85.7 KiB | 00m00s [170/172] Installing util-linux-0:2.41. 100% | 30.8 MiB/s | 3.6 MiB | 00m00s [171/172] Installing shadow-utils-2:4.1 100% | 37.8 MiB/s | 4.0 MiB | 00m00s [172/172] Installing info-0:7.2-6.fc43. 100% | 117.4 KiB/s | 354.3 KiB | 00m03s Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: add-determinism-0.6.0-2.fc43.x86_64 alternatives-1.33-2.fc43.x86_64 ansible-srpm-macros-1-18.1.fc43.noarch audit-libs-4.1.1-2.fc44.x86_64 bash-5.3.0-2.fc43.x86_64 binutils-2.45.50-3.fc44.x86_64 build-reproducibility-srpm-macros-0.6.0-2.fc43.noarch bzip2-1.0.8-21.fc43.x86_64 bzip2-libs-1.0.8-21.fc43.x86_64 ca-certificates-2025.2.80_v9.0.304-2.fc44.noarch coreutils-9.7-5.fc43.x86_64 coreutils-common-9.7-5.fc43.x86_64 cpio-2.15-6.fc43.x86_64 crypto-policies-20250714-4.gitcd6043a.fc44.noarch curl-8.16.0~rc3-1.fc44.x86_64 cyrus-sasl-lib-2.1.28-33.fc44.x86_64 debugedit-5.2-3.fc44.x86_64 diffutils-3.12-3.fc43.x86_64 dwz-0.16-2.fc43.x86_64 ed-1.22.2-1.fc44.x86_64 efi-srpm-macros-6-4.fc43.noarch elfutils-0.193-3.fc43.x86_64 elfutils-debuginfod-client-0.193-3.fc43.x86_64 elfutils-default-yama-scope-0.193-3.fc43.noarch elfutils-libelf-0.193-3.fc43.x86_64 elfutils-libs-0.193-3.fc43.x86_64 fedora-gpg-keys-44-0.1.noarch fedora-release-44-0.2.noarch fedora-release-common-44-0.2.noarch fedora-release-identity-basic-44-0.2.noarch fedora-repos-44-0.1.noarch fedora-repos-rawhide-44-0.1.noarch file-5.46-7.fc44.x86_64 file-libs-5.46-7.fc44.x86_64 filesystem-3.18-50.fc43.x86_64 filesystem-srpm-macros-3.18-50.fc43.noarch findutils-4.10.0-6.fc43.x86_64 fonts-srpm-macros-2.0.5-23.fc43.noarch forge-srpm-macros-0.4.0-3.fc43.noarch fpc-srpm-macros-1.3-15.fc43.noarch gap-srpm-macros-1-1.fc44.noarch gawk-5.3.2-2.fc43.x86_64 gdb-minimal-16.3-5.fc44.x86_64 gdbm-libs-1.23-10.fc43.x86_64 ghc-srpm-macros-1.9.2-3.fc43.noarch glibc-2.42.9000-5.fc44.x86_64 glibc-common-2.42.9000-5.fc44.x86_64 glibc-gconv-extra-2.42.9000-5.fc44.x86_64 glibc-minimal-langpack-2.42.9000-5.fc44.x86_64 gmp-6.3.0-4.fc44.x86_64 gnat-srpm-macros-6-8.fc43.noarch gnupg2-2.4.8-4.fc43.x86_64 gnupg2-dirmngr-2.4.8-4.fc43.x86_64 gnupg2-gpg-agent-2.4.8-4.fc43.x86_64 gnupg2-gpgconf-2.4.8-4.fc43.x86_64 gnupg2-keyboxd-2.4.8-4.fc43.x86_64 gnupg2-verify-2.4.8-4.fc43.x86_64 gnutls-3.8.10-3.fc43.x86_64 go-srpm-macros-3.8.0-1.fc44.noarch gpg-pubkey-36f612dcf27f7d1a48a835e4dbfcf71c6d9f90a6-6786af3b gpg-pubkey-4f50a6114cd5c6976a7f1179655a4b02f577861e-6888bc98 gpg-pubkey-c6e7f081cf80e13146676e88829b606631645531-66b6dccf gpgverify-2.2-3.fc43.noarch grep-3.12-2.fc43.x86_64 gzip-1.14-1.fc44.x86_64 ima-evm-utils-libs-1.6.2-6.fc43.x86_64 info-7.2-6.fc43.x86_64 jansson-2.14-3.fc43.x86_64 java-srpm-macros-1-7.fc43.noarch json-c-0.18-7.fc43.x86_64 kernel-srpm-macros-1.0-27.fc43.noarch keyutils-libs-1.6.3-6.fc43.x86_64 krb5-libs-1.21.3-7.fc43.x86_64 libacl-2.3.2-4.fc43.x86_64 libarchive-3.8.1-3.fc43.x86_64 libassuan-2.5.7-4.fc43.x86_64 libattr-2.5.2-6.fc43.x86_64 libblkid-2.41.1-16.fc44.x86_64 libbrotli-1.1.0-9.fc44.x86_64 libcap-2.76-3.fc44.x86_64 libcap-ng-0.8.5-7.fc44.x86_64 libcom_err-1.47.3-2.fc43.x86_64 libcurl-8.16.0~rc3-1.fc44.x86_64 libeconf-0.7.9-2.fc43.x86_64 libevent-2.1.12-16.fc43.x86_64 libfdisk-2.41.1-16.fc44.x86_64 libffi-3.5.2-1.fc44.x86_64 libfsverity-1.6-3.fc43.x86_64 libgcc-15.2.1-1.fc44.1.x86_64 libgcrypt-1.11.1-2.fc43.x86_64 libgomp-15.2.1-1.fc44.1.x86_64 libgpg-error-1.55-2.fc43.x86_64 libidn2-2.3.8-2.fc43.x86_64 libksba-1.6.7-4.fc43.x86_64 liblastlog2-2.41.1-16.fc44.x86_64 libmount-2.41.1-16.fc44.x86_64 libnghttp2-1.67.0-1.fc44.x86_64 libpkgconf-2.3.0-3.fc43.x86_64 libpsl-0.21.5-6.fc43.x86_64 libselinux-3.9-4.fc44.x86_64 libsemanage-3.9-3.fc44.x86_64 libsepol-3.9-2.fc43.x86_64 libsmartcols-2.41.1-16.fc44.x86_64 libssh-0.11.3-1.fc44.x86_64 libssh-config-0.11.3-1.fc44.noarch libstdc++-15.2.1-1.fc44.1.x86_64 libtasn1-4.20.0-2.fc43.x86_64 libtool-ltdl-2.5.4-7.fc43.x86_64 libunistring-1.1-10.fc43.x86_64 libusb1-1.0.29-4.fc44.x86_64 libuuid-2.41.1-16.fc44.x86_64 libverto-0.3.2-11.fc43.x86_64 libxcrypt-4.4.38-8.fc43.x86_64 libxml2-2.12.10-4.fc44.x86_64 libzstd-1.5.7-2.fc43.x86_64 lua-libs-5.4.8-2.fc43.x86_64 lua-srpm-macros-1-16.fc43.noarch lz4-libs-1.10.0-3.fc43.x86_64 mpfr-4.2.2-2.fc43.x86_64 ncurses-base-6.5-7.20250614.fc43.noarch ncurses-libs-6.5-7.20250614.fc43.x86_64 nettle-3.10.1-2.fc43.x86_64 npth-1.8-3.fc43.x86_64 ocaml-srpm-macros-11-2.fc43.noarch openblas-srpm-macros-2-20.fc43.noarch openldap-2.6.10-4.fc44.x86_64 openssl-libs-3.5.1-3.fc44.x86_64 p11-kit-0.25.6-1.fc44.x86_64 p11-kit-trust-0.25.6-1.fc44.x86_64 package-notes-srpm-macros-0.5-14.fc43.noarch pam-libs-1.7.1-3.fc43.x86_64 patch-2.8-2.fc43.x86_64 pcre2-10.46-1.fc44.x86_64 pcre2-syntax-10.46-1.fc44.noarch perl-srpm-macros-1-60.fc43.noarch pkgconf-2.3.0-3.fc43.x86_64 pkgconf-m4-2.3.0-3.fc43.noarch pkgconf-pkg-config-2.3.0-3.fc43.x86_64 popt-1.19-9.fc43.x86_64 publicsuffix-list-dafsa-20250616-2.fc43.noarch pyproject-srpm-macros-1.18.4-1.fc44.noarch python-srpm-macros-3.14-7.fc44.noarch qt5-srpm-macros-5.15.17-2.fc43.noarch qt6-srpm-macros-6.9.2-1.fc44.noarch readline-8.3-2.fc43.x86_64 redhat-rpm-config-343-13.fc44.noarch rpm-5.99.92-1.fc44.x86_64 rpm-build-5.99.92-1.fc44.x86_64 rpm-build-libs-5.99.92-1.fc44.x86_64 rpm-libs-5.99.92-1.fc44.x86_64 rpm-sequoia-1.9.0-2.fc43.x86_64 rpm-sign-libs-5.99.92-1.fc44.x86_64 rust-srpm-macros-26.4-1.fc44.noarch sed-4.9-5.fc43.x86_64 setup-2.15.0-26.fc43.noarch shadow-utils-4.18.0-3.fc43.x86_64 sqlite-libs-3.50.2-2.fc43.x86_64 systemd-libs-258~rc4-1.fc44.x86_64 systemd-standalone-sysusers-258~rc4-1.fc44.x86_64 tar-1.35-6.fc43.x86_64 tpm2-tss-4.1.3-8.fc43.x86_64 tree-sitter-srpm-macros-0.4.2-1.fc43.noarch unzip-6.0-68.fc44.x86_64 util-linux-2.41.1-16.fc44.x86_64 util-linux-core-2.41.1-16.fc44.x86_64 which-2.23-3.fc43.x86_64 xxhash-libs-0.8.3-3.fc43.x86_64 xz-5.8.1-2.fc43.x86_64 xz-libs-5.8.1-2.fc43.x86_64 zig-srpm-macros-1-5.fc43.noarch zip-3.0-44.fc43.x86_64 zlib-ng-compat-2.2.5-1.fc43.x86_64 zstd-1.5.7-2.fc43.x86_64 Start: buildsrpm Start: rpmbuild -bs Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Wrote: /builddir/build/SRPMS/python-xbout-0.3.8-1.fc44.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-1757624430.291162/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-fkssy6d3/python-xbout/python-xbout.spec) Config(child) 0 minutes 43 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-xbout-0.3.8-1.fc44.src.rpm) Config(fedora-rawhide-x86_64) Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1757624430.291162/root. INFO: reusing tmpfs at /var/lib/mock/fedora-rawhide-x86_64-bootstrap-1757624430.291162/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-1757624430.291162/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-5.99.92-1.fc44.x86_64 rpm-sequoia-1.9.0-2.fc43.x86_64 dnf5-5.2.17.0-1.fc44.x86_64 dnf5-plugins-5.2.17.0-1.fc44.x86_64 Finish: chroot init Start: build phase for python-xbout-0.3.8-1.fc44.src.rpm Start: build setup for python-xbout-0.3.8-1.fc44.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Wrote: /builddir/build/SRPMS/python-xbout-0.3.8-1.fc44.src.rpm Updating and loading repositories: Copr repository 100% | 54.9 KiB/s | 2.1 KiB | 00m00s fedora 100% | 369.3 KiB/s | 25.9 KiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing: python3-boutdata noarch 0.3.0-5.fc44 fedora 1.2 MiB python3-devel x86_64 3.14.0~rc2-1.fc44 fedora 1.9 MiB python3-pytest noarch 8.3.5-8.fc44 fedora 21.6 MiB python3-sphinx noarch 1:8.2.3-10.fc44 fedora 12.3 MiB python3-sphinx-autodoc-typehints noarch 3.1.0-4.fc44 fedora 129.1 KiB Installing dependencies: abattis-cantarell-vf-fonts noarch 0.301-15.fc43 fedora 192.7 KiB blosc x86_64 1.21.6-7.fc43 fedora 126.2 KiB cairo x86_64 1.18.4-2.fc43 fedora 1.8 MiB default-fonts-core-sans noarch 4.2-5.fc43 fedora 11.9 KiB dejavu-sans-fonts noarch 2.37-26.fc43 fedora 5.5 MiB expat x86_64 2.7.1-3.fc43 fedora 294.2 KiB flexiblas x86_64 3.4.5-5.fc44 fedora 50.4 KiB flexiblas-netlib x86_64 3.4.5-5.fc44 fedora 10.9 MiB flexiblas-openblas-openmp x86_64 3.4.5-5.fc44 fedora 39.2 KiB fontconfig x86_64 2.17.0-3.fc43 fedora 765.9 KiB fonts-filesystem noarch 1:2.0.5-23.fc43 fedora 0.0 B freetype x86_64 2.13.3-3.fc43 fedora 850.2 KiB fribidi x86_64 1.0.16-3.fc43 fedora 190.3 KiB glib2 x86_64 2.85.4-1.fc44 fedora 14.7 MiB google-noto-fonts-common noarch 20250901-1.fc44 fedora 17.7 KiB google-noto-sans-vf-fonts noarch 20250901-1.fc44 fedora 1.4 MiB graphite2 x86_64 1.3.14-19.fc43 fedora 191.8 KiB harfbuzz x86_64 11.4.5-1.fc44 fedora 2.8 MiB hdf-libs x86_64 4.3.0-4.fc43 fedora 687.2 KiB hdf5 x86_64 1.14.6-6.fc43 fedora 6.4 MiB jbigkit-libs x86_64 2.1-32.fc43 fedora 113.5 KiB lcms2 x86_64 2.16-6.fc43 fedora 433.7 KiB libX11 x86_64 1.8.12-1.fc43 fedora 1.3 MiB libX11-common noarch 1.8.12-1.fc43 fedora 1.2 MiB libXau x86_64 1.0.12-3.fc43 fedora 72.9 KiB libXext x86_64 1.3.6-4.fc43 fedora 90.0 KiB libXrender x86_64 0.9.12-3.fc43 fedora 46.0 KiB libaec x86_64 1.1.4-3.fc44 fedora 90.4 KiB libgfortran x86_64 15.2.1-1.fc44.1 fedora 3.4 MiB libimagequant x86_64 4.1.0-1.fc44 fedora 707.4 KiB libjpeg-turbo x86_64 3.1.2-1.fc44 fedora 804.8 KiB liblerc x86_64 4.0.0-9.fc43 fedora 624.1 KiB libpng x86_64 2:1.6.50-2.fc43 fedora 237.7 KiB libqhull_r x86_64 1:8.0.2-7.fc43 fedora 483.3 KiB libquadmath x86_64 15.2.1-1.fc44.1 fedora 317.9 KiB libraqm x86_64 0.10.1-3.fc43 fedora 28.6 KiB libtiff x86_64 4.7.0-8.fc44 fedora 619.0 KiB libtirpc x86_64 1.3.7-0.fc44 fedora 198.9 KiB libwebp x86_64 1.6.0-2.fc43 fedora 956.6 KiB libxcb x86_64 1.17.0-6.fc43 fedora 1.1 MiB libzip x86_64 1.11.4-2.fc43 fedora 135.8 KiB lzo x86_64 2.10-15.fc43 fedora 178.9 KiB mpdecimal x86_64 4.0.1-2.fc43 fedora 217.2 KiB netcdf x86_64 4.9.3-1.fc44 fedora 2.5 MiB openblas x86_64 0.3.29-2.fc43 fedora 111.7 KiB openblas-openmp x86_64 0.3.29-2.fc43 fedora 43.7 MiB openjpeg x86_64 2.5.3-8.fc43 fedora 455.7 KiB pixman x86_64 0.46.2-2.fc43 fedora 710.3 KiB pyproject-rpm-macros noarch 1.18.4-1.fc44 fedora 114.9 KiB python-pip-wheel noarch 25.2-2.fc44 fedora 1.2 MiB python-rpm-macros noarch 3.14-7.fc44 fedora 27.6 KiB python3 x86_64 3.14.0~rc2-1.fc44 fedora 28.9 KiB python3-babel noarch 2.17.0-5.fc44 fedora 30.3 MiB python3-cairo x86_64 1.28.0-3.fc44 fedora 492.9 KiB python3-certifi noarch 2025.07.09-2.fc44 fedora 7.4 KiB python3-cftime x86_64 1.6.4-9.fc44 fedora 581.6 KiB python3-charset-normalizer noarch 3.4.3-2.fc44 fedora 355.7 KiB python3-contourpy x86_64 1.3.3-2.fc44 fedora 856.7 KiB python3-cycler noarch 0.11.0-18.fc44 fedora 37.8 KiB python3-dateutil noarch 1:2.9.0.post0-5.fc44 fedora 877.5 KiB python3-docutils noarch 0.21.2-5.fc44 fedora 5.0 MiB python3-fonttools x86_64 4.59.2-1.fc44 fedora 19.0 MiB python3-idna noarch 3.10-5.fc44 fedora 730.6 KiB python3-imagesize noarch 1.4.1-13.fc44 fedora 36.0 KiB python3-iniconfig noarch 2.1.0-2.fc44 fedora 42.4 KiB python3-jinja2 noarch 3.1.6-5.fc44 fedora 3.1 MiB python3-kiwisolver x86_64 1.4.9-2.fc44 fedora 154.0 KiB python3-libs x86_64 3.14.0~rc2-1.fc44 fedora 42.9 MiB python3-markupsafe x86_64 3.0.2-5.fc44 fedora 61.5 KiB python3-matplotlib x86_64 3.10.6-1.fc44 fedora 31.6 MiB python3-matplotlib-data-fonts x86_64 3.10.6-1.fc44 fedora 7.9 MiB python3-mpmath noarch 1.3.0-15.fc44 fedora 5.3 MiB python3-natsort noarch 8.4.0-7.fc44 fedora 264.5 KiB python3-netcdf4 x86_64 1.7.2-8.fc44 fedora 2.3 MiB python3-numpy x86_64 1:2.3.3-1.fc44 fedora 41.3 MiB python3-numpy-f2py x86_64 1:2.3.3-1.fc44 fedora 2.1 MiB python3-olefile noarch 0.47-10.fc44 fedora 346.5 KiB python3-packaging noarch 25.0-5.fc44 fedora 607.4 KiB python3-pillow x86_64 11.3.0-5.fc44 fedora 4.2 MiB python3-platformdirs noarch 4.4.0-1.fc44 fedora 182.4 KiB python3-pluggy noarch 1.6.0-3.fc44 fedora 211.0 KiB python3-pooch noarch 1.8.2-8.fc44 fedora 635.3 KiB python3-pygments noarch 2.19.1-5.fc44 fedora 11.3 MiB python3-pyparsing noarch 3.1.2-13.fc44 fedora 1.0 MiB python3-requests noarch 2.32.5-1.fc44 fedora 476.9 KiB python3-roman-numerals-py noarch 3.1.0-4.fc44 fedora 40.4 KiB python3-rpm-generators noarch 14-13.fc43 fedora 81.7 KiB python3-rpm-macros noarch 3.14-7.fc44 fedora 6.5 KiB python3-scipy x86_64 1.15.3-5.fc44 fedora 68.8 MiB python3-six noarch 1.17.0-6.fc44 fedora 118.0 KiB python3-snowballstemmer noarch 3.0.1-7.fc44 fedora 1.8 MiB python3-sphinx-theme-alabaster noarch 0.7.16-10.fc44 fedora 42.0 KiB python3-sympy noarch 1.14.0-6.fc44 fedora 84.3 MiB python3-urllib3 noarch 2.5.0-2.fc44 fedora 1.1 MiB snappy x86_64 1.2.2-2.fc43 fedora 71.8 KiB tzdata noarch 2025b-3.fc43 fedora 1.6 MiB xml-common noarch 0.6.3-67.fc43 fedora 78.4 KiB Transaction Summary: Installing: 102 packages Total size of inbound packages is 114 MiB. Need to download 114 MiB. After this operation, 518 MiB extra will be used (install 518 MiB, remove 0 B). [ 1/102] python3-sphinx-autodoc-typehi 100% | 183.2 KiB/s | 53.9 KiB | 00m00s [ 2/102] python3-boutdata-0:0.3.0-5.fc 100% | 1.6 MiB/s | 335.5 KiB | 00m00s [ 3/102] python3-pytest-0:8.3.5-8.fc44 100% | 3.7 MiB/s | 2.2 MiB | 00m01s [ 4/102] python3-devel-0:3.14.0~rc2-1. 100% | 3.8 MiB/s | 434.8 KiB | 00m00s [ 5/102] python3-sphinx-1:8.2.3-10.fc4 100% | 4.6 MiB/s | 2.9 MiB | 00m01s [ 6/102] python3-iniconfig-0:2.1.0-2.f 100% | 413.1 KiB/s | 22.7 KiB | 00m00s [ 7/102] python3-pluggy-0:1.6.0-3.fc44 100% | 1.1 MiB/s | 61.5 KiB | 00m00s [ 8/102] python3-packaging-0:25.0-5.fc 100% | 2.5 MiB/s | 161.2 KiB | 00m00s [ 9/102] python3-imagesize-0:1.4.1-13. 100% | 372.9 KiB/s | 22.0 KiB | 00m00s [ 10/102] python3-jinja2-0:3.1.6-5.fc44 100% | 6.1 MiB/s | 515.7 KiB | 00m00s [ 11/102] python3-docutils-0:0.21.2-5.f 100% | 3.5 MiB/s | 1.1 MiB | 00m00s [ 12/102] python3-pygments-0:2.19.1-5.f 100% | 14.0 MiB/s | 2.7 MiB | 00m00s [ 13/102] python3-babel-0:2.17.0-5.fc44 100% | 18.8 MiB/s | 6.9 MiB | 00m00s [ 14/102] python3-requests-0:2.32.5-1.f 100% | 2.7 MiB/s | 160.3 KiB | 00m00s [ 15/102] python3-roman-numerals-py-0:3 100% | 364.3 KiB/s | 20.0 KiB | 00m00s [ 16/102] python3-snowballstemmer-0:3.0 100% | 4.5 MiB/s | 280.6 KiB | 00m00s [ 17/102] python3-sphinx-theme-alabaste 100% | 443.9 KiB/s | 24.4 KiB | 00m00s [ 18/102] python3-natsort-0:8.4.0-7.fc4 100% | 1.4 MiB/s | 83.0 KiB | 00m00s [ 19/102] python3-netcdf4-0:1.7.2-8.fc4 100% | 3.2 MiB/s | 645.9 KiB | 00m00s [ 20/102] python3-matplotlib-0:3.10.6-1 100% | 23.0 MiB/s | 7.9 MiB | 00m00s [ 21/102] python3-numpy-1:2.3.3-1.fc44. 100% | 25.5 MiB/s | 8.2 MiB | 00m00s [ 22/102] python3-libs-0:3.14.0~rc2-1.f 100% | 20.4 MiB/s | 9.8 MiB | 00m00s [ 23/102] python3-markupsafe-0:3.0.2-5. 100% | 574.1 KiB/s | 31.6 KiB | 00m00s [ 24/102] python3-sympy-0:1.14.0-6.fc44 100% | 25.0 MiB/s | 15.9 MiB | 00m01s [ 25/102] python3-scipy-0:1.15.3-5.fc44 100% | 21.4 MiB/s | 16.5 MiB | 00m01s [ 26/102] python3-charset-normalizer-0: 100% | 1.6 MiB/s | 117.2 KiB | 00m00s [ 27/102] python3-idna-0:3.10-5.fc44.no 100% | 2.1 MiB/s | 124.0 KiB | 00m00s [ 28/102] python3-urllib3-0:2.5.0-2.fc4 100% | 4.7 MiB/s | 297.5 KiB | 00m00s [ 29/102] libqhull_r-1:8.0.2-7.fc43.x86 100% | 3.3 MiB/s | 201.9 KiB | 00m00s [ 30/102] dejavu-sans-fonts-0:2.37-26.f 100% | 6.9 MiB/s | 1.3 MiB | 00m00s [ 31/102] python3-contourpy-0:1.3.3-2.f 100% | 3.9 MiB/s | 285.7 KiB | 00m00s [ 32/102] freetype-0:2.13.3-3.fc43.x86_ 100% | 2.1 MiB/s | 412.1 KiB | 00m00s [ 33/102] python3-cycler-0:0.11.0-18.fc 100% | 396.3 KiB/s | 21.8 KiB | 00m00s [ 34/102] python3-dateutil-1:2.9.0.post 100% | 5.1 MiB/s | 344.2 KiB | 00m00s [ 35/102] python3-kiwisolver-0:1.4.9-2. 100% | 1.2 MiB/s | 68.2 KiB | 00m00s [ 36/102] python3-pyparsing-0:3.1.2-13. 100% | 2.9 MiB/s | 286.8 KiB | 00m00s [ 37/102] python3-fonttools-0:4.59.2-1. 100% | 16.6 MiB/s | 3.1 MiB | 00m00s [ 38/102] python3-matplotlib-data-fonts 100% | 13.2 MiB/s | 2.3 MiB | 00m00s [ 39/102] netcdf-0:4.9.3-1.fc44.x86_64 100% | 11.5 MiB/s | 845.0 KiB | 00m00s [ 40/102] python3-certifi-0:2025.07.09- 100% | 266.3 KiB/s | 14.9 KiB | 00m00s [ 41/102] python3-cftime-0:1.6.4-9.fc44 100% | 3.4 MiB/s | 218.1 KiB | 00m00s [ 42/102] python3-numpy-f2py-1:2.3.3-1. 100% | 7.6 MiB/s | 510.6 KiB | 00m00s [ 43/102] libgfortran-0:15.2.1-1.fc44.1 100% | 9.9 MiB/s | 969.5 KiB | 00m00s [ 44/102] flexiblas-netlib-0:3.4.5-5.fc 100% | 26.4 MiB/s | 3.4 MiB | 00m00s [ 45/102] python3-pooch-0:1.8.2-8.fc44. 100% | 2.2 MiB/s | 139.2 KiB | 00m00s [ 46/102] expat-0:2.7.1-3.fc43.x86_64 100% | 2.0 MiB/s | 116.1 KiB | 00m00s [ 47/102] mpdecimal-0:4.0.1-2.fc43.x86_ 100% | 1.6 MiB/s | 97.1 KiB | 00m00s [ 48/102] python3-mpmath-0:1.3.0-15.fc4 100% | 11.8 MiB/s | 1.1 MiB | 00m00s [ 49/102] tzdata-0:2025b-3.fc43.noarch 100% | 9.8 MiB/s | 713.9 KiB | 00m00s [ 50/102] python-pip-wheel-0:25.2-2.fc4 100% | 14.7 MiB/s | 1.1 MiB | 00m00s [ 51/102] fonts-filesystem-1:2.0.5-23.f 100% | 157.8 KiB/s | 8.7 KiB | 00m00s [ 52/102] libpng-2:1.6.50-2.fc43.x86_64 100% | 2.1 MiB/s | 123.0 KiB | 00m00s [ 53/102] python3-six-0:1.17.0-6.fc44.n 100% | 759.1 KiB/s | 41.8 KiB | 00m00s [ 54/102] harfbuzz-0:11.4.5-1.fc44.x86_ 100% | 14.4 MiB/s | 1.1 MiB | 00m00s [ 55/102] blosc-0:1.21.6-7.fc43.x86_64 100% | 1.0 MiB/s | 58.1 KiB | 00m00s [ 56/102] libaec-0:1.1.4-3.fc44.x86_64 100% | 637.3 KiB/s | 37.6 KiB | 00m00s [ 57/102] libzip-0:1.11.4-2.fc43.x86_64 100% | 1.2 MiB/s | 70.0 KiB | 00m00s [ 58/102] hdf5-0:1.14.6-6.fc43.x86_64 100% | 16.5 MiB/s | 2.0 MiB | 00m00s [ 59/102] flexiblas-0:3.4.5-5.fc44.x86_ 100% | 474.1 KiB/s | 26.1 KiB | 00m00s [ 60/102] flexiblas-openblas-openmp-0:3 100% | 312.8 KiB/s | 17.2 KiB | 00m00s [ 61/102] python3-platformdirs-0:4.4.0- 100% | 898.8 KiB/s | 49.4 KiB | 00m00s [ 62/102] libquadmath-0:15.2.1-1.fc44.1 100% | 3.1 MiB/s | 202.5 KiB | 00m00s [ 63/102] snappy-0:1.2.2-2.fc43.x86_64 100% | 707.6 KiB/s | 39.6 KiB | 00m00s [ 64/102] graphite2-0:1.3.14-19.fc43.x8 100% | 1.6 MiB/s | 95.6 KiB | 00m00s [ 65/102] glib2-0:2.85.4-1.fc44.x86_64 100% | 25.6 MiB/s | 3.1 MiB | 00m00s [ 66/102] python3-0:3.14.0~rc2-1.fc44.x 100% | 499.7 KiB/s | 27.5 KiB | 00m00s [ 67/102] python3-cairo-0:1.28.0-3.fc44 100% | 2.2 MiB/s | 126.1 KiB | 00m00s [ 68/102] cairo-0:1.18.4-2.fc43.x86_64 100% | 9.0 MiB/s | 729.3 KiB | 00m00s [ 69/102] openblas-openmp-0:0.3.29-2.fc 100% | 35.7 MiB/s | 5.4 MiB | 00m00s [ 70/102] fontconfig-0:2.17.0-3.fc43.x8 100% | 4.4 MiB/s | 272.2 KiB | 00m00s [ 71/102] libXext-0:1.3.6-4.fc43.x86_64 100% | 662.0 KiB/s | 39.1 KiB | 00m00s [ 72/102] libX11-0:1.8.12-1.fc43.x86_64 100% | 8.5 MiB/s | 655.6 KiB | 00m00s [ 73/102] libXrender-0:0.9.12-3.fc43.x8 100% | 497.6 KiB/s | 26.9 KiB | 00m00s [ 74/102] libxcb-0:1.17.0-6.fc43.x86_64 100% | 4.0 MiB/s | 237.7 KiB | 00m00s [ 75/102] lzo-0:2.10-15.fc43.x86_64 100% | 1.2 MiB/s | 69.4 KiB | 00m00s [ 76/102] pixman-0:0.46.2-2.fc43.x86_64 100% | 4.8 MiB/s | 292.5 KiB | 00m00s [ 77/102] default-fonts-core-sans-0:4.2 100% | 543.6 KiB/s | 29.9 KiB | 00m00s [ 78/102] xml-common-0:0.6.3-67.fc43.no 100% | 564.5 KiB/s | 31.0 KiB | 00m00s [ 79/102] libX11-common-0:1.8.12-1.fc43 100% | 3.0 MiB/s | 175.9 KiB | 00m00s [ 80/102] libXau-0:1.0.12-3.fc43.x86_64 100% | 608.1 KiB/s | 33.4 KiB | 00m00s [ 81/102] abattis-cantarell-vf-fonts-0: 100% | 2.0 MiB/s | 120.1 KiB | 00m00s [ 82/102] google-noto-sans-vf-fonts-0:2 100% | 9.0 MiB/s | 614.2 KiB | 00m00s [ 83/102] google-noto-fonts-common-0:20 100% | 310.1 KiB/s | 17.1 KiB | 00m00s [ 84/102] lcms2-0:2.16-6.fc43.x86_64 100% | 3.1 MiB/s | 182.8 KiB | 00m00s [ 85/102] python3-pillow-0:11.3.0-5.fc4 100% | 11.6 MiB/s | 1.0 MiB | 00m00s [ 86/102] libimagequant-0:4.1.0-1.fc44. 100% | 5.2 MiB/s | 320.9 KiB | 00m00s [ 87/102] libjpeg-turbo-0:3.1.2-1.fc44. 100% | 3.9 MiB/s | 236.7 KiB | 00m00s [ 88/102] libraqm-0:0.10.1-3.fc43.x86_6 100% | 407.5 KiB/s | 22.4 KiB | 00m00s [ 89/102] libtiff-0:4.7.0-8.fc44.x86_64 100% | 3.7 MiB/s | 221.1 KiB | 00m00s [ 90/102] libwebp-0:1.6.0-2.fc43.x86_64 100% | 5.2 MiB/s | 324.2 KiB | 00m00s [ 91/102] openjpeg-0:2.5.3-8.fc43.x86_6 100% | 3.1 MiB/s | 192.1 KiB | 00m00s [ 92/102] python3-olefile-0:0.47-10.fc4 100% | 1.3 MiB/s | 74.8 KiB | 00m00s [ 93/102] fribidi-0:1.0.16-3.fc43.x86_6 100% | 969.5 KiB/s | 53.3 KiB | 00m00s [ 94/102] jbigkit-libs-0:2.1-32.fc43.x8 100% | 949.8 KiB/s | 53.2 KiB | 00m00s [ 95/102] liblerc-0:4.0.0-9.fc43.x86_64 100% | 3.6 MiB/s | 215.1 KiB | 00m00s [ 96/102] openblas-0:0.3.29-2.fc43.x86_ 100% | 768.5 KiB/s | 42.3 KiB | 00m00s [ 97/102] hdf-libs-0:4.3.0-4.fc43.x86_6 100% | 4.5 MiB/s | 291.3 KiB | 00m00s [ 98/102] libtirpc-0:1.3.7-0.fc44.x86_6 100% | 1.6 MiB/s | 94.1 KiB | 00m00s [ 99/102] pyproject-rpm-macros-0:1.18.4 100% | 816.2 KiB/s | 44.9 KiB | 00m00s [100/102] python-rpm-macros-0:3.14-7.fc 100% | 353.0 KiB/s | 19.4 KiB | 00m00s [101/102] python3-rpm-generators-0:14-1 100% | 518.8 KiB/s | 28.5 KiB | 00m00s [102/102] python3-rpm-macros-0:3.14-7.f 100% | 217.6 KiB/s | 12.0 KiB | 00m00s -------------------------------------------------------------------------------- [102/102] Total 100% | 29.0 MiB/s | 114.1 MiB | 00m04s Running transaction [ 1/104] Verify package files 100% | 193.0 B/s | 102.0 B | 00m01s [ 2/104] Prepare transaction 100% | 459.0 B/s | 102.0 B | 00m00s [ 3/104] Installing fonts-filesystem-1 100% | 769.5 KiB/s | 788.0 B | 00m00s [ 4/104] Installing libgfortran-0:15.2 100% | 223.7 MiB/s | 3.4 MiB | 00m00s [ 5/104] Installing python-rpm-macros- 100% | 27.8 MiB/s | 28.5 KiB | 00m00s [ 6/104] Installing libjpeg-turbo-0:3. 100% | 196.9 MiB/s | 806.6 KiB | 00m00s [ 7/104] Installing libaec-0:1.1.4-3.f 100% | 45.3 MiB/s | 92.8 KiB | 00m00s [ 8/104] Installing python3-rpm-macros 100% | 6.6 MiB/s | 6.8 KiB | 00m00s [ 9/104] Installing libwebp-0:1.6.0-2. 100% | 117.3 MiB/s | 960.7 KiB | 00m00s [ 10/104] Installing libpng-2:1.6.50-2. 100% | 38.9 MiB/s | 239.0 KiB | 00m00s [ 11/104] Installing tzdata-0:2025b-3.f 100% | 22.8 MiB/s | 1.9 MiB | 00m00s [ 12/104] Installing pyproject-rpm-macr 100% | 28.5 MiB/s | 116.8 KiB | 00m00s [ 13/104] Installing hdf5-0:1.14.6-6.fc 100% | 130.3 MiB/s | 6.4 MiB | 00m00s [ 14/104] Installing dejavu-sans-fonts- 100% | 177.7 MiB/s | 5.5 MiB | 00m00s [ 15/104] Installing abattis-cantarell- 100% | 94.9 MiB/s | 194.4 KiB | 00m00s [ 16/104] Installing libtirpc-0:1.3.7-0 100% | 65.3 MiB/s | 200.7 KiB | 00m00s [ 17/104] Installing hdf-libs-0:4.3.0-4 100% | 224.1 MiB/s | 688.3 KiB | 00m00s [ 18/104] Installing openblas-0:0.3.29- 100% | 110.8 MiB/s | 113.5 KiB | 00m00s [ 19/104] Installing openblas-openmp-0: 100% | 114.1 MiB/s | 43.7 MiB | 00m00s [ 20/104] Installing liblerc-0:4.0.0-9. 100% | 101.8 MiB/s | 625.6 KiB | 00m00s [ 21/104] Installing jbigkit-libs-0:2.1 100% | 37.6 MiB/s | 115.4 KiB | 00m00s [ 22/104] Installing libtiff-0:4.7.0-8. 100% | 55.2 MiB/s | 621.3 KiB | 00m00s [ 23/104] Installing fribidi-0:1.0.16-3 100% | 9.0 MiB/s | 192.8 KiB | 00m00s [ 24/104] Installing openjpeg-0:2.5.3-8 100% | 89.4 MiB/s | 457.7 KiB | 00m00s [ 25/104] Installing libimagequant-0:4. 100% | 62.9 MiB/s | 709.0 KiB | 00m00s [ 26/104] Installing lcms2-0:2.16-6.fc4 100% | 85.0 MiB/s | 435.3 KiB | 00m00s [ 27/104] Installing google-noto-fonts- 100% | 18.1 MiB/s | 18.5 KiB | 00m00s [ 28/104] Installing google-noto-sans-v 100% | 92.8 MiB/s | 1.4 MiB | 00m00s [ 29/104] Installing default-fonts-core 100% | 4.4 MiB/s | 18.2 KiB | 00m00s [ 30/104] Installing libXau-0:1.0.12-3. 100% | 36.4 MiB/s | 74.5 KiB | 00m00s [ 31/104] Installing libxcb-0:1.17.0-6. 100% | 67.5 MiB/s | 1.1 MiB | 00m00s [ 32/104] Installing libX11-common-0:1. 100% | 33.9 MiB/s | 1.2 MiB | 00m00s [ 33/104] Installing libX11-0:1.8.12-1. 100% | 116.5 MiB/s | 1.3 MiB | 00m00s [ 34/104] Installing libXext-0:1.3.6-4. 100% | 44.5 MiB/s | 91.2 KiB | 00m00s [ 35/104] Installing libXrender-0:0.9.1 100% | 3.3 MiB/s | 47.3 KiB | 00m00s [ 36/104] Installing xml-common-0:0.6.3 100% | 19.8 MiB/s | 81.1 KiB | 00m00s [ 37/104] Installing pixman-0:0.46.2-2. 100% | 139.0 MiB/s | 711.4 KiB | 00m00s [ 38/104] Installing lzo-0:2.10-15.fc43 100% | 88.1 MiB/s | 180.5 KiB | 00m00s [ 39/104] Installing snappy-0:1.2.2-2.f 100% | 35.9 MiB/s | 73.5 KiB | 00m00s [ 40/104] Installing blosc-0:1.21.6-7.f 100% | 42.0 MiB/s | 129.0 KiB | 00m00s [ 41/104] Installing graphite2-0:1.3.14 100% | 9.0 MiB/s | 193.9 KiB | 00m00s [ 42/104] Installing glib2-0:2.85.4-1.f 100% | 91.0 MiB/s | 14.7 MiB | 00m00s [ 43/104] Installing freetype-0:2.13.3- 100% | 10.7 MiB/s | 851.9 KiB | 00m00s [ 44/104] Installing harfbuzz-0:11.4.5- 100% | 118.4 MiB/s | 2.8 MiB | 00m00s [ 45/104] Installing libraqm-0:0.10.1-3 100% | 4.8 MiB/s | 29.7 KiB | 00m00s [ 46/104] Installing fontconfig-0:2.17. 100% | 736.0 KiB/s | 785.3 KiB | 00m01s [ 47/104] Installing cairo-0:1.18.4-2.f 100% | 196.9 MiB/s | 1.8 MiB | 00m00s [ 48/104] Installing libquadmath-0:15.2 100% | 155.8 MiB/s | 319.2 KiB | 00m00s [ 49/104] Installing flexiblas-netlib-0 100% | 147.6 MiB/s | 10.9 MiB | 00m00s [ 50/104] Installing flexiblas-0:3.4.5- 100% | 50.4 MiB/s | 51.6 KiB | 00m00s [ 51/104] Installing flexiblas-openblas 100% | 39.1 MiB/s | 40.1 KiB | 00m00s [ 52/104] Installing libzip-0:1.11.4-2. 100% | 66.9 MiB/s | 137.0 KiB | 00m00s [ 53/104] Installing netcdf-0:4.9.3-1.f 100% | 66.6 MiB/s | 2.5 MiB | 00m00s [ 54/104] Installing python-pip-wheel-0 100% | 294.9 MiB/s | 1.2 MiB | 00m00s [ 55/104] Installing mpdecimal-0:4.0.1- 100% | 71.2 MiB/s | 218.8 KiB | 00m00s [ 56/104] Installing expat-0:2.7.1-3.fc 100% | 11.6 MiB/s | 296.3 KiB | 00m00s [ 57/104] Installing python3-libs-0:3.1 100% | 109.4 MiB/s | 43.3 MiB | 00m00s [ 58/104] Installing python3-0:3.14.0~r 100% | 1.6 MiB/s | 30.7 KiB | 00m00s [ 59/104] Installing python3-numpy-1:2. 100% | 145.1 MiB/s | 41.6 MiB | 00m00s [ 60/104] Installing python3-numpy-f2py 100% | 50.5 MiB/s | 2.2 MiB | 00m00s [ 61/104] Installing python3-packaging- 100% | 100.9 MiB/s | 619.9 KiB | 00m00s [ 62/104] Installing python3-idna-0:3.1 100% | 55.4 MiB/s | 737.1 KiB | 00m00s [ 63/104] Installing python3-urllib3-0: 100% | 79.4 MiB/s | 1.1 MiB | 00m00s [ 64/104] Installing python3-rpm-genera 100% | 40.5 MiB/s | 82.9 KiB | 00m00s [ 65/104] Installing python3-contourpy- 100% | 94.4 MiB/s | 869.5 KiB | 00m00s [ 66/104] Installing python3-cftime-0:1 100% | 142.9 MiB/s | 585.3 KiB | 00m00s [ 67/104] Installing python3-iniconfig- 100% | 22.7 MiB/s | 46.5 KiB | 00m00s [ 68/104] Installing python3-pluggy-0:1 100% | 42.5 MiB/s | 217.5 KiB | 00m00s [ 69/104] Installing python3-babel-0:2. 100% | 151.8 MiB/s | 30.5 MiB | 00m00s [ 70/104] Installing python3-docutils-0 100% | 73.4 MiB/s | 5.1 MiB | 00m00s [ 71/104] Installing python3-imagesize- 100% | 9.6 MiB/s | 39.1 KiB | 00m00s [ 72/104] Installing python3-pygments-0 100% | 110.5 MiB/s | 11.5 MiB | 00m00s [ 73/104] Installing python3-roman-nume 100% | 21.2 MiB/s | 43.4 KiB | 00m00s [ 74/104] Installing python3-snowballst 100% | 143.0 MiB/s | 1.9 MiB | 00m00s [ 75/104] Installing python3-sphinx-the 100% | 22.8 MiB/s | 46.6 KiB | 00m00s [ 76/104] Installing python3-natsort-0: 100% | 15.7 MiB/s | 273.4 KiB | 00m00s [ 77/104] Installing python3-markupsafe 100% | 12.8 MiB/s | 65.8 KiB | 00m00s [ 78/104] Installing python3-jinja2-0:3 100% | 75.4 MiB/s | 3.1 MiB | 00m00s [ 79/104] Installing python3-charset-no 100% | 17.9 MiB/s | 365.8 KiB | 00m00s [ 80/104] Installing python3-requests-0 100% | 59.7 MiB/s | 488.9 KiB | 00m00s [ 81/104] Installing python3-sphinx-1:8 100% | 83.6 MiB/s | 12.5 MiB | 00m00s [ 82/104] Installing python3-cycler-0:0 100% | 9.8 MiB/s | 40.3 KiB | 00m00s [ 83/104] Installing python3-fonttools- 100% | 146.4 MiB/s | 19.2 MiB | 00m00s [ 84/104] Installing python3-kiwisolver 100% | 51.5 MiB/s | 158.1 KiB | 00m00s [ 85/104] Installing python3-pyparsing- 100% | 114.4 MiB/s | 1.0 MiB | 00m00s [ 86/104] Installing python3-certifi-0: 100% | 5.4 MiB/s | 11.2 KiB | 00m00s [ 87/104] Installing python3-netcdf4-0: 100% | 177.9 MiB/s | 2.3 MiB | 00m00s [ 88/104] Installing python3-mpmath-0:1 100% | 97.8 MiB/s | 5.4 MiB | 00m00s [ 89/104] Installing python3-sympy-0:1. 100% | 101.9 MiB/s | 85.2 MiB | 00m01s [ 90/104] Installing python3-six-0:1.17 100% | 58.7 MiB/s | 120.3 KiB | 00m00s [ 91/104] Installing python3-dateutil-1 100% | 124.3 MiB/s | 891.1 KiB | 00m00s [ 92/104] Installing python3-platformdi 100% | 30.7 MiB/s | 188.8 KiB | 00m00s [ 93/104] Installing python3-pooch-0:1. 100% | 52.9 MiB/s | 650.4 KiB | 00m00s [ 94/104] Installing python3-scipy-0:1. 100% | 164.3 MiB/s | 69.2 MiB | 00m00s [ 95/104] Installing python3-cairo-0:1. 100% | 80.8 MiB/s | 496.4 KiB | 00m00s [ 96/104] Installing python3-olefile-0: 100% | 85.4 MiB/s | 349.8 KiB | 00m00s [ 97/104] Installing python3-pillow-0:1 100% | 130.4 MiB/s | 4.3 MiB | 00m00s [ 98/104] Installing python3-matplotlib 100% | 208.3 MiB/s | 7.9 MiB | 00m00s [ 99/104] Installing libqhull_r-1:8.0.2 100% | 94.6 MiB/s | 484.1 KiB | 00m00s [100/104] Installing python3-matplotlib 100% | 130.1 MiB/s | 31.9 MiB | 00m00s [101/104] Installing python3-boutdata-0 100% | 36.6 MiB/s | 1.2 MiB | 00m00s [102/104] Installing python3-sphinx-aut 100% | 32.7 MiB/s | 133.9 KiB | 00m00s [103/104] Installing python3-pytest-0:8 100% | 144.3 MiB/s | 21.8 MiB | 00m00s [104/104] Installing python3-devel-0:3. 100% | 6.2 MiB/s | 2.0 MiB | 00m00s Complete! Finish: build setup for python-xbout-0.3.8-1.fc44.src.rpm Start: rpmbuild python-xbout-0.3.8-1.fc44.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.GkwCgZ Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.zHtrq0 + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + cd /builddir/build/BUILD/python-xbout-0.3.8-build + rm -rf xbout-0.3.8 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/xbout-0.3.8.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd xbout-0.3.8 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/sphinx-theme.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/316.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/fix-dirs.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/no-dask.patch + /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f + rm -rf xbout.egg-info + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.eh6CDx + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + cd xbout-0.3.8 + 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-xbout-0.3.8-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-xbout-0.3.8-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir --output /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires -r Handling setuptools >= 65 from build-system.requires Requirement not satisfied: setuptools >= 65 Handling setuptools_scm[toml] >= 7 from build-system.requires Requirement not satisfied: setuptools_scm[toml] >= 7 Handling wheel >= 0.29.0 from build-system.requires Requirement not satisfied: wheel >= 0.29.0 Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-xbout-0.3.8-1.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Copr repository 100% | 61.2 KiB/s | 2.1 KiB | 00m00s fedora 100% | 385.9 KiB/s | 25.9 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.4-1.fc44.noarch" is already installed. Package "python3-boutdata-0.3.0-5.fc44.noarch" is already installed. Package "python3-devel-3.14.0~rc2-1.fc44.x86_64" is already installed. Package Arch Version Repository Size Installing: python3-pip noarch 25.2-2.fc44 fedora 11.3 MiB python3-setuptools noarch 78.1.1-13.fc44 fedora 9.0 MiB python3-setuptools_scm noarch 8.3.1-7.fc44 fedora 354.5 KiB python3-setuptools_scm+toml noarch 8.3.1-7.fc44 fedora 9.8 KiB python3-wheel noarch 1:0.45.1-17.fc44 fedora 593.1 KiB Transaction Summary: Installing: 5 packages Package "python3-sphinx-autodoc-typehints-3.1.0-4.fc44.noarch" is already installed. Package "python3-packaging-25.0-5.fc44.noarch" is already installed. Package "python3-pytest-8.3.5-8.fc44.noarch" is already installed. Package "python3-sphinx-1:8.2.3-10.fc44.noarch" is already installed. Total size of inbound packages is 5 MiB. Need to download 5 MiB. After this operation, 21 MiB extra will be used (install 21 MiB, remove 0 B). [1/5] python3-setuptools_scm-0:8.3.1-7. 100% | 727.8 KiB/s | 121.5 KiB | 00m00s [2/5] python3-setuptools_scm+toml-0:8.3 100% | 422.8 KiB/s | 9.7 KiB | 00m00s [3/5] python3-pip-0:25.2-2.fc44.noarch 100% | 8.6 MiB/s | 2.6 MiB | 00m00s [4/5] python3-setuptools-0:78.1.1-13.fc 100% | 6.4 MiB/s | 2.1 MiB | 00m00s [5/5] python3-wheel-1:0.45.1-17.fc44.no 100% | 512.9 KiB/s | 182.1 KiB | 00m00s -------------------------------------------------------------------------------- [5/5] Total 100% | 9.1 MiB/s | 5.0 MiB | 00m01s Running transaction [1/7] Verify package files 100% | 263.0 B/s | 5.0 B | 00m00s [2/7] Prepare transaction 100% | 94.0 B/s | 5.0 B | 00m00s [3/7] Installing python3-setuptools-0:7 100% | 106.0 MiB/s | 9.2 MiB | 00m00s [4/7] Installing python3-setuptools_scm 100% | 52.2 MiB/s | 374.4 KiB | 00m00s [5/7] Installing python3-setuptools_scm 100% | 121.1 KiB/s | 124.0 B | 00m00s [6/7] Installing python3-wheel-1:0.45.1 100% | 23.9 MiB/s | 613.1 KiB | 00m00s [7/7] Installing python3-pip-0:25.2-2.f 100% | 71.2 MiB/s | 11.5 MiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.qH1Qe8 + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + cd xbout-0.3.8 + 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-xbout-0.3.8-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-xbout-0.3.8-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir --output /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires -r Handling setuptools >= 65 from build-system.requires Requirement satisfied: setuptools >= 65 (installed: setuptools 78.1.1) Handling setuptools_scm[toml] >= 7 from build-system.requires Requirement satisfied: setuptools_scm[toml] >= 7 (installed: setuptools_scm 8.3.1) (extras are currently not checked) Handling wheel >= 0.29.0 from build-system.requires Requirement satisfied: wheel >= 0.29.0 (installed: wheel 0.45.1) /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running egg_info creating xbout.egg-info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt writing manifest file 'xbout.egg-info/SOURCES.txt' WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running dist_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout-0.3.8.dist-info' Handling xarray>=2023.01.0 from hook generated metadata: Requires-Dist (xbout) Requirement not satisfied: xarray>=2023.01.0 Handling boutdata>=0.1.4 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: boutdata>=0.1.4 (installed: boutdata 0.3.0) Handling gelidum>=0.5.3 from hook generated metadata: Requires-Dist (xbout) Requirement not satisfied: gelidum>=0.5.3 Handling natsort>=5.5.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: natsort>=5.5.0 (installed: natsort 8.4.0) Handling matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 (installed: matplotlib 3.10.6) Handling animatplot-ng>=0.4.2 from hook generated metadata: Requires-Dist (xbout) Requirement not satisfied: animatplot-ng>=0.4.2 Handling netcdf4>=1.4.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: netcdf4>=1.4.0 (installed: netcdf4 1.7.2) Handling Pillow>=6.1.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: Pillow>=6.1.0 (installed: Pillow 11.3.0) Handling numpy>=1.18.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: numpy>=1.18.0; extra == "calc" Handling scipy>=1.3.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: scipy>=1.3.0; extra == "calc" Handling statsmodels>=0.10.1; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: statsmodels>=0.10.1; extra == "calc" Handling xrft; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xrft; extra == "calc" Handling xhistogram; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xhistogram; extra == "calc" Handling cherab; extra == "cherab" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: cherab; extra == "cherab" Handling sphinx>=5.3; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx>=5.3; extra == "docs" Handling sphinx-book-theme>=0.4.0rc1; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx-book-theme>=0.4.0rc1; extra == "docs" Handling sphinx_autodoc_typehints>=1.19; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx_autodoc_typehints>=1.19; extra == "docs" Handling k3d>=2.8.0; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: k3d>=2.8.0; extra == "3d-plot" Handling mayavi>=4.7.2; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: mayavi>=4.7.2; extra == "3d-plot" Handling wand; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: wand; extra == "3d-plot" Handling pytest>=3.3.0; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest>=3.3.0; extra == "tests" Handling pytest-cov; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest-cov; extra == "tests" + cat /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires + rm -rfv xbout-0.3.8.dist-info/ removed 'xbout-0.3.8.dist-info/licenses/LICENSE' removed directory 'xbout-0.3.8.dist-info/licenses' removed 'xbout-0.3.8.dist-info/METADATA' removed 'xbout-0.3.8.dist-info/entry_points.txt' removed 'xbout-0.3.8.dist-info/top_level.txt' removed directory 'xbout-0.3.8.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-xbout-0.3.8-1.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Copr repository 100% | 61.2 KiB/s | 2.1 KiB | 00m00s fedora 100% | 340.2 KiB/s | 25.9 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.4-1.fc44.noarch" is already installed.Package Arch Version Repository Size Installing: python3-animatplot noarch 0.4.5-3.fc44 fedora 113.0 KiB python3-gelidum noarch 0.7.0-9.fc44 fedora 123.7 KiB python3-xarray noarch 2025.4.0-2.fc44 fedora 20.0 MiB Installing dependencies: python3-pandas x86_64 2.2.3-5.fc43~bootstrap fedora 43.5 MiB python3-pytz noarch 2025.2-4.fc44 fedora 224.0 KiB Transaction Summary: Installing: 5 packages Package "python3-boutdata-0.3.0-5.fc44.noarch" is already installed. Package "python3-devel-3.14.0~rc2-1.fc44.x86_64" is already installed. Package "python3-sphinx-autodoc-typehints-3.1.0-4.fc44.noarch" is already installed. Package "python3-boutdata-0.3.0-5.fc44.noarch" is already installed. Package "python3-natsort-8.4.0-7.fc44.noarch" is already installed. Package "python3-netcdf4-1.7.2-8.fc44.x86_64" is already installed. Package "python3-packaging-25.0-5.fc44.noarch" is already installed. Package "python3-pillow-11.3.0-5.fc44.x86_64" is already installed. Package "python3-pip-25.2-2.fc44.noarch" is already installed. Package "python3-pytest-8.3.5-8.fc44.noarch" is already installed. Package "python3-setuptools-78.1.1-13.fc44.noarch" is already installed. Package "python3-setuptools_scm-8.3.1-7.fc44.noarch" is already installed. Package "python3-setuptools_scm+toml-8.3.1-7.fc44.noarch" is already installed. Package "python3-sphinx-1:8.2.3-10.fc44.noarch" is already installed. Package "python3-wheel-1:0.45.1-17.fc44.noarch" is already installed. Total size of inbound packages is 12 MiB. Need to download 12 MiB. After this operation, 64 MiB extra will be used (install 64 MiB, remove 0 B). [1/5] python3-gelidum-0:0.7.0-9.fc44.no 100% | 142.2 KiB/s | 57.1 KiB | 00m00s [2/5] python3-animatplot-0:0.4.5-3.fc44 100% | 98.7 KiB/s | 56.2 KiB | 00m01s [3/5] python3-pytz-0:2025.2-4.fc44.noar 100% | 432.3 KiB/s | 66.1 KiB | 00m00s [4/5] python3-xarray-0:2025.4.0-2.fc44. 100% | 2.3 MiB/s | 3.1 MiB | 00m01s [5/5] python3-pandas-0:2.2.3-5.fc43~boo 100% | 6.9 MiB/s | 8.3 MiB | 00m01s -------------------------------------------------------------------------------- [5/5] Total 100% | 7.2 MiB/s | 11.5 MiB | 00m02s Running transaction [1/7] Verify package files 100% | 87.0 B/s | 5.0 B | 00m00s [2/7] Prepare transaction 100% | 55.0 B/s | 5.0 B | 00m00s [3/7] Installing python3-pytz-0:2025.2- 100% | 28.0 MiB/s | 229.4 KiB | 00m00s [4/7] Installing python3-pandas-0:2.2.3 100% | 173.7 MiB/s | 43.8 MiB | 00m00s [5/7] Installing python3-xarray-0:2025. 100% | 177.7 MiB/s | 20.1 MiB | 00m00s [6/7] Installing python3-animatplot-0:0 100% | 17.4 MiB/s | 124.5 KiB | 00m00s [7/7] Installing python3-gelidum-0:0.7. 100% | 2.9 MiB/s | 135.6 KiB | 00m00s Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.NuhBCT + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + cd xbout-0.3.8 + 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-xbout-0.3.8-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-xbout-0.3.8-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir --output /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires -r Handling setuptools >= 65 from build-system.requires Requirement satisfied: setuptools >= 65 (installed: setuptools 78.1.1) Handling setuptools_scm[toml] >= 7 from build-system.requires Requirement satisfied: setuptools_scm[toml] >= 7 (installed: setuptools_scm 8.3.1) (extras are currently not checked) Handling wheel >= 0.29.0 from build-system.requires Requirement satisfied: wheel >= 0.29.0 (installed: wheel 0.45.1) /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running egg_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running dist_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout-0.3.8.dist-info' Handling xarray>=2023.01.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: xarray>=2023.01.0 (installed: xarray 2025.4.0) Handling boutdata>=0.1.4 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: boutdata>=0.1.4 (installed: boutdata 0.3.0) Handling gelidum>=0.5.3 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: gelidum>=0.5.3 (installed: gelidum 0.7.0) Handling natsort>=5.5.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: natsort>=5.5.0 (installed: natsort 8.4.0) Handling matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 (installed: matplotlib 3.10.6) Handling animatplot-ng>=0.4.2 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: animatplot-ng>=0.4.2 (installed: animatplot-ng 0.4.5) Handling netcdf4>=1.4.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: netcdf4>=1.4.0 (installed: netcdf4 1.7.2) Handling Pillow>=6.1.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: Pillow>=6.1.0 (installed: Pillow 11.3.0) Handling numpy>=1.18.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: numpy>=1.18.0; extra == "calc" Handling scipy>=1.3.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: scipy>=1.3.0; extra == "calc" Handling statsmodels>=0.10.1; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: statsmodels>=0.10.1; extra == "calc" Handling xrft; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xrft; extra == "calc" Handling xhistogram; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xhistogram; extra == "calc" Handling cherab; extra == "cherab" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: cherab; extra == "cherab" Handling sphinx>=5.3; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx>=5.3; extra == "docs" Handling sphinx-book-theme>=0.4.0rc1; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx-book-theme>=0.4.0rc1; extra == "docs" Handling sphinx_autodoc_typehints>=1.19; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx_autodoc_typehints>=1.19; extra == "docs" Handling k3d>=2.8.0; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: k3d>=2.8.0; extra == "3d-plot" Handling mayavi>=4.7.2; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: mayavi>=4.7.2; extra == "3d-plot" Handling wand; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: wand; extra == "3d-plot" Handling pytest>=3.3.0; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest>=3.3.0; extra == "tests" Handling pytest-cov; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest-cov; extra == "tests" + cat /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires + rm -rfv xbout-0.3.8.dist-info/ removed 'xbout-0.3.8.dist-info/licenses/LICENSE' removed directory 'xbout-0.3.8.dist-info/licenses' removed 'xbout-0.3.8.dist-info/METADATA' removed 'xbout-0.3.8.dist-info/top_level.txt' removed 'xbout-0.3.8.dist-info/entry_points.txt' removed directory 'xbout-0.3.8.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-xbout-0.3.8-1.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Copr repository 100% | 66.9 KiB/s | 2.1 KiB | 00m00s fedora 100% | 423.8 KiB/s | 25.9 KiB | 00m00s Repositories loaded. Package "pyproject-rpm-macros-1.18.4-1.fc44.noarch" is already installed. Package "python3-boutdata-0.3.0-5.fc44.noarch" is already installed. Package "python3-devel-3.14.0~rc2-1.fc44.x86_64" is already installed. Package "python3-sphinx-autodoc-typehints-3.1.0-4.fc44.noarch" is already installed. Package "python3-animatplot-0.4.5-3.fc44.noarch" is already installed. Package "python3-boutdata-0.3.0-5.fc44.noarch" is already installed. Package "python3-gelidum-0.7.0-9.fc44.noarch" is already installed. Package "python3-natsort-8.4.0-7.fc44.noarch" is already installed. Package "python3-netcdf4-1.7.2-8.fc44.x86_64" is already installed. Package "python3-packaging-25.0-5.fc44.noarch" is already installed. Package "python3-pillow-11.3.0-5.fc44.x86_64" is already installed. Package "python3-pip-25.2-2.fc44.noarch" is already installed. Package "python3-pytest-8.3.5-8.fc44.noarch" is already installed. Package "python3-setuptools-78.1.1-13.fc44.noarch" is already installed. Package "python3-setuptools_scm-8.3.1-7.fc44.noarch" is already installed. Package "python3-setuptools_scm+toml-8.3.1-7.fc44.noarch" is already installed. Package "python3-sphinx-1:8.2.3-10.fc44.noarch" is already installed. Package "python3-wheel-1:0.45.1-17.fc44.noarch" is already installed. Package "python3-xarray-2025.4.0-2.fc44.noarch" is already installed. Nothing to do. Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1757548800 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.QUFqCR + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + cd xbout-0.3.8 + 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-xbout-0.3.8-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-xbout-0.3.8-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir --output /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires -r Handling setuptools >= 65 from build-system.requires Requirement satisfied: setuptools >= 65 (installed: setuptools 78.1.1) Handling setuptools_scm[toml] >= 7 from build-system.requires Requirement satisfied: setuptools_scm[toml] >= 7 (installed: setuptools_scm 8.3.1) (extras are currently not checked) Handling wheel >= 0.29.0 from build-system.requires Requirement satisfied: wheel >= 0.29.0 (installed: wheel 0.45.1) /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running egg_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running dist_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout-0.3.8.dist-info' Handling xarray>=2023.01.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: xarray>=2023.01.0 (installed: xarray 2025.4.0) Handling boutdata>=0.1.4 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: boutdata>=0.1.4 (installed: boutdata 0.3.0) Handling gelidum>=0.5.3 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: gelidum>=0.5.3 (installed: gelidum 0.7.0) Handling natsort>=5.5.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: natsort>=5.5.0 (installed: natsort 8.4.0) Handling matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: matplotlib!=3.3.0,!=3.3.1,!=3.3.2,>=3.1.1 (installed: matplotlib 3.10.6) Handling animatplot-ng>=0.4.2 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: animatplot-ng>=0.4.2 (installed: animatplot-ng 0.4.5) Handling netcdf4>=1.4.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: netcdf4>=1.4.0 (installed: netcdf4 1.7.2) Handling Pillow>=6.1.0 from hook generated metadata: Requires-Dist (xbout) Requirement satisfied: Pillow>=6.1.0 (installed: Pillow 11.3.0) Handling numpy>=1.18.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: numpy>=1.18.0; extra == "calc" Handling scipy>=1.3.0; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: scipy>=1.3.0; extra == "calc" Handling statsmodels>=0.10.1; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: statsmodels>=0.10.1; extra == "calc" Handling xrft; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xrft; extra == "calc" Handling xhistogram; extra == "calc" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: xhistogram; extra == "calc" Handling cherab; extra == "cherab" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: cherab; extra == "cherab" Handling sphinx>=5.3; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx>=5.3; extra == "docs" Handling sphinx-book-theme>=0.4.0rc1; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx-book-theme>=0.4.0rc1; extra == "docs" Handling sphinx_autodoc_typehints>=1.19; extra == "docs" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: sphinx_autodoc_typehints>=1.19; extra == "docs" Handling k3d>=2.8.0; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: k3d>=2.8.0; extra == "3d-plot" Handling mayavi>=4.7.2; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: mayavi>=4.7.2; extra == "3d-plot" Handling wand; extra == "3d-plot" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: wand; extra == "3d-plot" Handling pytest>=3.3.0; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest>=3.3.0; extra == "tests" Handling pytest-cov; extra == "tests" from hook generated metadata: Requires-Dist (xbout) Ignoring alien requirement: pytest-cov; extra == "tests" + cat /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-buildrequires + rm -rfv xbout-0.3.8.dist-info/ removed 'xbout-0.3.8.dist-info/licenses/LICENSE' removed directory 'xbout-0.3.8.dist-info/licenses' removed 'xbout-0.3.8.dist-info/METADATA' removed 'xbout-0.3.8.dist-info/entry_points.txt' removed 'xbout-0.3.8.dist-info/top_level.txt' removed directory 'xbout-0.3.8.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.bPAMvF + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-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 xbout-0.3.8 + mkdir -p /builddir/build/BUILD/python-xbout-0.3.8-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-xbout-0.3.8-build/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir Processing /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running dist_info creating /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info writing /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/dependency_links.txt writing entry points to /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/entry_points.txt writing requirements to /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/top_level.txt writing manifest file '/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/SOURCES.txt' WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file '/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-modern-metadata-tt27fevv/xbout-0.3.8.dist-info' Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: xbout Building wheel for xbout (pyproject.toml): started Running command Building wheel for xbout (pyproject.toml) /usr/lib/python3.14/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") running bdist_wheel running build running build_py creating build/lib/xbout copying xbout/boutdataset.py -> build/lib/xbout copying xbout/boutdataarray.py -> build/lib/xbout copying xbout/xarraybackend.py -> build/lib/xbout copying xbout/utils.py -> build/lib/xbout copying xbout/region.py -> build/lib/xbout copying xbout/load.py -> build/lib/xbout copying xbout/geometries.py -> build/lib/xbout copying xbout/fastoutput.py -> build/lib/xbout copying xbout/conftest.py -> build/lib/xbout copying xbout/_version.py -> build/lib/xbout copying xbout/__init__.py -> build/lib/xbout creating build/lib/xbout/calc copying xbout/calc/turbulence.py -> build/lib/xbout/calc copying xbout/calc/__init__.py -> build/lib/xbout/calc creating build/lib/xbout/plotting copying xbout/plotting/utils.py -> build/lib/xbout/plotting copying xbout/plotting/plotfuncs.py -> build/lib/xbout/plotting copying xbout/plotting/animate.py -> build/lib/xbout/plotting copying xbout/plotting/__init__.py -> build/lib/xbout/plotting running egg_info writing xbout.egg-info/PKG-INFO writing dependency_links to xbout.egg-info/dependency_links.txt writing entry points to xbout.egg-info/entry_points.txt writing requirements to xbout.egg-info/requires.txt writing top-level names to xbout.egg-info/top_level.txt WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files adding license file 'LICENSE' writing manifest file 'xbout.egg-info/SOURCES.txt' /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.calc.tests' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.calc.tests' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.calc.tests' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.calc.tests' to be distributed and are already explicitly excluding 'xbout.calc.tests' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.cherab' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.cherab' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.cherab' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.cherab' to be distributed and are already explicitly excluding 'xbout.cherab' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.tests' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.tests' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.tests' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.tests' to be distributed and are already explicitly excluding 'xbout.tests' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.tests.data.options' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.tests.data.options' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.tests.data.options' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.tests.data.options' to be distributed and are already explicitly excluding 'xbout.tests.data.options' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.tests.data.restart' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.tests.data.restart' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.tests.data.restart' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.tests.data.restart' to be distributed and are already explicitly excluding 'xbout.tests.data.restart' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.14/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'xbout.tests.inputs' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'xbout.tests.inputs' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'xbout.tests.inputs' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'xbout.tests.inputs' to be distributed and are already explicitly excluding 'xbout.tests.inputs' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) creating build/lib/xbout/cherab copying xbout/cherab/__init__.py -> build/lib/xbout/cherab copying xbout/cherab/grid.py -> build/lib/xbout/cherab copying xbout/cherab/triangulate.py -> build/lib/xbout/cherab creating build/lib/xbout/tests copying xbout/tests/__init__.py -> build/lib/xbout/tests copying xbout/tests/conftest.py -> build/lib/xbout/tests copying xbout/tests/test_against_collect.py -> build/lib/xbout/tests copying xbout/tests/test_animate.py -> build/lib/xbout/tests copying xbout/tests/test_boutdataarray.py -> build/lib/xbout/tests copying xbout/tests/test_boutdataset.py -> build/lib/xbout/tests copying xbout/tests/test_fastoutput.py -> build/lib/xbout/tests copying xbout/tests/test_geometries.py -> build/lib/xbout/tests copying xbout/tests/test_grid.py -> build/lib/xbout/tests copying xbout/tests/test_init.py -> build/lib/xbout/tests copying xbout/tests/test_load.py -> build/lib/xbout/tests copying xbout/tests/test_plot.py -> build/lib/xbout/tests copying xbout/tests/test_region.py -> build/lib/xbout/tests copying xbout/tests/test_utils.py -> build/lib/xbout/tests copying xbout/tests/utils_for_tests.py -> build/lib/xbout/tests creating build/lib/xbout/tests/data/options copying xbout/tests/data/options/BOUT.inp -> build/lib/xbout/tests/data/options creating build/lib/xbout/tests/data/restart copying xbout/tests/data/restart/BOUT.restart.0.nc -> build/lib/xbout/tests/data/restart copying xbout/tests/data/restart/BOUT.restart.1.nc -> build/lib/xbout/tests/data/restart copying xbout/tests/data/restart/README.md -> build/lib/xbout/tests/data/restart creating build/lib/xbout/tests/inputs copying xbout/tests/inputs/s-alpha.inp -> build/lib/xbout/tests/inputs creating build/lib/xbout/calc/tests copying xbout/calc/tests/test_turbulence.py -> build/lib/xbout/calc/tests installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/xbout creating build/bdist.linux-x86_64/wheel/xbout/tests creating build/bdist.linux-x86_64/wheel/xbout/tests/inputs copying build/lib/xbout/tests/inputs/s-alpha.inp -> build/bdist.linux-x86_64/wheel/./xbout/tests/inputs creating build/bdist.linux-x86_64/wheel/xbout/tests/data creating build/bdist.linux-x86_64/wheel/xbout/tests/data/restart copying build/lib/xbout/tests/data/restart/README.md -> build/bdist.linux-x86_64/wheel/./xbout/tests/data/restart copying build/lib/xbout/tests/data/restart/BOUT.restart.1.nc -> build/bdist.linux-x86_64/wheel/./xbout/tests/data/restart copying build/lib/xbout/tests/data/restart/BOUT.restart.0.nc -> build/bdist.linux-x86_64/wheel/./xbout/tests/data/restart creating build/bdist.linux-x86_64/wheel/xbout/tests/data/options copying build/lib/xbout/tests/data/options/BOUT.inp -> build/bdist.linux-x86_64/wheel/./xbout/tests/data/options copying build/lib/xbout/tests/utils_for_tests.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_utils.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_region.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_plot.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_load.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_init.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_grid.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_geometries.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_fastoutput.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_boutdataset.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_boutdataarray.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_animate.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/test_against_collect.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/conftest.py -> build/bdist.linux-x86_64/wheel/./xbout/tests copying build/lib/xbout/tests/__init__.py -> build/bdist.linux-x86_64/wheel/./xbout/tests creating build/bdist.linux-x86_64/wheel/xbout/cherab copying build/lib/xbout/cherab/triangulate.py -> build/bdist.linux-x86_64/wheel/./xbout/cherab copying build/lib/xbout/cherab/grid.py -> build/bdist.linux-x86_64/wheel/./xbout/cherab copying build/lib/xbout/cherab/__init__.py -> build/bdist.linux-x86_64/wheel/./xbout/cherab creating build/bdist.linux-x86_64/wheel/xbout/plotting copying build/lib/xbout/plotting/__init__.py -> build/bdist.linux-x86_64/wheel/./xbout/plotting copying build/lib/xbout/plotting/animate.py -> build/bdist.linux-x86_64/wheel/./xbout/plotting copying build/lib/xbout/plotting/plotfuncs.py -> build/bdist.linux-x86_64/wheel/./xbout/plotting copying build/lib/xbout/plotting/utils.py -> build/bdist.linux-x86_64/wheel/./xbout/plotting creating build/bdist.linux-x86_64/wheel/xbout/calc creating build/bdist.linux-x86_64/wheel/xbout/calc/tests copying build/lib/xbout/calc/tests/test_turbulence.py -> build/bdist.linux-x86_64/wheel/./xbout/calc/tests copying build/lib/xbout/calc/__init__.py -> build/bdist.linux-x86_64/wheel/./xbout/calc copying build/lib/xbout/calc/turbulence.py -> build/bdist.linux-x86_64/wheel/./xbout/calc copying build/lib/xbout/__init__.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/_version.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/conftest.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/fastoutput.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/geometries.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/load.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/region.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/utils.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/xarraybackend.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/boutdataarray.py -> build/bdist.linux-x86_64/wheel/./xbout copying build/lib/xbout/boutdataset.py -> build/bdist.linux-x86_64/wheel/./xbout running install_egg_info Copying xbout.egg-info to build/bdist.linux-x86_64/wheel/./xbout-0.3.8-py3.14.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/xbout-0.3.8.dist-info/WHEEL creating '/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir/pip-wheel-ksa09ygy/.tmp-sl3objvs/xbout-0.3.8-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'xbout/__init__.py' adding 'xbout/_version.py' adding 'xbout/boutdataarray.py' adding 'xbout/boutdataset.py' adding 'xbout/conftest.py' adding 'xbout/fastoutput.py' adding 'xbout/geometries.py' adding 'xbout/load.py' adding 'xbout/region.py' adding 'xbout/utils.py' adding 'xbout/xarraybackend.py' adding 'xbout/calc/__init__.py' adding 'xbout/calc/turbulence.py' adding 'xbout/calc/tests/test_turbulence.py' adding 'xbout/cherab/__init__.py' adding 'xbout/cherab/grid.py' adding 'xbout/cherab/triangulate.py' adding 'xbout/plotting/__init__.py' adding 'xbout/plotting/animate.py' adding 'xbout/plotting/plotfuncs.py' adding 'xbout/plotting/utils.py' adding 'xbout/tests/__init__.py' adding 'xbout/tests/conftest.py' adding 'xbout/tests/test_against_collect.py' adding 'xbout/tests/test_animate.py' adding 'xbout/tests/test_boutdataarray.py' adding 'xbout/tests/test_boutdataset.py' adding 'xbout/tests/test_fastoutput.py' adding 'xbout/tests/test_geometries.py' adding 'xbout/tests/test_grid.py' adding 'xbout/tests/test_init.py' adding 'xbout/tests/test_load.py' adding 'xbout/tests/test_plot.py' adding 'xbout/tests/test_region.py' adding 'xbout/tests/test_utils.py' adding 'xbout/tests/utils_for_tests.py' adding 'xbout/tests/data/options/BOUT.inp' adding 'xbout/tests/data/restart/BOUT.restart.0.nc' adding 'xbout/tests/data/restart/BOUT.restart.1.nc' adding 'xbout/tests/data/restart/README.md' adding 'xbout/tests/inputs/s-alpha.inp' adding 'xbout-0.3.8.dist-info/licenses/LICENSE' adding 'xbout-0.3.8.dist-info/METADATA' adding 'xbout-0.3.8.dist-info/WHEEL' adding 'xbout-0.3.8.dist-info/entry_points.txt' adding 'xbout-0.3.8.dist-info/top_level.txt' Building wheel for xbout (pyproject.toml): finished with status 'done' adding 'xbout-0.3.8.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Created wheel for xbout: filename=xbout-0.3.8-py3-none-any.whl size=145759 sha256=a4b1b1333faa395d22ddf47be197345f171de011599b362fe2547401205b188c Stored in directory: /builddir/.cache/pip/wheels/29/2c/d3/93c669026eeb50cf136a18989a13ca0f6869b66509192bb238 Successfully built xbout + PYTHONPATH=/builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8 + sphinx-build-3 docs html Running Sphinx v8.2.3 loading translations [en]... done making output directory... done Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. [autosummary] generating autosummary for: accessor_methods.rst, api.rst, extending_xbout.rst, index.rst, loading_data.rst [autosummary] generating autosummary for: /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.rst WARNING: [autosummary] failed to import xbout.xarraybackend. Possible hints: * AttributeError: module 'xbout' has no attribute 'xarraybackend' * ModuleNotFoundError: No module named 'adios2' * ImportError: [autosummary] generating autosummary for: /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.boutdataarray.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.boutdataset.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.calc.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.conftest.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.fastoutput.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.geometries.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.load.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.region.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.utils.rst [autosummary] generating autosummary for: /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.boutdataarray.BoutDataArrayAccessor.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.boutdataset.BoutDatasetAccessor.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.boutdataset.ProgressBar.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.calc.turbulence.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.grid.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.triangulate.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.conftest.pytest_addoption.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.conftest.pytest_collection_modifyitems.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.conftest.pytest_configure.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.fastoutput.open_fastoutput.rst, ..., /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_boutdataset.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_fastoutput.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_geometries.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_grid.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_init.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_load.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_plot.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_region.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_utils.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.rst [autosummary] generating autosummary for: /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.calc.turbulence.rms.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.grid.da_with_cherab_grid.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.grid.ds_with_cherab_grid.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.triangulate.TriangularData.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.cherab.triangulate.Triangulate.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.animate.animate_line.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.animate.animate_pcolormesh.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.animate.animate_poloidal.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.plotfuncs.plot2d_polygon.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.plotting.plotfuncs.plot2d_wrapper.rst, ..., /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_load.test_check_extensions.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_load.test_set_fci_coords.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_plot.TestPlot.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_region.TestRegion.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.test_utils.TestUtils.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.create_bout_ds.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.create_bout_ds_list.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.create_bout_grid_ds.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.load_example_input.rst, /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.tests.utils_for_tests.set_geometry_from_input_file.rst loading intersphinx inventory 'python' from https://docs.python.org/3/objects.inv ... loading intersphinx inventory 'numpy' from https://numpy.org/doc/stable/objects.inv ... loading intersphinx inventory 'scipy' from https://docs.scipy.org/doc/scipy/objects.inv ... WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://numpy.org/doc/stable/objects.inv' not fetchable due to : HTTPSConnectionPool(host='numpy.org', port=443): Max retries exceeded with url: /doc/stable/objects.inv (Caused by NameResolutionError(": Failed to resolve 'numpy.org' ([Errno -3] Temporary failure in name resolution)")) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://docs.scipy.org/doc/scipy/objects.inv' not fetchable due to : HTTPSConnectionPool(host='docs.scipy.org', port=443): Max retries exceeded with url: /doc/scipy/objects.inv (Caused by NameResolutionError(": Failed to resolve 'docs.scipy.org' ([Errno -3] Temporary failure in name resolution)")) loading intersphinx inventory 'xarray' from https://docs.xarray.dev/en/latest/objects.inv ... WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://docs.python.org/3/objects.inv' not fetchable due to : HTTPSConnectionPool(host='docs.python.org', port=443): Max retries exceeded with url: /3/objects.inv (Caused by NameResolutionError(": Failed to resolve 'docs.python.org' ([Errno -3] Temporary failure in name resolution)")) loading intersphinx inventory 'mayavi' from https://docs.enthought.com/mayavi/mayavi/objects.inv ... WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://docs.xarray.dev/en/latest/objects.inv' not fetchable due to : HTTPSConnectionPool(host='docs.xarray.dev', port=443): Max retries exceeded with url: /en/latest/objects.inv (Caused by NameResolutionError(": Failed to resolve 'docs.xarray.dev' ([Errno -3] Temporary failure in name resolution)")) WARNING: failed to reach any of the inventories with the following issues: intersphinx inventory 'https://docs.enthought.com/mayavi/mayavi/objects.inv' not fetchable due to : HTTPSConnectionPool(host='docs.enthought.com', port=443): Max retries exceeded with url: /mayavi/mayavi/objects.inv (Caused by NameResolutionError(": Failed to resolve 'docs.enthought.com' ([Errno -3] Temporary failure in name resolution)")) building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 5 source files that are out of date updating environment: [new config] 114 added, 0 changed, 0 removed reading sources... [ 1%] accessor_methods reading sources... [ 2%] api reading sources... [ 3%] extending_xbout reading sources... [ 4%] generated/xbout reading sources... [ 4%] generated/xbout.boutdataarray reading sources... [ 5%] generated/xbout.boutdataarray.BoutDataArrayAccessor reading sources... [ 6%] generated/xbout.boutdataset reading sources... [ 7%] generated/xbout.boutdataset.BoutDatasetAccessor reading sources... [ 8%] generated/xbout.boutdataset.ProgressBar reading sources... [ 9%] generated/xbout.calc reading sources... [ 10%] generated/xbout.calc.turbulence reading sources... [ 11%] generated/xbout.calc.turbulence.rms reading sources... [ 11%] generated/xbout.cherab reading sources... [ 12%] generated/xbout.cherab.grid reading sources... [ 13%] generated/xbout.cherab.grid.da_with_cherab_grid reading sources... [ 14%] generated/xbout.cherab.grid.ds_with_cherab_grid reading sources... [ 15%] generated/xbout.cherab.triangulate reading sources... [ 16%] generated/xbout.cherab.triangulate.TriangularData reading sources... [ 17%] generated/xbout.cherab.triangulate.Triangulate reading sources... [ 18%] generated/xbout.conftest reading sources... [ 18%] generated/xbout.conftest.pytest_addoption reading sources... [ 19%] generated/xbout.conftest.pytest_collection_modifyitems reading sources... [ 20%] generated/xbout.conftest.pytest_configure reading sources... [ 21%] generated/xbout.fastoutput reading sources... [ 22%] generated/xbout.fastoutput.open_fastoutput reading sources... [ 23%] generated/xbout.geometries reading sources... [ 24%] generated/xbout.geometries.UnregisteredGeometryError reading sources... [ 25%] generated/xbout.geometries.add_fci_geometry_coords reading sources... [ 25%] generated/xbout.geometries.add_s_alpha_geometry_coords reading sources... [ 26%] generated/xbout.geometries.add_toroidal_geometry_coords reading sources... [ 27%] generated/xbout.geometries.apply_geometry reading sources... [ 28%] generated/xbout.geometries.register_geometry reading sources... [ 29%] generated/xbout.load reading sources... [ 30%] generated/xbout.load.collect reading sources... [ 31%] generated/xbout.load.open_boutdataset reading sources... [ 32%] generated/xbout.plotting reading sources... [ 32%] generated/xbout.plotting.animate reading sources... [ 33%] generated/xbout.plotting.animate.animate_line reading sources... [ 34%] generated/xbout.plotting.animate.animate_pcolormesh reading sources... [ 35%] generated/xbout.plotting.animate.animate_poloidal reading sources... [ 36%] generated/xbout.plotting.plotfuncs reading sources... [ 37%] generated/xbout.plotting.plotfuncs.plot2d_polygon reading sources... [ 38%] generated/xbout.plotting.plotfuncs.plot2d_wrapper reading sources... [ 39%] generated/xbout.plotting.plotfuncs.plot3d reading sources... [ 39%] generated/xbout.plotting.plotfuncs.plot_regions reading sources... [ 40%] generated/xbout.plotting.utils reading sources... [ 41%] generated/xbout.plotting.utils.plot_separatrices reading sources... [ 42%] generated/xbout.plotting.utils.plot_separatrix reading sources... [ 43%] generated/xbout.plotting.utils.plot_targets reading sources... [ 44%] generated/xbout.region reading sources... [ 45%] generated/xbout.region.Region reading sources... [ 46%] generated/xbout.region.topology_connected_double_null reading sources... [ 46%] generated/xbout.region.topology_core reading sources... [ 47%] generated/xbout.region.topology_limiter reading sources... [ 48%] generated/xbout.region.topology_lower_disconnected_double_null reading sources... [ 49%] generated/xbout.region.topology_single_null reading sources... [ 50%] generated/xbout.region.topology_sol reading sources... [ 51%] generated/xbout.region.topology_upper_disconnected_double_null reading sources... [ 52%] generated/xbout.region.topology_xpoint reading sources... [ 53%] generated/xbout.tests reading sources... [ 54%] generated/xbout.tests.conftest reading sources... [ 54%] generated/xbout.tests.conftest.bout_xyt_example_files reading sources... [ 55%] generated/xbout.tests.conftest.create_example_files_fci reading sources... [ 56%] generated/xbout.tests.conftest.create_example_grid_file_fci reading sources... [ 57%] generated/xbout.tests.test_against_collect reading sources... [ 58%] generated/xbout.tests.test_against_collect.TestAccuracyAgainstOldCollect reading sources... [ 59%] generated/xbout.tests.test_against_collect.test_speed_against_old_collect reading sources... [ 60%] generated/xbout.tests.test_animate reading sources... [ 61%] generated/xbout.tests.test_animate.TestAnimate reading sources... [ 61%] generated/xbout.tests.test_animate.create_test_file reading sources... [ 62%] generated/xbout.tests.test_boutdataarray reading sources... [ 63%] generated/xbout.tests.test_boutdataarray.TestBoutDataArrayMethods reading sources... [ 64%] generated/xbout.tests.test_boutdataset reading sources... [ 65%] generated/xbout.tests.test_boutdataset.TestBoutDatasetIsXarrayDataset reading sources... [ 66%] generated/xbout.tests.test_boutdataset.TestBoutDatasetMethods reading sources... [ 67%] generated/xbout.tests.test_boutdataset.TestLoadInputFile reading sources... [ 68%] generated/xbout.tests.test_boutdataset.TestLoadLogFile reading sources... [ 68%] generated/xbout.tests.test_boutdataset.TestSave reading sources... [ 69%] generated/xbout.tests.test_boutdataset.TestSaveRestart reading sources... [ 70%] generated/xbout.tests.test_fastoutput reading sources... [ 71%] generated/xbout.tests.test_fastoutput.TestFastOutput reading sources... [ 72%] generated/xbout.tests.test_fastoutput.make_fastoutput reading sources... [ 73%] generated/xbout.tests.test_fastoutput.make_fastoutput_set reading sources... [ 74%] generated/xbout.tests.test_geometries reading sources... [ 75%] generated/xbout.tests.test_geometries.TestGeometryRegistration reading sources... [ 75%] generated/xbout.tests.test_grid reading sources... [ 76%] generated/xbout.tests.test_grid.TestOpenGrid reading sources... [ 77%] generated/xbout.tests.test_grid.create_example_grid_file reading sources... [ 78%] generated/xbout.tests.test_init reading sources... [ 79%] generated/xbout.tests.test_init.test_version reading sources... [ 80%] generated/xbout.tests.test_load reading sources... [ 81%] generated/xbout.tests.test_load.TestArrange reading sources... [ 82%] generated/xbout.tests.test_load.TestOpen reading sources... [ 82%] generated/xbout.tests.test_load.TestPathHandling reading sources... [ 83%] generated/xbout.tests.test_load.TestStripMetadata reading sources... [ 84%] generated/xbout.tests.test_load.TestTrim reading sources... [ 85%] generated/xbout.tests.test_load.create_filepaths reading sources... [ 86%] generated/xbout.tests.test_load.test_check_extensions reading sources... [ 87%] generated/xbout.tests.test_load.test_set_fci_coords reading sources... [ 88%] generated/xbout.tests.test_plot reading sources... [ 89%] generated/xbout.tests.test_plot.TestPlot reading sources... [ 89%] generated/xbout.tests.test_region reading sources... [ 90%] generated/xbout.tests.test_region.TestRegion reading sources... [ 91%] generated/xbout.tests.test_utils reading sources... [ 92%] generated/xbout.tests.test_utils.TestUtils reading sources... [ 93%] generated/xbout.tests.utils_for_tests reading sources... [ 94%] generated/xbout.tests.utils_for_tests.create_bout_ds reading sources... [ 95%] generated/xbout.tests.utils_for_tests.create_bout_ds_list reading sources... [ 96%] generated/xbout.tests.utils_for_tests.create_bout_grid_ds reading sources... [ 96%] generated/xbout.tests.utils_for_tests.load_example_input reading sources... [ 97%] generated/xbout.tests.utils_for_tests.set_geometry_from_input_file reading sources... [ 98%] generated/xbout.utils reading sources... [ 99%] index reading sources... [100%] loading_data looking for now-outdated files... /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/generated/xbout.rst:26: WARNING: autosummary: failed to import xarraybackend. Possible hints: * ModuleNotFoundError: No module named 'xarraybackend' * ModuleNotFoundError: No module named 'adios2' * AttributeError: module 'xbout' has no attribute 'xarraybackend' * KeyError: 'xarraybackend' * ValueError: not enough values to unpack (expected 2, got 1) none found pickling environment... done checking consistency... done preparing documents... WARNING: unsupported theme option 'repository_url' given WARNING: unsupported theme option 'repository_branch' given WARNING: unsupported theme option 'path_to_docs' given WARNING: unsupported theme option 'use_edit_page_button' given WARNING: unsupported theme option 'use_repository_button' given WARNING: unsupported theme option 'use_issues_button' given WARNING: unsupported theme option 'home_page_in_toc' given done copying assets... copying static files... Writing evaluated template result to /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/html/_static/language_data.js Writing evaluated template result to /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/html/_static/documentation_options.js Writing evaluated template result to /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/html/_static/basic.css Writing evaluated template result to /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/html/_static/alabaster.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [ 1%] accessor_methods writing output... [ 2%] api writing output... [ 3%] extending_xbout writing output... [ 4%] generated/xbout writing output... [ 4%] generated/xbout.boutdataarray writing output... [ 5%] generated/xbout.boutdataarray.BoutDataArrayAccessor writing output... [ 6%] generated/xbout.boutdataset writing output... [ 7%] generated/xbout.boutdataset.BoutDatasetAccessor writing output... [ 8%] generated/xbout.boutdataset.ProgressBar writing output... [ 9%] generated/xbout.calc writing output... [ 10%] generated/xbout.calc.turbulence writing output... [ 11%] generated/xbout.calc.turbulence.rms writing output... [ 11%] generated/xbout.cherab writing output... [ 12%] generated/xbout.cherab.grid writing output... [ 13%] generated/xbout.cherab.grid.da_with_cherab_grid writing output... [ 14%] generated/xbout.cherab.grid.ds_with_cherab_grid writing output... [ 15%] generated/xbout.cherab.triangulate writing output... [ 16%] generated/xbout.cherab.triangulate.TriangularData writing output... [ 17%] generated/xbout.cherab.triangulate.Triangulate writing output... [ 18%] generated/xbout.conftest writing output... [ 18%] generated/xbout.conftest.pytest_addoption writing output... [ 19%] generated/xbout.conftest.pytest_collection_modifyitems writing output... [ 20%] generated/xbout.conftest.pytest_configure writing output... [ 21%] generated/xbout.fastoutput writing output... [ 22%] generated/xbout.fastoutput.open_fastoutput writing output... [ 23%] generated/xbout.geometries writing output... [ 24%] generated/xbout.geometries.UnregisteredGeometryError writing output... [ 25%] generated/xbout.geometries.add_fci_geometry_coords writing output... [ 25%] generated/xbout.geometries.add_s_alpha_geometry_coords writing output... [ 26%] generated/xbout.geometries.add_toroidal_geometry_coords writing output... [ 27%] generated/xbout.geometries.apply_geometry writing output... [ 28%] generated/xbout.geometries.register_geometry writing output... [ 29%] generated/xbout.load writing output... [ 30%] generated/xbout.load.collect writing output... [ 31%] generated/xbout.load.open_boutdataset writing output... [ 32%] generated/xbout.plotting writing output... [ 32%] generated/xbout.plotting.animate writing output... [ 33%] generated/xbout.plotting.animate.animate_line writing output... [ 34%] generated/xbout.plotting.animate.animate_pcolormesh writing output... [ 35%] generated/xbout.plotting.animate.animate_poloidal writing output... [ 36%] generated/xbout.plotting.plotfuncs writing output... [ 37%] generated/xbout.plotting.plotfuncs.plot2d_polygon writing output... [ 38%] generated/xbout.plotting.plotfuncs.plot2d_wrapper writing output... [ 39%] generated/xbout.plotting.plotfuncs.plot3d writing output... [ 39%] generated/xbout.plotting.plotfuncs.plot_regions writing output... [ 40%] generated/xbout.plotting.utils writing output... [ 41%] generated/xbout.plotting.utils.plot_separatrices writing output... [ 42%] generated/xbout.plotting.utils.plot_separatrix writing output... [ 43%] generated/xbout.plotting.utils.plot_targets writing output... [ 44%] generated/xbout.region writing output... [ 45%] generated/xbout.region.Region writing output... [ 46%] generated/xbout.region.topology_connected_double_null writing output... [ 46%] generated/xbout.region.topology_core writing output... [ 47%] generated/xbout.region.topology_limiter writing output... [ 48%] generated/xbout.region.topology_lower_disconnected_double_null writing output... [ 49%] generated/xbout.region.topology_single_null writing output... [ 50%] generated/xbout.region.topology_sol writing output... [ 51%] generated/xbout.region.topology_upper_disconnected_double_null writing output... [ 52%] generated/xbout.region.topology_xpoint writing output... [ 53%] generated/xbout.tests writing output... [ 54%] generated/xbout.tests.conftest writing output... [ 54%] generated/xbout.tests.conftest.bout_xyt_example_files writing output... [ 55%] generated/xbout.tests.conftest.create_example_files_fci writing output... [ 56%] generated/xbout.tests.conftest.create_example_grid_file_fci writing output... [ 57%] generated/xbout.tests.test_against_collect writing output... [ 58%] generated/xbout.tests.test_against_collect.TestAccuracyAgainstOldCollect writing output... [ 59%] generated/xbout.tests.test_against_collect.test_speed_against_old_collect writing output... [ 60%] generated/xbout.tests.test_animate writing output... [ 61%] generated/xbout.tests.test_animate.TestAnimate writing output... [ 61%] generated/xbout.tests.test_animate.create_test_file writing output... [ 62%] generated/xbout.tests.test_boutdataarray writing output... [ 63%] generated/xbout.tests.test_boutdataarray.TestBoutDataArrayMethods writing output... [ 64%] generated/xbout.tests.test_boutdataset writing output... [ 65%] generated/xbout.tests.test_boutdataset.TestBoutDatasetIsXarrayDataset writing output... [ 66%] generated/xbout.tests.test_boutdataset.TestBoutDatasetMethods writing output... [ 67%] generated/xbout.tests.test_boutdataset.TestLoadInputFile writing output... [ 68%] generated/xbout.tests.test_boutdataset.TestLoadLogFile writing output... [ 68%] generated/xbout.tests.test_boutdataset.TestSave writing output... [ 69%] generated/xbout.tests.test_boutdataset.TestSaveRestart writing output... [ 70%] generated/xbout.tests.test_fastoutput writing output... [ 71%] generated/xbout.tests.test_fastoutput.TestFastOutput writing output... [ 72%] generated/xbout.tests.test_fastoutput.make_fastoutput writing output... [ 73%] generated/xbout.tests.test_fastoutput.make_fastoutput_set writing output... [ 74%] generated/xbout.tests.test_geometries writing output... [ 75%] generated/xbout.tests.test_geometries.TestGeometryRegistration writing output... [ 75%] generated/xbout.tests.test_grid writing output... [ 76%] generated/xbout.tests.test_grid.TestOpenGrid writing output... [ 77%] generated/xbout.tests.test_grid.create_example_grid_file writing output... [ 78%] generated/xbout.tests.test_init writing output... [ 79%] generated/xbout.tests.test_init.test_version writing output... [ 80%] generated/xbout.tests.test_load writing output... [ 81%] generated/xbout.tests.test_load.TestArrange writing output... [ 82%] generated/xbout.tests.test_load.TestOpen writing output... [ 82%] generated/xbout.tests.test_load.TestPathHandling writing output... [ 83%] generated/xbout.tests.test_load.TestStripMetadata writing output... [ 84%] generated/xbout.tests.test_load.TestTrim writing output... [ 85%] generated/xbout.tests.test_load.create_filepaths writing output... [ 86%] generated/xbout.tests.test_load.test_check_extensions writing output... [ 87%] generated/xbout.tests.test_load.test_set_fci_coords writing output... [ 88%] generated/xbout.tests.test_plot writing output... [ 89%] generated/xbout.tests.test_plot.TestPlot writing output... [ 89%] generated/xbout.tests.test_region writing output... [ 90%] generated/xbout.tests.test_region.TestRegion writing output... [ 91%] generated/xbout.tests.test_utils writing output... [ 92%] generated/xbout.tests.test_utils.TestUtils writing output... [ 93%] generated/xbout.tests.utils_for_tests writing output... [ 94%] generated/xbout.tests.utils_for_tests.create_bout_ds writing output... [ 95%] generated/xbout.tests.utils_for_tests.create_bout_ds_list writing output... [ 96%] generated/xbout.tests.utils_for_tests.create_bout_grid_ds writing output... [ 96%] generated/xbout.tests.utils_for_tests.load_example_input writing output... [ 97%] generated/xbout.tests.utils_for_tests.set_geometry_from_input_file writing output... [ 98%] generated/xbout.utils writing output... [ 99%] index writing output... [100%] loading_data generating indices... /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/accessor_methods.rst:4: WARNING: 'any' reference target not found: xarray.Dataset [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/accessor_methods.rst:4: WARNING: 'any' reference target not found: xarray.DataArray [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataarray.py:docstring of xbout.boutdataarray.BoutDataArrayAccessor:4: WARNING: 'any' reference target not found: BoutOptionsFile [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataarray.py:docstring of xbout.boutdataarray.BoutDataArrayAccessor.interpolate_to_cartesian:3: WARNING: 'any' reference target not found: numpy.float32 [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataarray.py:docstring of xbout.boutdataarray.BoutDataArrayAccessor.interpolate_to_cartesian:14: WARNING: 'any' reference target not found: numpy.float32 [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataarray.py:docstring of xbout.boutdataarray.BoutDataArrayAccessor.interpolate_to_cartesian:16: WARNING: 'any' reference target not found: scipy.interpolate.RegularGridInterpolator [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataset.py:docstring of xbout.boutdataset.BoutDatasetAccessor:4: WARNING: 'any' reference target not found: BoutOptionsFile [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataset.py:docstring of xbout.boutdataset.BoutDatasetAccessor.integrate_midpoints:36: WARNING: 'any' reference target not found: ... [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataset.py:docstring of xbout.boutdataset.BoutDatasetAccessor.interpolate_to_cartesian:3: WARNING: 'any' reference target not found: numpy.float32 [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataset.py:docstring of xbout.boutdataset.BoutDatasetAccessor.interpolate_to_cartesian:18: WARNING: 'any' reference target not found: numpy.float32 [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/boutdataset.py:docstring of xbout.boutdataset.BoutDatasetAccessor.interpolate_to_cartesian:21: WARNING: 'any' reference target not found: scipy.interpolate.RegularGridInterpolator [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/load.py:docstring of xbout.load.open_boutdataset:24: WARNING: 'any' reference target not found: xarray.open_dataset [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/load.py:docstring of xbout.load.open_boutdataset:103: WARNING: 'any' reference target not found: xarray.open_mfdataset [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/load.py:docstring of xbout.load.open_boutdataset:103: WARNING: 'any' reference target not found: xarray.open_dataset [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/plotting/plotfuncs.py:docstring of xbout.plotting.plotfuncs.plot2d_wrapper:3: WARNING: 'any' reference target not found: xarray.DataArray.plot [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/plotting/plotfuncs.py:docstring of xbout.plotting.plotfuncs.plot3d:68: WARNING: 'any' reference target not found: mayavi.mlab.view [ref.any] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/docs/loading_data.rst:12: WARNING: 'any' reference target not found: xarray.Dataset [ref.any] genindex py-modindex done highlighting module code... [ 4%] xbout.boutdataarray highlighting module code... [ 7%] xbout.boutdataset highlighting module code... [ 11%] xbout.calc.turbulence highlighting module code... [ 15%] xbout.cherab.grid highlighting module code... [ 19%] xbout.cherab.triangulate highlighting module code... [ 22%] xbout.conftest highlighting module code... [ 26%] xbout.fastoutput highlighting module code... [ 30%] xbout.geometries highlighting module code... [ 33%] xbout.load highlighting module code... [ 37%] xbout.plotting.animate highlighting module code... [ 41%] xbout.plotting.plotfuncs highlighting module code... [ 44%] xbout.plotting.utils highlighting module code... [ 48%] xbout.region highlighting module code... [ 52%] xbout.tests.conftest highlighting module code... [ 56%] xbout.tests.test_against_collect highlighting module code... [ 59%] xbout.tests.test_animate highlighting module code... [ 63%] xbout.tests.test_boutdataarray highlighting module code... [ 67%] xbout.tests.test_boutdataset highlighting module code... [ 70%] xbout.tests.test_fastoutput highlighting module code... [ 74%] xbout.tests.test_geometries highlighting module code... [ 78%] xbout.tests.test_grid highlighting module code... [ 81%] xbout.tests.test_init highlighting module code... [ 85%] xbout.tests.test_load highlighting module code... [ 89%] xbout.tests.test_plot highlighting module code... [ 93%] xbout.tests.test_region highlighting module code... [ 96%] xbout.tests.test_utils highlighting module code... [100%] xbout.tests.utils_for_tests writing additional pages... search done copying images... [100%] images/n_over_t.gif dumping search index in English (code: en)... done dumping object inventory... done build succeeded, 31 warnings. The HTML pages are in html. + rm -rf html/.doctrees html/.buildinfo + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.WDs2rZ + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-build + '[' /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT ++ dirname /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT + mkdir -p /builddir/build/BUILD/python-xbout-0.3.8-build + mkdir /builddir/build/BUILD/python-xbout-0.3.8-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 xbout-0.3.8 ++ ls /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir/xbout-0.3.8-py3-none-any.whl ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' + specifier=xbout==0.3.8 + '[' -z xbout==0.3.8 ']' + TMPDIR=/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILD/python-xbout-0.3.8-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-xbout-0.3.8-build/pyproject-wheeldir xbout==0.3.8 Using pip 25.2 from /usr/lib/python3.14/site-packages/pip (python 3.14) Looking in links: /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir Processing /builddir/build/BUILD/python-xbout-0.3.8-build/pyproject-wheeldir/xbout-0.3.8-py3-none-any.whl Installing collected packages: xbout Successfully installed xbout-0.3.8 + '[' -d /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/bin ']' + rm -f /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + site_dirs+=("/usr/lib/python3.14/site-packages") + '[' /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib64/python3.14/site-packages '!=' /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' -d /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib64/python3.14/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.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-xbout-0.3.8-build/BUILDROOT --record /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info/RECORD --output /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-record + rm -fv /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info/RECORD removed '/builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info/RECORD' + rm -fv /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info/REQUESTED removed '/builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout-0.3.8.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.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-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-files --output-modules /builddir/build/BUILD/python-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-modules --buildroot /builddir/build/BUILD/python-xbout-0.3.8-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-xbout-0.3.8-build/python-xbout-0.3.8-1.fc44.x86_64-pyproject-record --prefix /usr xbout + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/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-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14 using python3.14 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-determinism --brp -j2 /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/xarraybackend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/region.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/load.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/load.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/geometries.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/geometries.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/fastoutput.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/conftest.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/boutdataset.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/_version.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_geometries.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_geometries.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/utils_for_tests.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_fastoutput.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_fastoutput.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/__pycache__/boutdataarray.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_utils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_utils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_region.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_boutdataset.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_plot.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_boutdataset.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_load.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_boutdataarray.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_load.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_init.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_init.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_grid.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_boutdataarray.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_animate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_against_collect.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_animate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/test_against_collect.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/tests/__pycache__/conftest.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/plotting/__pycache__/utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/plotting/__pycache__/animate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/plotting/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/cherab/__pycache__/triangulate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/plotting/__pycache__/plotfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/cherab/__pycache__/grid.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/cherab/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/calc/__pycache__/turbulence.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/calc/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/cherab/__pycache__/triangulate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages/xbout/calc/tests/__pycache__/test_turbulence.cpython-314.opt-1.pyc: rewriting with normalized contents Scanned 23 directories and 119 files, processed 48 inodes, 48 modified (24 replaced + 24 rewritten), 0 unsupported format, 0 errors Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.HpRHLU + umask 022 + cd /builddir/build/BUILD/python-xbout-0.3.8-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 xbout-0.3.8 + 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-xbout-0.3.8-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin + PYTHONPATH=/builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/python-xbout-0.3.8-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/python-xbout-0.3.8-build/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=2 + /usr/bin/pytest xbout --long --durations=0 ============================= test session starts ============================== platform linux -- Python 3.14.0rc2, pytest-8.3.5, pluggy-1.6.0 rootdir: /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8 configfile: pyproject.toml collected 794 items xbout/calc/tests/test_turbulence.py ....F [ 0%] xbout/tests/test_against_collect.py FFFFFFFF [ 1%] xbout/tests/test_animate.py EEEEEEEEEEEEEEEEEEEEEEEsEEEEEEEEEEEEEEE [ 6%] xbout/tests/test_boutdataarray.py .FFFFFFFF........FF................... [ 11%] .FFFFFFFFFFF...F.F [ 13%] xbout/tests/test_boutdataset.py ...FFFF....F...........FFFFFFFFFFFFFFFFF [ 18%] FFFFFFFFFFFFFFFFF.....FF..ssFFFFFFFFFFFFFFFFFFF [ 24%] xbout/tests/test_fastoutput.py . [ 24%] xbout/tests/test_geometries.py .. [ 24%] xbout/tests/test_grid.py FFFFF [ 25%] xbout/tests/test_init.py . [ 25%] xbout/tests/test_load.py .F........................FF....FFFFFFsFFFFFFFF [ 31%] FsF..................................................................... [ 40%] .......... [ 41%] xbout/tests/test_plot.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 47%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 56%] FFFFFFFFFFFFFFFFFFFFFFFFF [ 60%] xbout/tests/test_region.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 65%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 74%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 83%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 92%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 98%] xbout/tests/test_utils.py ............. [100%] ==================================== ERRORS ==================================== _________________ ERROR at setup of TestAnimate.test_animate2D _________________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls0] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls1] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls2] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls3] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls4] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate2D_controls_arg[controls5] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _________________ ERROR at setup of TestAnimate.test_animate1D _________________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls0] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls1] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls2] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls3] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls4] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____ ERROR at setup of TestAnimate.test_animate1D_controls_arg[controls5] _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _______________ ERROR at setup of TestAnimate.test_animate_list ________________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed __________ ERROR at setup of TestAnimate.test_animate_list_1d_default __________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _________ ERROR at setup of TestAnimate.test_animate_list_1d_multiline _________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _________ ERROR at setup of TestAnimate.test_animate_list_animate_over _________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___________ ERROR at setup of TestAnimate.test_animate_list_save_as ____________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____________ ERROR at setup of TestAnimate.test_animate_list_fps ______________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ____________ ERROR at setup of TestAnimate.test_animate_list_nrows _____________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ____________ ERROR at setup of TestAnimate.test_animate_list_ncols _____________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ____ ERROR at setup of TestAnimate.test_animate_list_not_enough_nrowsncols _____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _______ ERROR at setup of TestAnimate.test_animate_list_subplots_adjust ________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____________ ERROR at setup of TestAnimate.test_animate_list_vmin _____________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed __________ ERROR at setup of TestAnimate.test_animate_list_vmin_list ___________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _____________ ERROR at setup of TestAnimate.test_animate_list_vmax _____________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed __________ ERROR at setup of TestAnimate.test_animate_list_vmax_list ___________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___________ ERROR at setup of TestAnimate.test_animate_list_logscale ___________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ________ ERROR at setup of TestAnimate.test_animate_list_logscale_float ________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ________ ERROR at setup of TestAnimate.test_animate_list_logscale_list _________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed _________ ERROR at setup of TestAnimate.test_animate_list_titles_list __________ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls0] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls1] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls2] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls3] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls4] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed ___ ERROR at setup of TestAnimate.test_animate_list_controls_arg[controls5] ____ tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) with pytest.warns(UserWarning): > ds = open_boutdataset(save_dir.joinpath("BOUT.dmp.*.nc")) # Open test data xbout/tests/test_animate.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') @pytest.fixture def create_test_file(tmp_path_factory): # Create temp dir for output of animate1D/2D save_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for ds, file_name in zip(ds_list, file_list): ds.to_netcdf(save_dir.joinpath(file_name)) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_animate.py:24: Failed =================================== FAILURES =================================== ____________________ TestRootMeanSquare.test_reduce_2d_dask ____________________ self = def test_reduce_2d_dask(self): dat = np.array([[5, 7, 3.2, -1, -4.4], [-1, -2.5, 0, 8, 3.0]]) orig = DataArray(dat, dims=["x", "t"]) > chunked = orig.chunk({"x": 1}) xbout/calc/tests/test_turbulence.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/xarray/core/dataarray.py:1458: in chunk ds = self._to_temp_dataset().chunk( /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ________________ TestAccuracyAgainstOldCollect.test_single_file ________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_single_file(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data generated_ds = create_bout_ds(syn_data_type="linear") generated_ds.to_netcdf(test_dir.joinpath("BOUT.dmp.0.nc")) var = "n" expected = old_collect(var, path=test_dir, xguards=True, yguards=False) # Test against new standard - open_boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(test_dir.joinpath("BOUT.dmp.0.nc")) xbout/tests/test_against_collect.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_single_file(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data generated_ds = create_bout_ds(syn_data_type="linear") generated_ds.to_netcdf(test_dir.joinpath("BOUT.dmp.0.nc")) var = "n" expected = old_collect(var, path=test_dir, xguards=True, yguards=False) # Test against new standard - open_boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: [ RuntimeWarning("Engine 'bout_adios2' loading failed:\nNo module named 'adios2'")]. xbout/tests/test_against_collect.py:25: Failed ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 1, nype = 1, npes = 1 Reading from 0: [0-1][0-3] -> [0-1][0-3] __________ TestAccuracyAgainstOldCollect.test_multiple_files_along_x ___________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_x(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=1, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - open_boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(test_dir.joinpath("BOUT.dmp.*.nc")) xbout/tests/test_against_collect.py:54: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_x(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=1, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - open_boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_against_collect.py:53: Failed ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 3, nype = 1, npes = 3 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [2-3][0-3] Reading from 2: [0-1][0-3] -> [4-5][0-3] __________ TestAccuracyAgainstOldCollect.test_multiple_files_along_y ___________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_y(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=1, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - .open_boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(test_dir.joinpath("BOUT.dmp.*.nc")) xbout/tests/test_against_collect.py:82: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_y(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=1, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - .open_boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_against_collect.py:81: Failed ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 1, nype = 3, npes = 3 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [0-1][4-7] Reading from 2: [0-1][0-3] -> [0-1][8-11] __________ TestAccuracyAgainstOldCollect.test_multiple_files_along_xy __________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_xy(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - .open_boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(test_dir.joinpath("BOUT.dmp.*.nc")) xbout/tests/test_against_collect.py:110: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_multiple_files_along_xy(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" expected = old_collect(var, path=test_dir, prefix="BOUT.dmp", xguards=True) # Test against new standard - .open_boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_against_collect.py:109: Failed ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 3, nype = 3, npes = 9 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [2-3][0-3] Reading from 2: [0-1][0-3] -> [4-5][0-3] Reading from 3: [0-1][0-3] -> [0-1][4-7] Reading from 4: [0-1][0-3] -> [2-3][4-7] Reading from 5: [0-1][0-3] -> [4-5][4-7] Reading from 6: [0-1][0-3] -> [0-1][8-11] Reading from 7: [0-1][0-3] -> [2-3][8-11] Reading from 8: [0-1][0-3] -> [4-5][8-11] _________________ TestAccuracyAgainstOldCollect.test_metadata __________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_metadata(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data generated_ds = create_bout_ds(syn_data_type="linear") generated_ds.to_netcdf(test_dir.joinpath("BOUT.dmp.0.nc")) with pytest.warns(UserWarning): > ds = open_boutdataset(test_dir.joinpath("BOUT.dmp.*.nc")) xbout/tests/test_against_collect.py:131: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_metadata(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data generated_ds = create_bout_ds(syn_data_type="linear") generated_ds.to_netcdf(test_dir.joinpath("BOUT.dmp.0.nc")) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_against_collect.py:130: Failed _________ TestAccuracyAgainstOldCollect.test_new_collect_indexing_int __________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_new_collect_indexing_int(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" indexers = ["tind", "xind", "yind", "zind"] ind_arg = 0 for kwarg in indexers: # Extracting a the first index of each dimension for comparison expected = old_collect(var, path=test_dir, **{kwarg: ind_arg}) # Test against backwards compatible collect function > actual = new_collect(var, path=test_dir, **{kwarg: ind_arg}) xbout/tests/test_against_collect.py:164: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:497: in collect ds, _ = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 3, nype = 3, npes = 9 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [2-3][0-3] Reading from 2: [0-1][0-3] -> [4-5][0-3] Reading from 3: [0-1][0-3] -> [0-1][4-7] Reading from 4: [0-1][0-3] -> [2-3][4-7] Reading from 5: [0-1][0-3] -> [4-5][4-7] Reading from 6: [0-1][0-3] -> [0-1][8-11] Reading from 7: [0-1][0-3] -> [2-3][8-11] Reading from 8: [0-1][0-3] -> [4-5][8-11] _________ TestAccuracyAgainstOldCollect.test_new_collect_indexing_list _________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_new_collect_indexing_list(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" indexers = ["tind", "xind", "yind", "zind"] ind_arg = [0, 4] for kwarg in indexers: # Extracting a the first index of each dimension for comparison expected = old_collect(var, path=test_dir, **{kwarg: ind_arg}) # Test against backwards compatible collect function > actual = new_collect(var, path=test_dir, **{kwarg: ind_arg}) xbout/tests/test_against_collect.py:189: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:497: in collect ds, _ = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 3, nype = 3, npes = 9 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [2-3][0-3] Reading from 2: [0-1][0-3] -> [4-5][0-3] Reading from 3: [0-1][0-3] -> [0-1][4-7] Reading from 4: [0-1][0-3] -> [2-3][4-7] Reading from 5: [0-1][0-3] -> [4-5][4-7] Reading from 6: [0-1][0-3] -> [0-1][8-11] Reading from 7: [0-1][0-3] -> [2-3][8-11] Reading from 8: [0-1][0-3] -> [4-5][8-11] ________ TestAccuracyAgainstOldCollect.test_new_collect_indexing_slice _________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_new_collect_indexing_slice(self, tmp_path_factory): # Create temp directory for files test_dir = tmp_path_factory.mktemp("test_data") # Generate some test data ds_list, file_list = create_bout_ds_list( "BOUT.dmp", nxpe=3, nype=3, syn_data_type="linear" ) for temp_ds, file_name in zip(ds_list, file_list): temp_ds.to_netcdf(test_dir.joinpath(file_name)) var = "n" indexers = ["tind", "xind", "yind", "zind"] ind_list = [slice(0, 4, 2), slice(0, 4)] for kwarg in indexers: for ind_arg in ind_list: # Extracting a the first index of each dimension for comparison expected = old_collect(var, path=test_dir, **{kwarg: ind_arg}) # Test against backwards compatible collect function > actual = new_collect(var, path=test_dir, **{kwarg: ind_arg}) xbout/tests/test_against_collect.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:497: in collect ds, _ = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- mxsub = 2 mysub = 4 mz = 7 nxpe = 3, nype = 3, npes = 9 Reading from 0: [0-1][0-3] -> [0-1][0-3] Reading from 1: [0-1][0-3] -> [2-3][0-3] Reading from 2: [0-1][0-3] -> [4-5][0-3] Reading from 3: [0-1][0-3] -> [0-1][4-7] Reading from 4: [0-1][0-3] -> [2-3][4-7] Reading from 5: [0-1][0-3] -> [4-5][4-7] Reading from 6: [0-1][0-3] -> [0-1][8-11] Reading from 7: [0-1][0-3] -> [2-3][8-11] Reading from 8: [0-1][0-3] -> [4-5][8-11] _________ TestBoutDataArrayMethods.test_remove_yboundaries[False-0-0] __________ self = bout_xyt_example_files = mxg = 0, myg = 0, remove_extra_upper = False @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _________ TestBoutDataArrayMethods.test_remove_yboundaries[False-0-2] __________ self = bout_xyt_example_files = mxg = 2, myg = 0, remove_extra_upper = False @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _________ TestBoutDataArrayMethods.test_remove_yboundaries[False-2-0] __________ self = bout_xyt_example_files = mxg = 0, myg = 2, remove_extra_upper = False @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _________ TestBoutDataArrayMethods.test_remove_yboundaries[False-2-2] __________ self = bout_xyt_example_files = mxg = 2, myg = 2, remove_extra_upper = False @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDataArrayMethods.test_remove_yboundaries[True-0-0] __________ self = bout_xyt_example_files = mxg = 0, myg = 0, remove_extra_upper = True @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDataArrayMethods.test_remove_yboundaries[True-0-2] __________ self = bout_xyt_example_files = mxg = 2, myg = 0, remove_extra_upper = True @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDataArrayMethods.test_remove_yboundaries[True-2-0] __________ self = bout_xyt_example_files = mxg = 0, myg = 2, remove_extra_upper = True @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDataArrayMethods.test_remove_yboundaries[True-2-2] __________ self = bout_xyt_example_files = mxg = 2, myg = 2, remove_extra_upper = True @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) @pytest.mark.parametrize( "remove_extra_upper", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_remove_yboundaries( self, bout_xyt_example_files, mxg, myg, remove_extra_upper ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDataArrayMethods.test_to_field_aligned_dask[False] __________ self = bout_xyt_example_files = permute_dims = False @pytest.mark.parametrize( "permute_dims", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_to_field_aligned_dask(self, bout_xyt_example_files, permute_dims): nz = 6 dataset_list = bout_xyt_example_files( None, lengths=(3, 3, 4, nz), nxpe=1, nype=1, nt=1 ) with pytest.warns(UserWarning): ds = open_boutdataset( datapath=dataset_list, inputfilepath=None, keep_xboundaries=False ) ds["psixy"] = ds["x"] ds["Rxy"] = ds["x"] ds["Zxy"] = ds["y"] ds = apply_geometry(ds, "toroidal") # set up test variable n = ds["n"].load() zShift = ds["zShift"].load() for t in range(ds.sizes["t"]): for x in range(ds.sizes["x"]): for y in range(ds.sizes["theta"]): zShift[x, y] = ( (x * ds.sizes["theta"] + y) * 2.0 * np.pi / ds.sizes["zeta"] ) for z in range(nz): n[t, x, y, z] = 1000.0 * t + 100.0 * x + 10.0 * y + z # The above loop required the call to .load(), but that turned the data into a # numpy array. Now convert back to daks > n = n.chunk({"t": 1}) xbout/tests/test_boutdataarray.py:239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/xarray/core/dataarray.py:1458: in chunk ds = self._to_temp_dataset().chunk( /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Read in: Contains: Size: 6kB Dimensions: (t: 3, x: 3, y: 4, z: 6) Coordinates: dx (x, y) float64 96B 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 dy (x, y) float64 96B 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 dz float64 8B 1.047 * t (t) float64 24B 0.0 10.0 20.0 * x (x) int64 24B 0 1 2 * y (y) float64 32B 1.0 3.0 5.0 7.0 * z (z) float64 48B 0.0 1.047 2.094 3.142 4.189 5.236 Data variables: (12/21) n (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 T (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 S (t, x, y) float64 288B 1.764 0.9501 0.761 ... 2.163 0.6401 0.9102 g11 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g22 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g33 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ... ... G1 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G2 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G3 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 J (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Bxy (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 zShift (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Attributes: metadata: {'BOUT_VERSION': 4.3, 'use_metric_3d': 0, 'NXPE': 1, 'NYPE': 1... options: None geometry: Metadata: { 'BOUT_VERSION': 4.3, 'MXG': 0, 'MXSUB': 3, 'MYG': 0, 'MYPE': 0, 'MYSUB': 4, 'MZ': 6, 'MZG': 0, 'MZSUB': 6, 'NXPE': 1, 'NYPE': 1, 'NZPE': 1, 'PE_XIND': 0, 'PE_YIND': 0, 'ZMAX': 1.0, 'ZMIN': 0.0, 'bout_tdim': 't', 'bout_xdim': 'x', 'bout_ydim': 'y', 'bout_zdim': 'z', 'fine_interpolation_factor': 8, 'hist_hi': 2, 'is_restart': 0, 'iteration': 2, 'ixseps1': 3, 'ixseps2': 3, 'jyseps1_1': -1, 'jyseps1_2': 1, 'jyseps2_1': 1, 'jyseps2_2': 3, 'keep_xboundaries': 0, 'keep_yboundaries': 0, 'nx': 3, 'ny': 4, 'ny_inner': 2, 'nz': 6, 'tt': 20.0, 'use_metric_3d': 0, 'zperiod': 1} __________ TestBoutDataArrayMethods.test_to_field_aligned_dask[True] ___________ self = bout_xyt_example_files = permute_dims = True @pytest.mark.parametrize( "permute_dims", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_to_field_aligned_dask(self, bout_xyt_example_files, permute_dims): nz = 6 dataset_list = bout_xyt_example_files( None, lengths=(3, 3, 4, nz), nxpe=1, nype=1, nt=1 ) with pytest.warns(UserWarning): ds = open_boutdataset( datapath=dataset_list, inputfilepath=None, keep_xboundaries=False ) ds["psixy"] = ds["x"] ds["Rxy"] = ds["x"] ds["Zxy"] = ds["y"] ds = apply_geometry(ds, "toroidal") # set up test variable n = ds["n"].load() zShift = ds["zShift"].load() for t in range(ds.sizes["t"]): for x in range(ds.sizes["x"]): for y in range(ds.sizes["theta"]): zShift[x, y] = ( (x * ds.sizes["theta"] + y) * 2.0 * np.pi / ds.sizes["zeta"] ) for z in range(nz): n[t, x, y, z] = 1000.0 * t + 100.0 * x + 10.0 * y + z # The above loop required the call to .load(), but that turned the data into a # numpy array. Now convert back to daks > n = n.chunk({"t": 1}) xbout/tests/test_boutdataarray.py:239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/xarray/core/dataarray.py:1458: in chunk ds = self._to_temp_dataset().chunk( /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Read in: Contains: Size: 6kB Dimensions: (t: 3, x: 3, y: 4, z: 6) Coordinates: dx (x, y) float64 96B 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 dy (x, y) float64 96B 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 dz float64 8B 1.047 * t (t) float64 24B 0.0 10.0 20.0 * x (x) int64 24B 0 1 2 * y (y) float64 32B 1.0 3.0 5.0 7.0 * z (z) float64 48B 0.0 1.047 2.094 3.142 4.189 5.236 Data variables: (12/21) n (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 T (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 S (t, x, y) float64 288B 1.764 0.9501 0.761 ... 2.163 0.6401 0.9102 g11 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g22 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g33 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ... ... G1 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G2 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G3 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 J (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Bxy (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 zShift (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Attributes: metadata: {'BOUT_VERSION': 4.3, 'use_metric_3d': 0, 'NXPE': 1, 'NYPE': 1... options: None geometry: Metadata: { 'BOUT_VERSION': 4.3, 'MXG': 0, 'MXSUB': 3, 'MYG': 0, 'MYPE': 0, 'MYSUB': 4, 'MZ': 6, 'MZG': 0, 'MZSUB': 6, 'NXPE': 1, 'NYPE': 1, 'NZPE': 1, 'PE_XIND': 0, 'PE_YIND': 0, 'ZMAX': 1.0, 'ZMIN': 0.0, 'bout_tdim': 't', 'bout_xdim': 'x', 'bout_ydim': 'y', 'bout_zdim': 'z', 'fine_interpolation_factor': 8, 'hist_hi': 2, 'is_restart': 0, 'iteration': 2, 'ixseps1': 3, 'ixseps2': 3, 'jyseps1_1': -1, 'jyseps1_2': 1, 'jyseps2_1': 1, 'jyseps2_2': 3, 'keep_xboundaries': 0, 'keep_yboundaries': 0, 'nx': 3, 'ny': 4, 'ny_inner': 2, 'nz': 6, 'tt': 20.0, 'use_metric_3d': 0, 'zperiod': 1} ________ TestBoutDataArrayMethods.test_interpolate_parallel_region_core ________ self = bout_xyt_example_files = @pytest.mark.long def test_interpolate_parallel_region_core(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:575: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __ TestBoutDataArrayMethods.test_interpolate_parallel_region_core_change_n[2] __ self = bout_xyt_example_files = res_factor = 2 @pytest.mark.parametrize( "res_factor", [ pytest.param(2, marks=pytest.mark.long), 3, pytest.param(7, marks=pytest.mark.long), pytest.param(18, marks=pytest.mark.long), ], ) def test_interpolate_parallel_region_core_change_n( self, bout_xyt_example_files, res_factor ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:633: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __ TestBoutDataArrayMethods.test_interpolate_parallel_region_core_change_n[3] __ self = bout_xyt_example_files = res_factor = 3 @pytest.mark.parametrize( "res_factor", [ pytest.param(2, marks=pytest.mark.long), 3, pytest.param(7, marks=pytest.mark.long), pytest.param(18, marks=pytest.mark.long), ], ) def test_interpolate_parallel_region_core_change_n( self, bout_xyt_example_files, res_factor ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:633: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __ TestBoutDataArrayMethods.test_interpolate_parallel_region_core_change_n[7] __ self = bout_xyt_example_files = res_factor = 7 @pytest.mark.parametrize( "res_factor", [ pytest.param(2, marks=pytest.mark.long), 3, pytest.param(7, marks=pytest.mark.long), pytest.param(18, marks=pytest.mark.long), ], ) def test_interpolate_parallel_region_core_change_n( self, bout_xyt_example_files, res_factor ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:633: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDataArrayMethods.test_interpolate_parallel_region_core_change_n[18] __ self = bout_xyt_example_files = res_factor = 18 @pytest.mark.parametrize( "res_factor", [ pytest.param(2, marks=pytest.mark.long), 3, pytest.param(7, marks=pytest.mark.long), pytest.param(18, marks=pytest.mark.long), ], ) def test_interpolate_parallel_region_core_change_n( self, bout_xyt_example_files, res_factor ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:633: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestBoutDataArrayMethods.test_interpolate_parallel_region_sol _________ self = bout_xyt_example_files = @pytest.mark.long def test_interpolate_parallel_region_sol(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:685: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____ TestBoutDataArrayMethods.test_interpolate_parallel_region_singlenull _____ self = bout_xyt_example_files = def test_interpolate_parallel_region_singlenull(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=3, nt=1, grid="grid", guards={"y": 2}, topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:732: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestBoutDataArrayMethods.test_interpolate_parallel ______________ self = bout_xyt_example_files = def test_interpolate_parallel(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=3, nt=1, grid="grid", guards={"y": 2}, topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:804: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestBoutDataArrayMethods.test_interpolate_parallel_sol ____________ self = bout_xyt_example_files = def test_interpolate_parallel_sol(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=1, nt=1, grid="grid", guards={"y": 2}, topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:858: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______ TestBoutDataArrayMethods.test_interpolate_parallel_toroidal_points ______ self = bout_xyt_example_files = def test_interpolate_parallel_toroidal_points(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=3, nt=1, grid="grid", guards={"y": 2}, topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:910: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ___ TestBoutDataArrayMethods.test_interpolate_parallel_toroidal_points_list ____ self = bout_xyt_example_files = def test_interpolate_parallel_toroidal_points_list(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 16, 3), nxpe=1, nype=3, nt=1, grid="grid", guards={"y": 2}, topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:935: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________________ TestBoutDataArrayMethods.test_ddy _______________________ self = bout_xyt_example_files = def test_ddy(self, bout_xyt_example_files): ny = 64 dataset_list, gridfilepath = bout_xyt_example_files( None, lengths=(2, 3, ny, 4), nxpe=1, nype=1, grid="grid", ) > ds = open_boutdataset( datapath=dataset_list, geometry="toroidal", gridfilepath=gridfilepath ) xbout/tests/test_boutdataarray.py:1076: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestBoutDataArrayMethods.test_derivatives_doublenull _____________ self = bout_xyt_example_files = def test_derivatives_doublenull(self, bout_xyt_example_files): # Check function does not error on double-null topology dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": 2, "y": 2}, topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataarray.py:1139: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestBoutDatasetMethods.test_remove_yboundaries[0-0] ______________ self = bout_xyt_example_files = mxg = 0, myg = 0 @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) def test_remove_yboundaries(self, bout_xyt_example_files, mxg, myg): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataset.py:102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestBoutDatasetMethods.test_remove_yboundaries[0-2] ______________ self = bout_xyt_example_files = mxg = 2, myg = 0 @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) def test_remove_yboundaries(self, bout_xyt_example_files, mxg, myg): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataset.py:102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestBoutDatasetMethods.test_remove_yboundaries[2-0] ______________ self = bout_xyt_example_files = mxg = 0, myg = 2 @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) def test_remove_yboundaries(self, bout_xyt_example_files, mxg, myg): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataset.py:102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestBoutDatasetMethods.test_remove_yboundaries[2-2] ______________ self = bout_xyt_example_files = mxg = 2, myg = 2 @pytest.mark.parametrize("mxg", [0, pytest.param(2, marks=pytest.mark.long)]) @pytest.mark.parametrize("myg", [pytest.param(0, marks=pytest.mark.long), 2]) def test_remove_yboundaries(self, bout_xyt_example_files, mxg, myg): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=6, nt=1, grid="grid", guards={"x": mxg, "y": myg}, topology="connected-double-null", syn_data_type="linear", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_yboundaries=True, ) xbout/tests/test_boutdataset.py:102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestBoutDatasetMethods.test_to_field_aligned_dask _______________ self = bout_xyt_example_files = def test_to_field_aligned_dask(self, bout_xyt_example_files): nz = 6 dataset_list = bout_xyt_example_files( None, lengths=(3, 3, 4, nz), nxpe=1, nype=1, nt=1 ) with pytest.warns(UserWarning): ds = open_boutdataset( datapath=dataset_list, inputfilepath=None, keep_xboundaries=False ) ds["psixy"] = ds["x"] ds["Rxy"] = ds["x"] ds["Zxy"] = ds["y"] ds = apply_geometry(ds, "toroidal") # set up test variable n = ds["n"].load() zShift = ds["zShift"].load() for t in range(ds.sizes["t"]): for x in range(ds.sizes["x"]): for y in range(ds.sizes["theta"]): zShift[x, y] = ( (x * ds.sizes["theta"] + y) * 2.0 * np.pi / ds.sizes["zeta"] ) for z in range(nz): n[t, x, y, z] = 1000.0 * t + 100.0 * x + 10.0 * y + z # The above loop required the call to .load(), but that turned the data into a # numpy array. Now convert back to dask > n = n.chunk({"t": 1}) xbout/tests/test_boutdataset.py:292: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.14/site-packages/xarray/core/dataarray.py:1458: in chunk ds = self._to_temp_dataset().chunk( /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Read in: Contains: Size: 6kB Dimensions: (t: 3, x: 3, y: 4, z: 6) Coordinates: dx (x, y) float64 96B 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 dy (x, y) float64 96B 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 dz float64 8B 1.047 * t (t) float64 24B 0.0 10.0 20.0 * x (x) int64 24B 0 1 2 * y (y) float64 32B 1.0 3.0 5.0 7.0 * z (z) float64 48B 0.0 1.047 2.094 3.142 4.189 5.236 Data variables: (12/21) n (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 T (t, x, y, z) float64 2kB 1.764 0.4002 0.9787 ... -0.9444 -0.41 S (t, x, y) float64 288B 1.764 0.9501 0.761 ... 2.163 0.6401 0.9102 g11 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g22 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 g33 (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ... ... G1 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G2 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 G3 (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 J (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Bxy (x, y) float64 96B 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 zShift (x, y) float64 96B 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Attributes: metadata: {'BOUT_VERSION': 4.3, 'use_metric_3d': 0, 'NXPE': 1, 'NYPE': 1... options: None geometry: Metadata: { 'BOUT_VERSION': 4.3, 'MXG': 0, 'MXSUB': 3, 'MYG': 0, 'MYPE': 0, 'MYSUB': 4, 'MZ': 6, 'MZG': 0, 'MZSUB': 6, 'NXPE': 1, 'NYPE': 1, 'NZPE': 1, 'PE_XIND': 0, 'PE_YIND': 0, 'ZMAX': 1.0, 'ZMIN': 0.0, 'bout_tdim': 't', 'bout_xdim': 'x', 'bout_ydim': 'y', 'bout_zdim': 'z', 'fine_interpolation_factor': 8, 'hist_hi': 2, 'is_restart': 0, 'iteration': 2, 'ixseps1': 3, 'ixseps2': 3, 'jyseps1_1': -1, 'jyseps1_2': 1, 'jyseps2_1': 1, 'jyseps2_2': 3, 'keep_xboundaries': 0, 'keep_yboundaries': 0, 'nx': 3, 'ny': 4, 'ny_inner': 2, 'nz': 6, 'tt': 20.0, 'use_metric_3d': 0, 'zperiod': 1} _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate0-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = ('n', 'T') @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_parallel[vars_to_interpolate1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True vars_to_interpolate = Ellipsis @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "vars_to_interpolate", [("n", "T"), pytest.param(..., marks=pytest.mark.long)] ) def test_interpolate_parallel( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, vars_to_interpolate, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_boutdataset.py:649: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______ TestBoutDatasetMethods.test_interpolate_parallel_all_variables_arg ______ self = bout_xyt_example_files = def test_interpolate_parallel_all_variables_arg(self, bout_xyt_example_files): # Check that passing 'variables=...' to interpolate_parallel() does actually # interpolate all the variables dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=1, nype=1, nt=1, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal" ) xbout/tests/test_boutdataset.py:1105: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ___________ TestBoutDatasetMethods.test_interpolate_parallel_limiter ___________ self = bout_xyt_example_files = def test_interpolate_parallel_limiter( self, bout_xyt_example_files, ): # This test checks that the regions created in the new high-resolution Dataset by # interpolate_parallel are correct. # This test does not test the accuracy of the parallel interpolation (there are # other tests for that). # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards={"x": 2, "y": 2}, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=True, keep_yboundaries=False, ) xbout/tests/test_boutdataset.py:1161: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions __________ TestBoutDatasetMethods.test_interpolate_from_unstructured ___________ self = bout_xyt_example_files = def test_interpolate_from_unstructured(self, bout_xyt_example_files): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, grid="grid", topology="upper-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal" ) xbout/tests/test_boutdataset.py:1731: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestBoutDatasetMethods.test_interpolate_from_unstructured_unstructured_output _ self = bout_xyt_example_files = def test_interpolate_from_unstructured_unstructured_output( self, bout_xyt_example_files ): dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, grid="grid", topology="lower-disconnected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal" ) xbout/tests/test_boutdataset.py:1782: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________________________ TestSave.test_save_all ____________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_save_all(self, tmp_path_factory, bout_xyt_example_files): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=5, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:1951: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_save_all(self, tmp_path_factory, bout_xyt_example_files): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=5, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:1950: Failed ________________________ TestSave.test_reload_all[None] ________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_all(self, tmp_path_factory, bout_xyt_example_files, geometry): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=5, nt=1, grid="grid", write_to_disk=True ) gridpath = path.parent.joinpath("grid.nc") # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=None if geometry is None else gridpath, ) xbout/tests/test_boutdataset.py:1976: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_all(self, tmp_path_factory, bout_xyt_example_files, geometry): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=5, nt=1, grid="grid", write_to_disk=True ) gridpath = path.parent.joinpath("grid.nc") # Load it as a boutdataset if geometry is None: > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:1975: Failed ______________________ TestSave.test_reload_all[toroidal] ______________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = 'toroidal' @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_all(self, tmp_path_factory, bout_xyt_example_files, geometry): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=5, nt=1, grid="grid", write_to_disk=True ) gridpath = path.parent.joinpath("grid.nc") # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=None if geometry is None else gridpath, ) else: > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=None if geometry is None else gridpath, ) xbout/tests/test_boutdataset.py:1983: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ___________________ TestSave.test_save_dtype[False-float64] ____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = False @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:2033: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = False @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2032: Failed ___________________ TestSave.test_save_dtype[False-float32] ____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = False @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:2033: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = False @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2032: Failed ____________________ TestSave.test_save_dtype[True-float64] ____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = True @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:2033: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = True @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2032: Failed ____________________ TestSave.test_save_dtype[True-float32] ____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = True @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:2033: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = save_dtype = , separate_vars = True @pytest.mark.parametrize("save_dtype", [np.float64, np.float32]) @pytest.mark.parametrize( "separate_vars", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_save_dtype( self, tmp_path_factory, bout_xyt_example_files, save_dtype, separate_vars ): # Create data path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2032: Failed ____________________ TestSave.test_save_separate_variables _____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_save_separate_variables(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset with pytest.warns(UserWarning): > original = open_boutdataset(datapath=path, inputfilepath=None) xbout/tests/test_boutdataset.py:2061: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_save_separate_variables(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, write_to_disk=True ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2060: Failed ________________ TestSave.test_reload_separate_variables[None] _________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) xbout/tests/test_boutdataset.py:2102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2101: Failed ______________ TestSave.test_reload_separate_variables[toroidal] _______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = 'toroidal' @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) else: > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) xbout/tests/test_boutdataset.py:2109: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ___________ TestSave.test_reload_separate_variables_time_split[None] ___________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables_time_split( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) xbout/tests/test_boutdataset.py:2149: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = None @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables_time_split( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2148: Failed _________ TestSave.test_reload_separate_variables_time_split[toroidal] _________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = geometry = 'toroidal' @pytest.mark.parametrize("geometry", [None, "toroidal"]) def test_reload_separate_variables_time_split( self, tmp_path_factory, bout_xyt_example_files, geometry ): if geometry is not None: grid = "grid" else: grid = None path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, grid=grid, write_to_disk=True ) if grid is not None: gridpath = path.parent.joinpath("grid.nc") else: gridpath = None # Load it as a boutdataset if geometry is None: with pytest.warns(UserWarning): original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) else: > original = open_boutdataset( datapath=path, inputfilepath=None, geometry=geometry, gridfilepath=gridpath, ) xbout/tests/test_boutdataset.py:2156: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ____________________ TestSaveRestart.test_to_restart[None] _____________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = tind = None @pytest.mark.parametrize("tind", [None, pytest.param(1, marks=pytest.mark.long)]) def test_to_restart(self, tmp_path_factory, bout_xyt_example_files, tind): nxpe = 3 nype = 2 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe, nype=nype, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = tind = None @pytest.mark.parametrize("tind", [None, pytest.param(1, marks=pytest.mark.long)]) def test_to_restart(self, tmp_path_factory, bout_xyt_example_files, tind): nxpe = 3 nype = 2 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe, nype=nype, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2202: Failed ______________________ TestSaveRestart.test_to_restart[1] ______________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = tind = 1 @pytest.mark.parametrize("tind", [None, pytest.param(1, marks=pytest.mark.long)]) def test_to_restart(self, tmp_path_factory, bout_xyt_example_files, tind): nxpe = 3 nype = 2 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe, nype=nype, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = tind = 1 @pytest.mark.parametrize("tind", [None, pytest.param(1, marks=pytest.mark.long)]) def test_to_restart(self, tmp_path_factory, bout_xyt_example_files, tind): nxpe = 3 nype = 2 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe, nype=nype, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2202: Failed __________________ TestSaveRestart.test_to_restart_change_npe __________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_to_restart_change_npe(self, tmp_path_factory, bout_xyt_example_files): nxpe_in = 3 nype_in = 2 nxpe = 2 nype = 4 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2281: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_to_restart_change_npe(self, tmp_path_factory, bout_xyt_example_files): nxpe_in = 3 nype_in = 2 nxpe = 2 nype = 4 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, lengths=[nt, 4, 4, 7], guards={"x": 2, "y": 2}, write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2280: Failed ____________ TestSaveRestart.test_to_restart_change_npe_doublenull _____________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = @pytest.mark.long def test_to_restart_change_npe_doublenull( self, tmp_path_factory, bout_xyt_example_files ): nxpe_in = 3 nype_in = 6 nxpe = 1 nype = 12 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(nt, 5, 4, 7), topology="upper-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2354: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = @pytest.mark.long def test_to_restart_change_npe_doublenull( self, tmp_path_factory, bout_xyt_example_files ): nxpe_in = 3 nype_in = 6 nxpe = 1 nype = 12 nt = 6 path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(nt, 5, 4, 7), topology="upper-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2353: Failed ___ TestSaveRestart.test_to_restart_change_npe_doublenull_expect_fail[npes0] ___ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = npes = (2, 6) @pytest.mark.long @pytest.mark.parametrize("npes", [(2, 6), (3, 4)]) def test_to_restart_change_npe_doublenull_expect_fail( self, tmp_path_factory, bout_xyt_example_files, npes ): nxpe_in = 3 nype_in = 6 nxpe, nype = npes path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(6, 5, 4, 7), topology="lower-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2425: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = npes = (2, 6) @pytest.mark.long @pytest.mark.parametrize("npes", [(2, 6), (3, 4)]) def test_to_restart_change_npe_doublenull_expect_fail( self, tmp_path_factory, bout_xyt_example_files, npes ): nxpe_in = 3 nype_in = 6 nxpe, nype = npes path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(6, 5, 4, 7), topology="lower-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2424: Failed ___ TestSaveRestart.test_to_restart_change_npe_doublenull_expect_fail[npes1] ___ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = npes = (3, 4) @pytest.mark.long @pytest.mark.parametrize("npes", [(2, 6), (3, 4)]) def test_to_restart_change_npe_doublenull_expect_fail( self, tmp_path_factory, bout_xyt_example_files, npes ): nxpe_in = 3 nype_in = 6 nxpe, nype = npes path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(6, 5, 4, 7), topology="lower-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset with pytest.warns(UserWarning): > ds = open_boutdataset(datapath=path) xbout/tests/test_boutdataset.py:2425: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = npes = (3, 4) @pytest.mark.long @pytest.mark.parametrize("npes", [(2, 6), (3, 4)]) def test_to_restart_change_npe_doublenull_expect_fail( self, tmp_path_factory, bout_xyt_example_files, npes ): nxpe_in = 3 nype_in = 6 nxpe, nype = npes path = bout_xyt_example_files( tmp_path_factory, nxpe=nxpe_in, nype=nype_in, nt=1, guards={"x": 2, "y": 2}, lengths=(6, 5, 4, 7), topology="lower-disconnected-double-null", write_to_disk=True, ) # Load it as a boutdataset > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_boutdataset.py:2424: Failed _________________ TestSaveRestart.test_from_restart_to_restart _________________ self = tmp_path = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/test_from_restart_to_restart0') def test_from_restart_to_restart(self, tmp_path): datapath = Path(__file__).parent.joinpath( "data", "restart", "BOUT.restart.*.nc" ) > ds = open_boutdataset(datapath, keep_xboundaries=True, keep_yboundaries=True) xbout/tests/test_boutdataset.py:2438: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError _________________________ TestOpenGrid.test_open_grid __________________________ self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata0/grid.nc') def test_open_grid(self, create_example_grid_file): example_grid = create_example_grid_file with pytest.warns(UserWarning): > result = open_boutdataset(datapath=example_grid) xbout/tests/test_grid.py:39: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:289: in open_boutdataset ds = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata0/grid.nc') def test_open_grid(self, create_example_grid_file): example_grid = create_example_grid_file > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_grid.py:38: Failed ____________________ TestOpenGrid.test_open_grid_extra_dims ____________________ self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata1/grid.nc') tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') def test_open_grid_extra_dims(self, create_example_grid_file, tmp_path_factory): example_grid = open_dataset(create_example_grid_file) new_var = DataArray( name="new", data=[[1, 2], [8, 9], [16, 17], [27, 28], [37, 38]], dims=["x", "w"], ) dodgy_grid_directory = tmp_path_factory.mktemp("dodgy_grid") dodgy_grid_path = dodgy_grid_directory.joinpath("dodgy_grid.nc") merge([example_grid, new_var]).to_netcdf(dodgy_grid_path, engine="netcdf4") with pytest.warns( UserWarning, match="drop all variables containing " "the dimensions 'w'" ): > result = open_boutdataset(datapath=dodgy_grid_path) xbout/tests/test_grid.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:289: in open_boutdataset ds = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError __________________ TestOpenGrid.test_open_grid_apply_geometry __________________ self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata2/grid.nc') def test_open_grid_apply_geometry(self, create_example_grid_file): @register_geometry(name="Schwarzschild") def add_schwarzschild_coords(ds, coordinates=None): ds["event_horizon"] = 4.0 ds["event_horizon"].attrs = ds.attrs.copy() return ds example_grid = create_example_grid_file > result = result = open_boutdataset( datapath=example_grid, geometry="Schwarzschild" ) xbout/tests/test_grid.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:289: in open_boutdataset ds = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ______________________ TestOpenGrid.test_open_grid_chunks ______________________ self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata3/grid.nc') def test_open_grid_chunks(self, create_example_grid_file): example_grid = create_example_grid_file with pytest.warns(UserWarning): > result = open_boutdataset(datapath=example_grid, chunks={"x": 4, "y": 5}) xbout/tests/test_grid.py:86: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:289: in open_boutdataset ds = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata3/grid.nc') def test_open_grid_chunks(self, create_example_grid_file): example_grid = create_example_grid_file > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_grid.py:85: Failed ________________ TestOpenGrid.test_open_grid_chunks_not_in_grid ________________ self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata4/grid.nc') def test_open_grid_chunks_not_in_grid(self, create_example_grid_file): example_grid = create_example_grid_file with pytest.warns(UserWarning): > result = open_boutdataset( datapath=example_grid, chunks={"anonexistantdimension": 5} ) xbout/tests/test_grid.py:94: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:289: in open_boutdataset ds = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = create_example_grid_file = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata4/grid.nc') def test_open_grid_chunks_not_in_grid(self, create_example_grid_file): example_grid = create_example_grid_file > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_grid.py:93: Failed _____________________________ test_set_fci_coords ______________________________ create_example_grid_file_fci = PosixPath('/tmp/pytest-of-mockbuild/pytest-0/griddata5/fci.nc') create_example_files_fci = [ Size: 35kB Dimensions: (t: 2, x: 6, y: 7, z: 4) Dimensions without coordinates: t, x, y, z Da...nt64 8B 1 hist_hi int64 8B 1 t_array (t) float64 16B 0.0 10.0 tt float64 8B 10.0] def test_set_fci_coords(create_example_grid_file_fci, create_example_files_fci): grid = create_example_grid_file_fci data = create_example_files_fci > ds = open_boutdataset(data, gridfilepath=grid, geometry="fci") xbout/tests/test_load.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying fci geometry conventions __________________________ TestOpen.test_single_file ___________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_single_file(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:295: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_single_file(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=1, nt=1, write_to_disk=True ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:294: Failed _________________________ TestOpen.test_squashed_file __________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_squashed_file(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, squashed=True, write_to_disk=True ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:318: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_squashed_file(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, squashed=True, write_to_disk=True ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:317: Failed _____________ TestOpen.test_squashed_doublenull_file[False-False] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = False, keep_yboundaries = False @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) with pytest.warns(UserWarning): > ds = open_boutdataset( datapath=path, keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_load.py:399: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = False, keep_yboundaries = False @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:398: Failed ______________ TestOpen.test_squashed_doublenull_file[False-True] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = True, keep_yboundaries = False @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) with pytest.warns(UserWarning): > ds = open_boutdataset( datapath=path, keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_load.py:399: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = True, keep_yboundaries = False @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:398: Failed ______________ TestOpen.test_squashed_doublenull_file[True-False] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = False, keep_yboundaries = True @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) with pytest.warns(UserWarning): > ds = open_boutdataset( datapath=path, keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_load.py:399: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = False, keep_yboundaries = True @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:398: Failed ______________ TestOpen.test_squashed_doublenull_file[True-True] _______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = True, keep_yboundaries = True @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) with pytest.warns(UserWarning): > ds = open_boutdataset( datapath=path, keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_load.py:399: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = keep_xboundaries = True, keep_yboundaries = True @pytest.mark.parametrize( "keep_xboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) @pytest.mark.parametrize( "keep_yboundaries", [False, pytest.param(True, marks=pytest.mark.long)] ) def test_squashed_doublenull_file( self, tmp_path_factory, bout_xyt_example_files, keep_xboundaries, keep_yboundaries, ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=6, nt=1, lengths=(6, 4, 4, 7), guards={"x": 2, "y": 2}, squashed=True, write_to_disk=True, topology="upper-disconnected-double-null", ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:398: Failed ________________________ TestOpen.test_combine_along_x _________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_combine_along_x(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, syn_data_type="stepped", write_to_disk=True, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:423: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_combine_along_x(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, syn_data_type="stepped", write_to_disk=True, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:422: Failed ________________________ TestOpen.test_combine_along_y _________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_combine_along_y(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=3, nt=1, syn_data_type="stepped", write_to_disk=True, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:459: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_combine_along_y(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=1, nype=3, nt=1, syn_data_type="stepped", write_to_disk=True, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:458: Failed _____________ TestOpen.test_combine_along_xy[lengths0-False-False] _____________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = False, metric_3D = False, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = False, metric_3D = False, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed _____________ TestOpen.test_combine_along_xy[lengths0-True-False] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = False, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = False, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed ______________ TestOpen.test_combine_along_xy[lengths0-True-True] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = True, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = True, lengths = (6, 2, 4, 7) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed _____________ TestOpen.test_combine_along_xy[lengths1-False-False] _____________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = False, metric_3D = False, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = False, metric_3D = False, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed _____________ TestOpen.test_combine_along_xy[lengths1-True-False] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = False, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = False, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed ______________ TestOpen.test_combine_along_xy[lengths1-True-True] ______________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = True, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) with pytest.warns(UserWarning): > actual = open_boutdataset(datapath=path, keep_xboundaries=False) xbout/tests/test_load.py:505: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = bout_v5 = True, metric_3D = True, lengths = (6, 2, 4, 1) @pytest.mark.parametrize( "bout_v5,metric_3D", [(False, False), (True, False), (True, True)] ) @pytest.mark.parametrize("lengths", [(6, 2, 4, 7), (6, 2, 4, 1)]) def test_combine_along_xy( self, tmp_path_factory, bout_xyt_example_files, bout_v5, metric_3D, lengths ): path = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=3, nt=1, lengths=lengths, syn_data_type="stepped", write_to_disk=True, bout_v5=bout_v5, metric_3D=metric_3D, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:504: Failed ____________________________ TestOpen.test_toroidal ____________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_toroidal(self, tmp_path_factory, bout_xyt_example_files): # actually write these to disk to test the loading fully path = bout_xyt_example_files( tmp_path_factory, nxpe=3, nype=3, nt=1, syn_data_type="stepped", grid="grid", write_to_disk=True, ) > actual = open_boutdataset( datapath=path, geometry="toroidal", gridfilepath=path.parent.joinpath("grid.nc"), ) xbout/tests/test_load.py:563: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError _____________________________ TestOpen.test_salpha _____________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_salpha(self, tmp_path_factory, bout_xyt_example_files): path = bout_xyt_example_files( tmp_path_factory, nxpe=3, nype=3, nt=1, syn_data_type="stepped", grid="grid", write_to_disk=True, ) > actual = open_boutdataset( datapath=path, geometry="s-alpha", gridfilepath=path.parent.joinpath("grid.nc"), ) xbout/tests/test_load.py:592: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ___________________________ TestOpen.test_drop_vars ____________________________ self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_drop_vars(self, tmp_path_factory, bout_xyt_example_files): datapath = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, syn_data_type="stepped", write_to_disk=True, ) with pytest.warns(UserWarning): > ds = open_boutdataset( datapath=datapath, keep_xboundaries=False, drop_variables=["T"] ) xbout/tests/test_load.py:621: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError During handling of the above exception, another exception occurred: self = tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=, _basetemp=PosixPath('/tmp/pytest-of-mockbuild/pytest-0'), _retention_count=3, _retention_policy='all') bout_xyt_example_files = def test_drop_vars(self, tmp_path_factory, bout_xyt_example_files): datapath = bout_xyt_example_files( tmp_path_factory, nxpe=4, nype=1, nt=1, syn_data_type="stepped", write_to_disk=True, ) > with pytest.warns(UserWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. xbout/tests/test_load.py:620: Failed ____________________________ TestOpen.test_restarts ____________________________ self = def test_restarts(self): datapath = Path(__file__).parent.joinpath( "data", "restart", "BOUT.restart.*.nc" ) > ds = open_boutdataset(datapath, keep_xboundaries=True, keep_yboundaries=True) xbout/tests/test_load.py:635: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:279: in open_boutdataset ds, remove_yboundaries = _auto_open_mfboutdataset( xbout/load.py:651: in _auto_open_mfboutdataset ds = xr.open_mfdataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:1635: in open_mfdataset datasets = [open_(p, **open_kwargs) for p in paths1d] /usr/lib/python3.14/site-packages/xarray/backends/api.py:693: in open_dataset ds = _dataset_from_backend_dataset( /usr/lib/python3.14/site-packages/xarray/backends/api.py:402: in _dataset_from_backend_dataset ds = _chunk_ds( /usr/lib/python3.14/site-packages/xarray/backends/api.py:350: in _chunk_ds chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestPlot.test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[0-False-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[0-False-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[0-False-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[0-False-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-False-True-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-False-True-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-False-True-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-False-True-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-True-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-True-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-True-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[0-True-True-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[1-False-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[1-False-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[1-False-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[1-False-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-False-True-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-False-True-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-False-True-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-False-True-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-True-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-True-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-True-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[1-True-True-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[2-False-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[2-False-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[2-False-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestPlot.test_region_limiter[2-False-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-False-True-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-False-True-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-False-True-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-False-True-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-True-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-True-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-True-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestPlot.test_region_limiter[2-True-True-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 2 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [ 0, pytest.param(1, marks=pytest.mark.long), pytest.param(2, marks=pytest.mark.long), ], ) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 5, 4, 3), nxpe=1, nype=1, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_plot.py:172: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-False-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-False-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-False-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-False-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[True-False-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[True-False-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[True-False-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[True-False-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-True-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-True-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-True-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_core[False-True-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_core[True-True-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_core[True-True-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_core[True-True-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_core[True-True-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_core( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="core", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_sol[False-False-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_sol[False-False-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_sol[False-False-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_sol[False-False-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-False-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-False-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-False-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-False-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[False-True-guards0] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[False-True-guards1] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[False-True-guards2] ________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[False-True-guards3] ________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-True-guards0] _________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-True-guards1] _________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-True-guards2] _________________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________________ TestRegion.test_region_sol[True-True-guards3] _________________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_sol( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note need to use more than (3*MXG,3*MYG) points per output file dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="sol", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[0-False-False-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[0-False-False-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[0-False-False-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[0-False-False-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-False-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-False-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-False-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-False-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-False-True-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-False-True-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-False-True-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-False-True-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-True-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-True-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-True-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[0-True-True-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True region_guards = 0 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[1-False-False-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[1-False-False-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[1-False-False-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_limiter[1-False-False-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-False-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-False-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-False-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-False-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-False-True-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-False-True-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-False-True-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-False-True-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-True-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-True-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-True-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_limiter[1-True-True-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True region_guards = 1 @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize("region_guards", [0, 1]) def test_region_limiter( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, region_guards, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="limiter", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-False-guards0] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-False-guards1] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-False-guards2] ______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-False-guards3] ______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[True-False-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[True-False-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[True-False-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[True-False-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-True-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-True-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-True-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ______________ TestRegion.test_region_xpoint[False-True-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_xpoint[True-True-guards0] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_xpoint[True-True-guards1] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_xpoint[True-True-guards2] _______________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______________ TestRegion.test_region_xpoint[True-True-guards3] _______________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_xpoint( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="xpoint", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:215: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-False-guards0] ____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-False-guards1] ____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-False-guards2] ____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-False-guards3] ____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[True-False-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[True-False-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[True-False-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[True-False-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-True-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-True-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-True-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ____________ TestRegion.test_region_singlenull[False-True-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_singlenull[True-True-guards0] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_singlenull[True-True-guards1] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_singlenull[True-True-guards2] _____________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _____________ TestRegion.test_region_singlenull[True-True-guards3] _____________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_singlenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=4, nt=1, guards=guards, grid="grid", topology="single-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:409: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______ TestRegion.test_region_connecteddoublenull[False-False-guards0] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______ TestRegion.test_region_connecteddoublenull[False-False-guards1] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______ TestRegion.test_region_connecteddoublenull[False-False-guards2] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _______ TestRegion.test_region_connecteddoublenull[False-False-guards3] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-False-guards0] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-False-guards1] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-False-guards2] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-False-guards3] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[False-True-guards0] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[False-True-guards1] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[False-True-guards2] ________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[False-True-guards3] ________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-True-guards0] _________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-True-guards1] _________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-True-guards2] _________ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions ________ TestRegion.test_region_connecteddoublenull[True-True-guards3] _________ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True @pytest.mark.long @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) def test_region_connecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology="connected-double-null", ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:578: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'lower-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 0, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = {'theta': 1, 'x': 1}, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = False with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = False, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards0] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards1] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 0}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards2] _ self = bout_xyt_example_files = guards = {'x': 0, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions _ TestRegion.test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards3] _ self = bout_xyt_example_files = guards = {'x': 2, 'y': 2}, keep_xboundaries = True, keep_yboundaries = True with_guards = 1, dnd_type = 'upper-disconnected-double-null' @pytest.mark.parametrize(params_guards, params_guards_values) @pytest.mark.parametrize(params_boundaries, params_boundaries_values) @pytest.mark.parametrize( "with_guards", [0, {"x": 1}, {"theta": 1}, {"x": 1, "theta": 1}, 1] ) @pytest.mark.parametrize( "dnd_type", ["lower-disconnected-double-null", "upper-disconnected-double-null"] ) def test_region_disconnecteddoublenull_get_one_guard( self, bout_xyt_example_files, guards, keep_xboundaries, keep_yboundaries, with_guards, dnd_type, ): # Note using more than MXG x-direction points and MYG y-direction points per # output file ensures tests for whether boundary cells are present do not fail # when using minimal numbers of processors dataset_list, grid_ds = bout_xyt_example_files( None, lengths=(2, 3, 4, 3), nxpe=3, nype=6, nt=1, guards=guards, grid="grid", topology=dnd_type, ) > ds = open_boutdataset( datapath=dataset_list, gridfilepath=grid_ds, geometry="toroidal", keep_xboundaries=keep_xboundaries, keep_yboundaries=keep_yboundaries, ) xbout/tests/test_region.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xbout/load.py:330: in open_boutdataset grid = _open_grid( xbout/load.py:1179: in _open_grid grid = grid.chunk(grid_chunks) /usr/lib/python3.14/site-packages/xarray/core/dataset.py:2502: in chunk chunkmanager = guess_chunkmanager(chunked_array_type) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ manager = 'dask' def guess_chunkmanager( manager: str | ChunkManagerEntrypoint[Any] | None, ) -> ChunkManagerEntrypoint[Any]: """ Get namespace of chunk-handling methods, guessing from what's available. If the name of a specific ChunkManager is given (e.g. "dask"), then use that. Else use whatever is installed, defaulting to dask if there are multiple options. """ available_chunkmanagers = list_chunkmanagers() if manager is None: if len(available_chunkmanagers) == 1: # use the only option available manager = next(iter(available_chunkmanagers.keys())) else: # use the one in options (default dask) manager = OPTIONS["chunk_manager"] if isinstance(manager, str): if manager not in available_chunkmanagers and manager in KNOWN_CHUNKMANAGERS: > raise ImportError( f"chunk manager {manager!r} is not available." f" Please make sure {KNOWN_CHUNKMANAGERS[manager]!r} is installed" " and importable." E ImportError: chunk manager 'dask' is not available. Please make sure 'dask' is installed and importable. /usr/lib/python3.14/site-packages/xarray/namedarray/parallelcompat.py:116: ImportError ----------------------------- Captured stdout call ----------------------------- Applying toroidal geometry conventions =============================== warnings summary =============================== xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_single_file /usr/lib/python3.14/site-packages/xarray/backends/plugins.py:110: RuntimeWarning: Engine 'bout_adios2' loading failed: No module named 'adios2' external_backend_entrypoints = backends_dict_from_pkg(entrypoints_unique) xbout/tests/test_boutdataarray.py: 32 warnings xbout/tests/test_boutdataset.py: 22 warnings /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/utils.py:861: UserWarning: rename 'y' to 'theta' does not create an index anymore. Try using swap_dims instead or use set_index after rename to create an indexed coordinate. ds = ds.rename({old_name: new_name}) xbout/tests/test_boutdataarray.py: 32 warnings xbout/tests/test_boutdataset.py: 22 warnings /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/utils.py:861: UserWarning: rename 'z' to 'zeta' does not create an index anymore. Try using swap_dims instead or use set_index after rename to create an indexed coordinate. ds = ds.rename({old_name: new_name}) xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_slab xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_CENTRE] xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_XLOW] xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_YLOW] xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_ZLOW] /builddir/build/BUILD/python-xbout-0.3.8-build/xbout-0.3.8/xbout/load.py:342: UserWarning: No geometry type found, no physical coordinates will be added warn("No geometry type found, no physical coordinates will be added") -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ============================== slowest durations =============================== 2.25s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_YLOW] 2.24s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_CENTRE] 2.19s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_ZLOW] 2.14s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_salpha[CELL_XLOW] 1.57s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_integrate_midpoints_slab 0.82s call xbout/tests/test_boutdataset.py::TestSave::test_save_all 0.77s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull_expect_fail[npes0] 0.76s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull 0.67s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-True-False] 0.60s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-True-True] 0.53s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards3] 0.53s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-True-True] 0.52s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-True-False] 0.52s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-False-False] 0.51s call xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-False-False] 0.51s call xbout/tests/test_boutdataset.py::TestSave::test_reload_all[None] 0.51s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards2] 0.42s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_xy 0.41s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_to_cartesian 0.41s call xbout/tests/test_load.py::TestOpen::test_toroidal 0.41s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards2] 0.36s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards0] 0.35s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards1] 0.34s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_from_unstructured 0.34s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards0] 0.34s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards3] 0.34s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards1] 0.33s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards1] 0.33s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards3] 0.33s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards2] 0.33s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards0] 0.33s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards3] 0.33s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards1] 0.33s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards3] 0.33s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards2] 0.33s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards2] 0.32s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards1] 0.32s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards0] 0.32s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards0] 0.32s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_from_unstructured_unstructured_output 0.32s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel_limiter 0.31s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale_float 0.28s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_slice 0.28s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_int 0.28s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart[None] 0.28s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_list 0.28s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls5] 0.28s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls2] 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls4] 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls3] 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_1d_multiline 0.27s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_dataset 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_subplots_adjust 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls0] 0.27s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls1] 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmin_list 0.26s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned[9] 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale_list 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_titles_list 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_1d_default 0.26s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned[9] 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_nrows 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_not_enough_nrowsncols 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmin 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls3] 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_ncols 0.26s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmax_list 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_fps 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls5] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_save_as 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_animate_over 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmax 0.25s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned[8] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls4] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls5] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls2] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls2] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls1] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls0] 0.25s setup xbout/tests/test_animate.py::TestAnimate::test_animate1D 0.24s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned[8] 0.24s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls4] 0.24s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls1] 0.24s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls3] 0.24s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls0] 0.24s setup xbout/tests/test_animate.py::TestAnimate::test_animate2D 0.23s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards3] 0.23s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards1] 0.23s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards0] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards0] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards3] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards2] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards0] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards3] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards2] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards2] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards1] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards0] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards3] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards1] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards3] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards2] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards1] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards2] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards0] 0.22s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[False-9] 0.22s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards1] 0.20s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned[7] 0.20s call xbout/tests/test_boutdataset.py::TestSave::test_save_separate_variables 0.20s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned[7] 0.20s call xbout/tests/test_load.py::TestOpen::test_combine_along_x 0.19s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned[6] 0.19s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned[6] 0.19s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[False-8] 0.19s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[True-9] 0.19s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[True-9] 0.18s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[False-7] 0.18s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[True-8] 0.18s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned_staggered[CELL_XLOW] 0.18s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[False-9] 0.17s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_y 0.17s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_x 0.17s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[True-7] 0.17s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[True-8] 0.17s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned_staggered[CELL_ZLOW] 0.17s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[False-6] 0.17s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[False-8] 0.16s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned_staggered[CELL_YLOW] 0.16s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned_staggered[CELL_XLOW] 0.16s call xbout/tests/test_load.py::TestOpen::test_combine_along_y 0.15s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[False-7] 0.15s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[True-7] 0.15s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned[True-6] 0.15s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_derivatives_doublenull 0.14s call xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables[toroidal] 0.14s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards1] 0.14s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[True-CELL_ZLOW] 0.13s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[True-6] 0.13s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned[False-6] 0.13s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned_staggered[CELL_ZLOW] 0.12s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_from_field_aligned_staggered[CELL_YLOW] 0.12s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned_dask 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-2-2] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-0-0] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-0-2] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-2-0] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[True-CELL_XLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[True-CELL_ZLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[True-CELL_XLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[True-CELL_YLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[False-CELL_YLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[False-CELL_XLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[True-CELL_YLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_staggered[False-CELL_ZLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[False-CELL_XLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[False-CELL_YLOW] 0.11s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_from_field_aligned_staggered[False-CELL_ZLOW] 0.11s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_single_file 0.11s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards0] 0.11s call xbout/tests/test_fastoutput.py::TestFastOutput::test_open_fastoutput 0.10s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_to_cartesian 0.10s call xbout/tests/test_boutdataset.py::TestBoutDatasetIsXarrayDataset::test_concat 0.09s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards2] 0.09s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_dask[True] 0.09s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards3] 0.09s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_dask[False] 0.09s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards1] 0.09s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[False-False] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards0] 0.08s call xbout/tests/test_load.py::TestOpen::test_squashed_file 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards2] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards1] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards3] 0.08s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards3] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards3] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards0] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards0] 0.08s call xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_metadata 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards2] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards2] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards3] 0.08s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards3] 0.08s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards0] 0.08s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards0] 0.07s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards2] 0.07s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards0] 0.07s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards3] 0.07s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards1] 0.07s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards3] 0.07s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards1] 0.07s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_get_field_aligned 0.06s call xbout/tests/test_load.py::TestOpen::test_restarts 0.06s call xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[False-float64] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards3] 0.06s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_singlenull 0.06s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards0] 0.06s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards2] 0.06s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards2] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards2] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards1] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards1] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards1] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards0] 0.06s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_from_restart_to_restart 0.06s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards1] 0.06s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards2] 0.06s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards0] 0.06s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards3] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards1] 0.05s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_add_cartesian_coordinates 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards3] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards3] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards3] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards2] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards3] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards3] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards2] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards3] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards2] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards0] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards1] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards1] 0.05s call xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards1] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards0] 0.05s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards0] 0.05s call xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards1] 0.04s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull[False-False] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards2] 0.04s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_ddx 0.04s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_ddz 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards1] 0.04s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart[1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards2] 0.04s call xbout/tests/test_load.py::TestOpen::test_drop_vars 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards3] 0.04s call xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[True-float64] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards1] 0.04s call xbout/tests/test_load.py::TestOpen::test_salpha 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards3] 0.04s call xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[False-float32] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards0] 0.04s call xbout/tests/test_boutdataset.py::TestSave::test_reload_all[toroidal] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards0] 0.04s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[True-True] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards2] 0.04s call xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables_time_split[toroidal] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards0] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards2] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards1] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards3] 0.04s call xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards0] 0.03s call xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards3] 0.03s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[False-True] 0.03s call xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards1] 0.03s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[True-False] 0.03s call xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[True-float32] 0.03s call xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables_time_split[None] 0.03s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull_expect_fail[npes1] 0.03s call xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe 0.03s call xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables[None] 0.03s call xbout/tests/test_load.py::TestOpen::test_single_file 0.03s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_add_cartesian_coordinates 0.03s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull[False-True] 0.03s call xbout/tests/test_load.py::TestPathHandling::test_glob_expansion_both[3-111] 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[2-2] 0.02s call xbout/tests/test_load.py::TestPathHandling::test_glob_expansion_brackets[3-111] 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[2-0] 0.02s call xbout/tests/test_load.py::TestPathHandling::test_glob_expansion_both[121-2] 0.02s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards3] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_ddy 0.02s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards2] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_sol 0.02s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards1] 0.02s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards0] 0.02s setup xbout/tests/test_load.py::test_set_fci_coords 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel_all_variables_arg 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[0-2] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-2-0] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-2-2] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-0-0] 0.02s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-0-2] 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[0-0] 0.02s call xbout/tests/test_load.py::TestStripMetadata::test_strip_metadata 0.02s call xbout/tests/test_boutdataset.py::TestBoutDatasetIsXarrayDataset::test_isel 0.01s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull[True-True] 0.01s call xbout/tests/test_load.py::TestOpen::test_squashed_doublenull[True-False] 0.01s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel 0.01s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_toroidal_points 0.01s call xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_toroidal_points_list 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization[1-3-3-4-lower_boundaries15-upper_boundaries15] 0.01s call xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_extra_dims 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards2] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards0] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-True-guards3] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards2] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[True-2-True-False] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[1-2-3-4-lower_boundaries11-upper_boundaries11] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[False-1-False-True] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[False-0-True-False] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[False-2-True-False] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[True-3-False-True] 0.01s call xbout/tests/test_load.py::test_set_fci_coords 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[2-2-3-4-lower_boundaries12-upper_boundaries12] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[True-0-True-False] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-1-1-4-lower_boundaries1-upper_boundaries1] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[False-3-False-True] 0.01s call xbout/tests/test_load.py::TestTrim::test_keep_yboundaries_doublenull_by_filenum[True-1-False-True] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[1-0-3-4-lower_boundaries5-upper_boundaries5] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-2-1-4-lower_boundaries2-upper_boundaries2] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-3-3-4-lower_boundaries13-upper_boundaries13] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[1-3-3-4-lower_boundaries14-upper_boundaries14] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-3-1-4-lower_boundaries3-upper_boundaries3] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-0-3-4-lower_boundaries4-upper_boundaries4] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-True-guards1] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-False-guards2] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-2-3-4-lower_boundaries10-upper_boundaries10] 0.01s call xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards3] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-0-1-4-lower_boundaries0-upper_boundaries0] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[0-1-3-4-lower_boundaries7-upper_boundaries7] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[1-1-3-4-lower_boundaries8-upper_boundaries8] 0.01s call xbout/tests/test_load.py::TestTrim::test_infer_boundaries_2d_parallelization_doublenull[2-3-3-4-lower_boundaries15-upper_boundaries15] (1673 durations < 0.005s hidden. Use -vv to show these durations.) =========================== short test summary info ============================ FAILED xbout/calc/tests/test_turbulence.py::TestRootMeanSquare::test_reduce_2d_dask FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_single_file FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_x FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_y FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_multiple_files_along_xy FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_metadata FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_int FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_list FAILED xbout/tests/test_against_collect.py::TestAccuracyAgainstOldCollect::test_new_collect_indexing_slice FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-0-0] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-0-2] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-2-0] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[False-2-2] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-0-0] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-0-2] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-2-0] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_remove_yboundaries[True-2-2] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_dask[False] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_to_field_aligned_dask[True] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core_change_n[2] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core_change_n[3] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core_change_n[7] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_core_change_n[18] FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_sol FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_region_singlenull FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_sol FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_toroidal_points FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_interpolate_parallel_toroidal_points_list FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_ddy FAILED xbout/tests/test_boutdataarray.py::TestBoutDataArrayMethods::test_derivatives_doublenull FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[0-0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[0-2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[2-0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_remove_yboundaries[2-2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_to_field_aligned_dask FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-False-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-False-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-False-True-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate0-True-True-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-False-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-False-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-False-True-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards0] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards1] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards2] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel[vars_to_interpolate1-True-True-guards3] FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel_all_variables_arg FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_parallel_limiter FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_from_unstructured FAILED xbout/tests/test_boutdataset.py::TestBoutDatasetMethods::test_interpolate_from_unstructured_unstructured_output FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_all - Failed: DID... FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_all[None] - Fai... FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_all[toroidal] FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[False-float64] FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[False-float32] FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[True-float64] FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_dtype[True-float32] FAILED xbout/tests/test_boutdataset.py::TestSave::test_save_separate_variables FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables[None] FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables[toroidal] FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables_time_split[None] FAILED xbout/tests/test_boutdataset.py::TestSave::test_reload_separate_variables_time_split[toroidal] FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart[None] FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart[1] FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull_expect_fail[npes0] FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_to_restart_change_npe_doublenull_expect_fail[npes1] FAILED xbout/tests/test_boutdataset.py::TestSaveRestart::test_from_restart_to_restart FAILED xbout/tests/test_grid.py::TestOpenGrid::test_open_grid - Failed: DID N... FAILED xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_extra_dims - Im... FAILED xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_apply_geometry FAILED xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_chunks - Failed... FAILED xbout/tests/test_grid.py::TestOpenGrid::test_open_grid_chunks_not_in_grid FAILED xbout/tests/test_load.py::test_set_fci_coords - ImportError: chunk man... FAILED xbout/tests/test_load.py::TestOpen::test_single_file - Failed: DID NOT... FAILED xbout/tests/test_load.py::TestOpen::test_squashed_file - Failed: DID N... FAILED xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[False-False] FAILED xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[False-True] FAILED xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[True-False] FAILED xbout/tests/test_load.py::TestOpen::test_squashed_doublenull_file[True-True] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_x - Failed: DID... FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_y - Failed: DID... FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-False-False] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-True-False] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths0-True-True] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-False-False] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-True-False] FAILED xbout/tests/test_load.py::TestOpen::test_combine_along_xy[lengths1-True-True] FAILED xbout/tests/test_load.py::TestOpen::test_toroidal - ImportError: chunk... FAILED xbout/tests/test_load.py::TestOpen::test_salpha - ImportError: chunk m... FAILED xbout/tests/test_load.py::TestOpen::test_drop_vars - Failed: DID NOT W... FAILED xbout/tests/test_load.py::TestOpen::test_restarts - ImportError: chunk... FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-0-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-1-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[lower-disconnected-double-null-2-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-0-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-1-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_disconnecteddoublenull[upper-disconnected-double-null-2-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[0-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[1-True-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-False-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-False-True-guards3] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-True-guards0] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-True-guards1] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-True-guards2] FAILED xbout/tests/test_plot.py::TestPlot::test_region_limiter[2-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_core[True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_sol[True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[0-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_limiter[1-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_xpoint[True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_singlenull[True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_connecteddoublenull[True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[lower-disconnected-double-null-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull[upper-disconnected-double-null-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-0-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards1-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards2-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-with_guards3-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[lower-disconnected-double-null-1-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-0-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards1-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards2-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-with_guards3-True-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-False-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-False-True-guards3] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards0] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards1] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards2] FAILED xbout/tests/test_region.py::TestRegion::test_region_disconnecteddoublenull_get_one_guard[upper-disconnected-double-null-1-True-True-guards3] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D - Failed: DID ... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls0] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls1] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls2] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls3] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls4] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate2D_controls_arg[controls5] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D - Failed: DID ... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls0] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls1] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls2] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls3] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls4] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate1D_controls_arg[controls5] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list - Failed: D... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_1d_default ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_1d_multiline ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_animate_over ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_save_as - F... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_fps - Faile... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_nrows - Fai... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_ncols - Fai... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_not_enough_nrowsncols ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_subplots_adjust ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmin - Fail... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmin_list ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmax - Fail... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_vmax_list ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale - ... ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale_float ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_logscale_list ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_titles_list ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls0] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls1] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls2] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls3] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls4] ERROR xbout/tests/test_animate.py::TestAnimate::test_animate_list_controls_arg[controls5] = 564 failed, 187 passed, 5 skipped, 114 warnings, 38 errors in 144.00s (0:02:23) = error: Bad exit status from /var/tmp/rpm-tmp.HpRHLU (%check) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.HpRHLU (%check) Finish: rpmbuild python-xbout-0.3.8-1.fc44.src.rpm Finish: build phase for python-xbout-0.3.8-1.fc44.src.rpm INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-rawhide-x86_64-1757624430.291162/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-xbout-0.3.8-1.fc44.src.rpm) Config(fedora-rawhide-x86_64) 3 minutes 15 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 bd79b95180444528a6ae6b2a6c6d3910 -D /var/lib/mock/fedora-rawhide-x86_64-1757624430.291162/root -a -u mockbuild --capability=cap_ipc_lock --rlimit=RLIMIT_NOFILE=10240 --capability=cap_ipc_lock --bind=/tmp/mock-resolv.e1557z5l:/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-xbout.spec' Copr build error: Build failed