0s autopkgtest [10:56:20]: starting date and time: 2024-06-16 10:56:20+0000 0s autopkgtest [10:56:20]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [10:56:20]: host juju-7f2275-prod-proposed-migration-environment-3; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ijcyfwwp/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pooch --apt-upgrade metpy --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=pooch/1.8.2-1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-3@bos03-arm64-33.secgroup --name adt-oracular-arm64-metpy-20240616-102114-juju-7f2275-prod-proposed-migration-environment-3-df2ce90c-a492-4fb9-bff0-837ae0b558eb --image adt/ubuntu-oracular-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-3 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 604s autopkgtest [11:06:24]: testbed dpkg architecture: arm64 605s autopkgtest [11:06:25]: testbed apt version: 2.9.3 605s autopkgtest [11:06:25]: @@@@@@@@@@@@@@@@@@@@ test bed setup 606s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 607s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [388 kB] 608s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2576 B] 608s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7052 B] 608s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [36.1 kB] 608s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main arm64 Packages [55.3 kB] 608s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted arm64 Packages [33.3 kB] 608s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe arm64 Packages [311 kB] 608s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse arm64 Packages [8312 B] 608s Fetched 952 kB in 2s (391 kB/s) 609s Reading package lists... 618s Reading package lists... 618s Building dependency tree... 618s Reading state information... 619s Calculating upgrade... 619s The following packages will be upgraded: 619s apt apt-utils dracut-install libapt-pkg6.0t64 libc-bin libc-dev-bin 619s libc-devtools libc6 libc6-dev libldap-common libldap2 libnss3 locales 619s python3-certifi ubuntu-pro-client ubuntu-pro-client-l10n 620s 16 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 620s Need to get 13.8 MB of archives. 620s After this operation, 9216 B of additional disk space will be used. 620s Get:1 http://ftpmaster.internal/ubuntu oracular/main arm64 libc-devtools arm64 2.39-0ubuntu9 [27.8 kB] 620s Get:2 http://ftpmaster.internal/ubuntu oracular/main arm64 libc6-dev arm64 2.39-0ubuntu9 [1595 kB] 620s Get:3 http://ftpmaster.internal/ubuntu oracular/main arm64 libc-dev-bin arm64 2.39-0ubuntu9 [19.7 kB] 620s Get:4 http://ftpmaster.internal/ubuntu oracular/main arm64 libc6 arm64 2.39-0ubuntu9 [2776 kB] 620s Get:5 http://ftpmaster.internal/ubuntu oracular/main arm64 libc-bin arm64 2.39-0ubuntu9 [591 kB] 620s Get:6 http://ftpmaster.internal/ubuntu oracular/main arm64 libapt-pkg6.0t64 arm64 2.9.5 [967 kB] 620s Get:7 http://ftpmaster.internal/ubuntu oracular/main arm64 apt arm64 2.9.5 [1362 kB] 620s Get:8 http://ftpmaster.internal/ubuntu oracular/main arm64 apt-utils arm64 2.9.5 [211 kB] 620s Get:9 http://ftpmaster.internal/ubuntu oracular/main arm64 locales all 2.39-0ubuntu9 [4235 kB] 620s Get:10 http://ftpmaster.internal/ubuntu oracular/main arm64 ubuntu-pro-client-l10n arm64 32.3.1 [19.4 kB] 620s Get:11 http://ftpmaster.internal/ubuntu oracular/main arm64 ubuntu-pro-client arm64 32.3.1 [228 kB] 620s Get:12 http://ftpmaster.internal/ubuntu oracular/main arm64 dracut-install arm64 102-3ubuntu2 [32.4 kB] 620s Get:13 http://ftpmaster.internal/ubuntu oracular/main arm64 libldap-common all 2.6.7+dfsg-1~exp1ubuntu9 [31.5 kB] 620s Get:14 http://ftpmaster.internal/ubuntu oracular/main arm64 libldap2 arm64 2.6.7+dfsg-1~exp1ubuntu9 [193 kB] 620s Get:15 http://ftpmaster.internal/ubuntu oracular/main arm64 libnss3 arm64 2:3.101-1 [1361 kB] 620s Get:16 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-certifi all 2024.6.2-1 [160 kB] 634s Preconfiguring packages ... 641s Fetched 13.8 MB in 1s (14.6 MB/s) 649s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 649s Preparing to unpack .../libc-devtools_2.39-0ubuntu9_arm64.deb ... 649s Unpacking libc-devtools (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 653s Preparing to unpack .../libc6-dev_2.39-0ubuntu9_arm64.deb ... 653s Unpacking libc6-dev:arm64 (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 654s Preparing to unpack .../libc-dev-bin_2.39-0ubuntu9_arm64.deb ... 654s Unpacking libc-dev-bin (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 654s Preparing to unpack .../libc6_2.39-0ubuntu9_arm64.deb ... 655s Unpacking libc6:arm64 (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 655s Setting up libc6:arm64 (2.39-0ubuntu9) ... 656s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 656s Preparing to unpack .../libc-bin_2.39-0ubuntu9_arm64.deb ... 656s Unpacking libc-bin (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 657s Setting up libc-bin (2.39-0ubuntu9) ... 657s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 657s Preparing to unpack .../libapt-pkg6.0t64_2.9.5_arm64.deb ... 657s Unpacking libapt-pkg6.0t64:arm64 (2.9.5) over (2.9.3) ... 658s Setting up libapt-pkg6.0t64:arm64 (2.9.5) ... 658s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 658s Preparing to unpack .../archives/apt_2.9.5_arm64.deb ... 658s Unpacking apt (2.9.5) over (2.9.3) ... 659s Setting up apt (2.9.5) ... 660s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 660s Preparing to unpack .../0-apt-utils_2.9.5_arm64.deb ... 660s Unpacking apt-utils (2.9.5) over (2.9.3) ... 661s Preparing to unpack .../1-locales_2.39-0ubuntu9_all.deb ... 661s Unpacking locales (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 661s Preparing to unpack .../2-ubuntu-pro-client-l10n_32.3.1_arm64.deb ... 661s Unpacking ubuntu-pro-client-l10n (32.3.1) over (32.3) ... 661s Preparing to unpack .../3-ubuntu-pro-client_32.3.1_arm64.deb ... 661s Unpacking ubuntu-pro-client (32.3.1) over (32.3) ... 663s Preparing to unpack .../4-dracut-install_102-3ubuntu2_arm64.deb ... 663s Unpacking dracut-install (102-3ubuntu2) over (102-3ubuntu1) ... 667s Preparing to unpack .../5-libldap-common_2.6.7+dfsg-1~exp1ubuntu9_all.deb ... 667s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu9) over (2.6.7+dfsg-1~exp1ubuntu8) ... 672s Preparing to unpack .../6-libldap2_2.6.7+dfsg-1~exp1ubuntu9_arm64.deb ... 672s Unpacking libldap2:arm64 (2.6.7+dfsg-1~exp1ubuntu9) over (2.6.7+dfsg-1~exp1ubuntu8) ... 673s Preparing to unpack .../7-libnss3_2%3a3.101-1_arm64.deb ... 673s Unpacking libnss3:arm64 (2:3.101-1) over (2:3.100-1) ... 675s Preparing to unpack .../8-python3-certifi_2024.6.2-1_all.deb ... 676s Unpacking python3-certifi (2024.6.2-1) over (2023.11.17-1) ... 679s Setting up apt-utils (2.9.5) ... 679s Setting up libnss3:arm64 (2:3.101-1) ... 679s Setting up locales (2.39-0ubuntu9) ... 696s Generating locales (this might take a while)... 704s en_US.UTF-8... done 704s Generation complete. 705s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu9) ... 705s Setting up python3-certifi (2024.6.2-1) ... 705s Setting up dracut-install (102-3ubuntu2) ... 705s Setting up libc-dev-bin (2.39-0ubuntu9) ... 705s Setting up ubuntu-pro-client (32.3.1) ... 705s Installing new version of config file /etc/apparmor.d/ubuntu_pro_esm_cache ... 729s Setting up libldap2:arm64 (2.6.7+dfsg-1~exp1ubuntu9) ... 729s Setting up libc-devtools (2.39-0ubuntu9) ... 729s Setting up ubuntu-pro-client-l10n (32.3.1) ... 729s Setting up libc6-dev:arm64 (2.39-0ubuntu9) ... 729s Processing triggers for man-db (2.12.1-2) ... 734s Processing triggers for libc-bin (2.39-0ubuntu9) ... 737s Reading package lists... 738s Building dependency tree... 738s Reading state information... 738s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 739s Hit:1 http://ftpmaster.internal/ubuntu oracular InRelease 739s Hit:2 http://ftpmaster.internal/ubuntu oracular-updates InRelease 739s Hit:3 http://ftpmaster.internal/ubuntu oracular-security InRelease 740s Hit:4 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 742s Reading package lists... 743s Reading package lists... 743s Building dependency tree... 743s Reading state information... 744s Calculating upgrade... 744s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 744s Reading package lists... 745s Building dependency tree... 745s Reading state information... 745s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 747s autopkgtest [11:08:47]: rebooting testbed after setup commands that affected boot 755s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 788s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 821s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 854s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 887s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 892s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 901s autopkgtest [11:11:21]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 02:32:42 UTC 2024 904s autopkgtest [11:11:24]: @@@@@@@@@@@@@@@@@@@@ apt-source metpy 907s Get:1 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (dsc) [2640 B] 907s Get:2 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (tar) [9945 kB] 907s Get:3 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (diff) [9740 B] 908s gpgv: Signature made Tue Apr 16 08:36:50 2024 UTC 908s gpgv: using RSA key 3B70F209A5FFD68903C472C5EBF48AB2578F9812 908s gpgv: issuer "antonio.valentino@tiscali.it" 908s gpgv: Can't check signature: No public key 908s dpkg-source: warning: cannot verify inline signature for ./metpy_1.6.2+ds-1.dsc: no acceptable signature found 909s autopkgtest [11:11:29]: testing package metpy version 1.6.2+ds-1 909s autopkgtest [11:11:29]: build not needed 910s autopkgtest [11:11:30]: test pybuild-autopkgtest: preparing testbed 912s Reading package lists... 913s Building dependency tree... 913s Reading state information... 913s Starting pkgProblemResolver with broken count: 0 913s Starting 2 pkgProblemResolver with broken count: 0 913s Done 914s The following additional packages will be installed: 914s autoconf automake autopoint autotools-dev blt build-essential cpp cpp-13 914s cpp-13-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper debugedit 914s dh-autoreconf dh-python dh-strip-nondeterminism dwz 914s fonts-glyphicons-halflings fonts-lyx g++ g++-13 g++-13-aarch64-linux-gnu 914s g++-aarch64-linux-gnu gcc gcc-13 gcc-13-aarch64-linux-gnu 914s gcc-aarch64-linux-gnu gettext intltool-debian javascript-common libaec0 914s libarchive-zip-perl libasan8 libatomic1 libblas3 libcc1-0 libdebhelper-perl 914s libfile-stripnondeterminism-perl libgcc-13-dev libgeos-c1t64 libgeos3.12.2 914s libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libhdf5-103-1t64 914s libhdf5-hl-100t64 libhwasan0 libimagequant0 libisl23 libitm1 libjs-bootstrap 914s libjs-bootstrap4 libjs-jquery libjs-jquery-ui libjs-popper.js liblapack3 914s liblbfgsb0 liblcms2-2 liblsan0 libmpc3 libnetcdf19t64 libopenjp2-7 libproj25 914s libqhull-r8.0 libraqm0 libstdc++-13-dev libsz2 libtcl8.6 libtk8.6 libtool 914s libtsan2 libubsan1 libwebpdemux2 libwebpmux3 libxft2 libxrender1 libxslt1.1 914s libxss1 m4 po-debconf proj-data pybuild-plugin-autopkgtest 914s pybuild-plugin-pyproject python-cartopy-data python-matplotlib-data 914s python3-all python3-appdirs python3-brotli python3-build python3-cartopy 914s python3-cftime python3-contourpy python3-cycler python3-dateutil 914s python3-decorator python3-fonttools python3-fs python3-iniconfig 914s python3-installer python3-kiwisolver python3-lxml python3-lz4 914s python3-matplotlib python3-metpy python3-mpmath python3-netcdf4 914s python3-numpy python3-packaging python3-pandas python3-pandas-lib 914s python3-pil python3-pil.imagetk python3-pint python3-platformdirs 914s python3-pluggy python3-pooch python3-pyproj python3-pyproject-hooks 914s python3-pyshp python3-pytest python3-pytest-mpl python3-scipy 914s python3-setuptools python3-setuptools-scm python3-shapely python3-sympy 914s python3-tk python3-toml python3-traitlets python3-ufolib2 914s python3-unicodedata2 python3-wheel python3-xarray tk8.6-blt2.5 unicode-data 914s x11-common 914s Suggested packages: 914s autoconf-archive gnu-standards autoconf-doc blt-demo cpp-doc gcc-13-locales 914s cpp-13-doc dh-make flit gcc-13-doc gcc-multilib manpages-dev flex bison gdb 914s gcc-doc gdb-aarch64-linux-gnu gettext-doc libasprintf-dev libgettextpo-dev 914s apache2 | lighttpd | httpd libjs-jquery-ui-docs liblcms2-utils proj-bin 914s libstdc++-13-doc tcl8.6 tk8.6 libtool-doc gfortran | fortran95-compiler 914s gcj-jdk m4-doc libmail-box-perl python3-pip python3-venv python-build-doc 914s python3-fiona python3-gdal python3-owslib python3-pykdtree python-cycler-doc 914s python-installer-doc python-lxml-doc cm-super-minimal dvipng ffmpeg 914s fonts-staypuft ghostscript gir1.2-gtk-3.0 inkscape ipython3 librsvg2-common 914s python3-cairocffi python3-gi-cairo python3-gobject python3-pyqt5 python3-sip 914s python3-tornado texlive-extra-utils texlive-latex-extra python-mpmath-doc 914s python3-gmpy2 gfortran python-numpy-doc python3-dev python-pandas-doc 914s python3-statsmodels python-pil-doc python3-paramiko python-scipy-doc 914s python-setuptools-doc texlive-fonts-extra python-sympy-doc tix 914s python3-tk-dbg python-xarray-doc python3-pydap python3-seaborn python3-toolz 914s Recommended packages: 914s libarchive-cpio-perl node-jquery libltdl-dev libmail-sendmail-perl 914s python3-bs4 python3-cssselect python3-html5lib python3-bottleneck 914s python3-numexpr python3-odf python3-openpyxl python3-tables python3-olefile 914s python3-tqdm isympy-common python3-dask python3-rasterio python3-h5netcdf 914s python3-zarr 914s The following NEW packages will be installed: 914s autoconf automake autopkgtest-satdep autopoint autotools-dev blt 914s build-essential cpp cpp-13 cpp-13-aarch64-linux-gnu cpp-aarch64-linux-gnu 914s debhelper debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz 914s fonts-glyphicons-halflings fonts-lyx g++ g++-13 g++-13-aarch64-linux-gnu 914s g++-aarch64-linux-gnu gcc gcc-13 gcc-13-aarch64-linux-gnu 914s gcc-aarch64-linux-gnu gettext intltool-debian javascript-common libaec0 914s libarchive-zip-perl libasan8 libatomic1 libblas3 libcc1-0 libdebhelper-perl 914s libfile-stripnondeterminism-perl libgcc-13-dev libgeos-c1t64 libgeos3.12.2 914s libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libhdf5-103-1t64 914s libhdf5-hl-100t64 libhwasan0 libimagequant0 libisl23 libitm1 libjs-bootstrap 914s libjs-bootstrap4 libjs-jquery libjs-jquery-ui libjs-popper.js liblapack3 914s liblbfgsb0 liblcms2-2 liblsan0 libmpc3 libnetcdf19t64 libopenjp2-7 libproj25 914s libqhull-r8.0 libraqm0 libstdc++-13-dev libsz2 libtcl8.6 libtk8.6 libtool 914s libtsan2 libubsan1 libwebpdemux2 libwebpmux3 libxft2 libxrender1 libxslt1.1 914s libxss1 m4 po-debconf proj-data pybuild-plugin-autopkgtest 914s pybuild-plugin-pyproject python-cartopy-data python-matplotlib-data 914s python3-all python3-appdirs python3-brotli python3-build python3-cartopy 914s python3-cftime python3-contourpy python3-cycler python3-dateutil 914s python3-decorator python3-fonttools python3-fs python3-iniconfig 914s python3-installer python3-kiwisolver python3-lxml python3-lz4 914s python3-matplotlib python3-metpy python3-mpmath python3-netcdf4 914s python3-numpy python3-packaging python3-pandas python3-pandas-lib 914s python3-pil python3-pil.imagetk python3-pint python3-platformdirs 914s python3-pluggy python3-pooch python3-pyproj python3-pyproject-hooks 914s python3-pyshp python3-pytest python3-pytest-mpl python3-scipy 914s python3-setuptools python3-setuptools-scm python3-shapely python3-sympy 914s python3-tk python3-toml python3-traitlets python3-ufolib2 914s python3-unicodedata2 python3-wheel python3-xarray tk8.6-blt2.5 unicode-data 914s x11-common 914s 0 upgraded, 137 newly installed, 0 to remove and 0 not upgraded. 914s Need to get 146 MB/146 MB of archives. 914s After this operation, 565 MB of additional disk space will be used. 914s Get:1 /tmp/autopkgtest.l3G77H/1-autopkgtest-satdep.deb autopkgtest-satdep arm64 0 [880 B] 914s Get:2 http://ftpmaster.internal/ubuntu oracular/main arm64 m4 arm64 1.4.19-4build1 [240 kB] 915s Get:3 http://ftpmaster.internal/ubuntu oracular/main arm64 autoconf all 2.71-3 [339 kB] 915s Get:4 http://ftpmaster.internal/ubuntu oracular/main arm64 autotools-dev all 20220109.1 [44.9 kB] 915s Get:5 http://ftpmaster.internal/ubuntu oracular/main arm64 automake all 1:1.16.5-1.3ubuntu1 [558 kB] 915s Get:6 http://ftpmaster.internal/ubuntu oracular/main arm64 autopoint all 0.21-14ubuntu2 [422 kB] 915s Get:7 http://ftpmaster.internal/ubuntu oracular/main arm64 libtcl8.6 arm64 8.6.14+dfsg-1build1 [978 kB] 915s Get:8 http://ftpmaster.internal/ubuntu oracular/main arm64 libxrender1 arm64 1:0.9.10-1.1build1 [18.8 kB] 915s Get:9 http://ftpmaster.internal/ubuntu oracular/main arm64 libxft2 arm64 2.3.6-1build1 [44.1 kB] 915s Get:10 http://ftpmaster.internal/ubuntu oracular/main arm64 x11-common all 1:7.7+23ubuntu3 [21.7 kB] 915s Get:11 http://ftpmaster.internal/ubuntu oracular/main arm64 libxss1 arm64 1:1.2.3-1build3 [7244 B] 915s Get:12 http://ftpmaster.internal/ubuntu oracular/main arm64 libtk8.6 arm64 8.6.14-1build1 [767 kB] 915s Get:13 http://ftpmaster.internal/ubuntu oracular/main arm64 tk8.6-blt2.5 arm64 2.5.3+dfsg-7build1 [618 kB] 915s Get:14 http://ftpmaster.internal/ubuntu oracular/main arm64 blt arm64 2.5.3+dfsg-7build1 [4840 B] 915s Get:15 http://ftpmaster.internal/ubuntu oracular/main arm64 libisl23 arm64 0.26-3build1 [669 kB] 915s Get:16 http://ftpmaster.internal/ubuntu oracular/main arm64 libmpc3 arm64 1.3.1-1build1 [56.4 kB] 915s Get:17 http://ftpmaster.internal/ubuntu oracular/main arm64 cpp-13-aarch64-linux-gnu arm64 13.2.0-23ubuntu4 [10.3 MB] 915s Get:18 http://ftpmaster.internal/ubuntu oracular/main arm64 cpp-13 arm64 13.2.0-23ubuntu4 [1032 B] 915s Get:19 http://ftpmaster.internal/ubuntu oracular/main arm64 cpp-aarch64-linux-gnu arm64 4:13.2.0-7ubuntu1 [5316 B] 915s Get:20 http://ftpmaster.internal/ubuntu oracular/main arm64 cpp arm64 4:13.2.0-7ubuntu1 [22.4 kB] 915s Get:21 http://ftpmaster.internal/ubuntu oracular/main arm64 libcc1-0 arm64 14.1.0-1ubuntu1 [49.4 kB] 915s Get:22 http://ftpmaster.internal/ubuntu oracular/main arm64 libgomp1 arm64 14.1.0-1ubuntu1 [144 kB] 915s Get:23 http://ftpmaster.internal/ubuntu oracular/main arm64 libitm1 arm64 14.1.0-1ubuntu1 [27.9 kB] 915s Get:24 http://ftpmaster.internal/ubuntu oracular/main arm64 libatomic1 arm64 14.1.0-1ubuntu1 [11.4 kB] 915s Get:25 http://ftpmaster.internal/ubuntu oracular/main arm64 libasan8 arm64 14.1.0-1ubuntu1 [2922 kB] 915s Get:26 http://ftpmaster.internal/ubuntu oracular/main arm64 liblsan0 arm64 14.1.0-1ubuntu1 [1286 kB] 915s Get:27 http://ftpmaster.internal/ubuntu oracular/main arm64 libtsan2 arm64 14.1.0-1ubuntu1 [2692 kB] 915s Get:28 http://ftpmaster.internal/ubuntu oracular/main arm64 libubsan1 arm64 14.1.0-1ubuntu1 [1155 kB] 915s Get:29 http://ftpmaster.internal/ubuntu oracular/main arm64 libhwasan0 arm64 14.1.0-1ubuntu1 [1604 kB] 915s Get:30 http://ftpmaster.internal/ubuntu oracular/main arm64 libgcc-13-dev arm64 13.2.0-23ubuntu4 [2470 kB] 916s Get:31 http://ftpmaster.internal/ubuntu oracular/main arm64 gcc-13-aarch64-linux-gnu arm64 13.2.0-23ubuntu4 [20.1 MB] 916s Get:32 http://ftpmaster.internal/ubuntu oracular/main arm64 gcc-13 arm64 13.2.0-23ubuntu4 [472 kB] 916s Get:33 http://ftpmaster.internal/ubuntu oracular/main arm64 gcc-aarch64-linux-gnu arm64 4:13.2.0-7ubuntu1 [1198 B] 916s Get:34 http://ftpmaster.internal/ubuntu oracular/main arm64 gcc arm64 4:13.2.0-7ubuntu1 [5018 B] 916s Get:35 http://ftpmaster.internal/ubuntu oracular/main arm64 libstdc++-13-dev arm64 13.2.0-23ubuntu4 [2379 kB] 916s Get:36 http://ftpmaster.internal/ubuntu oracular/main arm64 g++-13-aarch64-linux-gnu arm64 13.2.0-23ubuntu4 [11.7 MB] 916s Get:37 http://ftpmaster.internal/ubuntu oracular/main arm64 g++-13 arm64 13.2.0-23ubuntu4 [14.5 kB] 916s Get:38 http://ftpmaster.internal/ubuntu oracular/main arm64 g++-aarch64-linux-gnu arm64 4:13.2.0-7ubuntu1 [962 B] 916s Get:39 http://ftpmaster.internal/ubuntu oracular/main arm64 g++ arm64 4:13.2.0-7ubuntu1 [1082 B] 916s Get:40 http://ftpmaster.internal/ubuntu oracular/main arm64 build-essential arm64 12.10ubuntu1 [4932 B] 916s Get:41 http://ftpmaster.internal/ubuntu oracular/main arm64 libdebhelper-perl all 13.15.3ubuntu2 [92.3 kB] 916s Get:42 http://ftpmaster.internal/ubuntu oracular/main arm64 libtool all 2.4.7-7build1 [166 kB] 916s Get:43 http://ftpmaster.internal/ubuntu oracular/main arm64 dh-autoreconf all 20 [16.1 kB] 916s Get:44 http://ftpmaster.internal/ubuntu oracular/main arm64 libarchive-zip-perl all 1.68-1 [90.2 kB] 916s Get:45 http://ftpmaster.internal/ubuntu oracular/main arm64 libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 916s Get:46 http://ftpmaster.internal/ubuntu oracular/main arm64 dh-strip-nondeterminism all 1.14.0-1 [5058 B] 916s Get:47 http://ftpmaster.internal/ubuntu oracular/main arm64 debugedit arm64 1:5.0-5build2 [45.3 kB] 916s Get:48 http://ftpmaster.internal/ubuntu oracular/main arm64 dwz arm64 0.15-1build6 [113 kB] 916s Get:49 http://ftpmaster.internal/ubuntu oracular/main arm64 gettext arm64 0.21-14ubuntu2 [845 kB] 916s Get:50 http://ftpmaster.internal/ubuntu oracular/main arm64 intltool-debian all 0.35.0+20060710.6 [23.2 kB] 916s Get:51 http://ftpmaster.internal/ubuntu oracular/main arm64 po-debconf all 1.0.21+nmu1 [233 kB] 916s Get:52 http://ftpmaster.internal/ubuntu oracular/main arm64 debhelper all 13.15.3ubuntu2 [878 kB] 916s Get:53 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 916s Get:54 http://ftpmaster.internal/ubuntu oracular/universe arm64 dh-python all 6.20240422 [110 kB] 916s Get:55 http://ftpmaster.internal/ubuntu oracular/universe arm64 fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 917s Get:56 http://ftpmaster.internal/ubuntu oracular/universe arm64 fonts-lyx all 2.4.0-1 [171 kB] 917s Get:57 http://ftpmaster.internal/ubuntu oracular/main arm64 javascript-common all 11+nmu1 [5936 B] 917s Get:58 http://ftpmaster.internal/ubuntu oracular/universe arm64 libaec0 arm64 1.1.3-1 [22.0 kB] 917s Get:59 http://ftpmaster.internal/ubuntu oracular/main arm64 libblas3 arm64 3.12.0-3build1 [143 kB] 917s Get:60 http://ftpmaster.internal/ubuntu oracular/universe arm64 libgeos3.12.2 arm64 3.12.2-1 [831 kB] 917s Get:61 http://ftpmaster.internal/ubuntu oracular/universe arm64 libgeos-c1t64 arm64 3.12.2-1 [88.5 kB] 917s Get:62 http://ftpmaster.internal/ubuntu oracular/main arm64 libgfortran5 arm64 14.1.0-1ubuntu1 [443 kB] 917s Get:63 http://ftpmaster.internal/ubuntu oracular/main arm64 libgraphite2-3 arm64 1.3.14-2build1 [70.8 kB] 917s Get:64 http://ftpmaster.internal/ubuntu oracular/main arm64 libharfbuzz0b arm64 8.3.0-2build2 [463 kB] 917s Get:65 http://ftpmaster.internal/ubuntu oracular/universe arm64 libsz2 arm64 1.1.3-1 [5254 B] 917s Get:66 http://ftpmaster.internal/ubuntu oracular/universe arm64 libhdf5-103-1t64 arm64 1.10.10+repack-3.1ubuntu4 [1192 kB] 917s Get:67 http://ftpmaster.internal/ubuntu oracular/universe arm64 libhdf5-hl-100t64 arm64 1.10.10+repack-3.1ubuntu4 [55.8 kB] 917s Get:68 http://ftpmaster.internal/ubuntu oracular/main arm64 libimagequant0 arm64 2.18.0-1build1 [37.1 kB] 917s Get:69 http://ftpmaster.internal/ubuntu oracular/universe arm64 libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 917s Get:70 http://ftpmaster.internal/ubuntu oracular/universe arm64 libjs-popper.js all 1.16.1+ds-6 [54.1 kB] 917s Get:71 http://ftpmaster.internal/ubuntu oracular/universe arm64 libjs-bootstrap4 all 4.6.1+dfsg1-4 [537 kB] 917s Get:72 http://ftpmaster.internal/ubuntu oracular/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 917s Get:73 http://ftpmaster.internal/ubuntu oracular/universe arm64 libjs-jquery-ui all 1.13.2+dfsg-1 [252 kB] 917s Get:74 http://ftpmaster.internal/ubuntu oracular/main arm64 liblapack3 arm64 3.12.0-3build1 [2241 kB] 917s Get:75 http://ftpmaster.internal/ubuntu oracular/universe arm64 liblbfgsb0 arm64 3.0+dfsg.4-1build1 [27.7 kB] 917s Get:76 http://ftpmaster.internal/ubuntu oracular/main arm64 liblcms2-2 arm64 2.14-2build1 [161 kB] 917s Get:77 http://ftpmaster.internal/ubuntu oracular/universe arm64 libnetcdf19t64 arm64 1:4.9.2-6 [470 kB] 917s Get:78 http://ftpmaster.internal/ubuntu oracular/universe arm64 proj-data all 9.4.1-1 [7892 kB] 917s Get:79 http://ftpmaster.internal/ubuntu oracular/universe arm64 libproj25 arm64 9.4.1-1 [1294 kB] 917s Get:80 http://ftpmaster.internal/ubuntu oracular/universe arm64 libqhull-r8.0 arm64 2020.2-6build1 [189 kB] 917s Get:81 http://ftpmaster.internal/ubuntu oracular/main arm64 libraqm0 arm64 0.10.1-1build1 [14.7 kB] 917s Get:82 http://ftpmaster.internal/ubuntu oracular/main arm64 libwebpdemux2 arm64 1.4.0-0.1 [12.3 kB] 917s Get:83 http://ftpmaster.internal/ubuntu oracular/main arm64 libwebpmux3 arm64 1.4.0-0.1 [25.1 kB] 917s Get:84 http://ftpmaster.internal/ubuntu oracular/main arm64 libxslt1.1 arm64 1.1.39-0exp1build1 [166 kB] 917s Get:85 http://ftpmaster.internal/ubuntu oracular/universe arm64 pybuild-plugin-autopkgtest all 6.20240422 [1748 B] 917s Get:86 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-packaging all 24.0-1 [41.1 kB] 917s Get:87 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pyproject-hooks all 1.1.0-1 [9852 B] 917s Get:88 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-toml all 0.10.2-1 [16.5 kB] 917s Get:89 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-wheel all 0.43.0-1 [53.5 kB] 917s Get:90 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-build all 1.2.1-1 [29.7 kB] 917s Get:91 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 917s Get:92 http://ftpmaster.internal/ubuntu oracular/universe arm64 pybuild-plugin-pyproject all 6.20240422 [1730 B] 917s Get:93 http://ftpmaster.internal/ubuntu oracular/universe arm64 python-cartopy-data all 0.23.0+dfsg-1 [6508 kB] 917s Get:94 http://ftpmaster.internal/ubuntu oracular/universe arm64 python-matplotlib-data all 3.6.3-2ubuntu1 [2937 kB] 917s Get:95 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-all arm64 3.12.3-0ubuntu1 [888 B] 917s Get:96 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-appdirs all 1.4.4-4 [10.9 kB] 917s Get:97 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-brotli arm64 1.1.0-2build2 [340 kB] 917s Get:98 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-dateutil all 2.9.0-2 [80.3 kB] 917s Get:99 http://ftpmaster.internal/ubuntu oracular/main arm64 libopenjp2-7 arm64 2.5.0-2build3 [171 kB] 917s Get:100 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-pil arm64 10.3.0-2 [446 kB] 917s Get:101 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-tk arm64 3.12.3-0ubuntu1 [102 kB] 917s Get:102 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pil.imagetk arm64 10.3.0-2 [9268 B] 917s Get:103 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-numpy arm64 1:1.26.4+ds-10 [3565 kB] 918s Get:104 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-contourpy arm64 1.0.7-3 [163 kB] 918s Get:105 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-cycler all 0.12.1-1 [9716 B] 918s Get:106 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-decorator all 5.1.1-5 [10.1 kB] 918s Get:107 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-scipy arm64 1.12.0-2 [15.9 MB] 919s Get:108 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-ufolib2 all 0.16.0+dfsg1-1 [33.5 kB] 919s Get:109 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-mpmath all 1.3.0-1 [425 kB] 919s Get:110 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-sympy all 1.12-8 [3966 kB] 919s Get:111 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-fs all 2.4.16-4 [91.3 kB] 919s Get:112 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-lxml arm64 5.2.1-1 [1179 kB] 919s Get:113 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-lz4 arm64 4.0.2+dfsg-1build4 [26.7 kB] 919s Get:114 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-unicodedata2 arm64 15.1.0+ds-1build1 [362 kB] 919s Get:115 http://ftpmaster.internal/ubuntu oracular/universe arm64 unicode-data all 15.1.0-1 [8878 kB] 919s Get:116 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-fonttools arm64 4.46.0-1build2 [1398 kB] 919s Get:117 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-kiwisolver arm64 1.4.5-1 [48.9 kB] 919s Get:118 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-matplotlib arm64 3.6.3-2ubuntu1 [5963 kB] 920s Get:119 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pyproj arm64 3.6.1-4 [386 kB] 920s Get:120 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pyshp all 2.3.1-2 [62.0 kB] 920s Get:121 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-shapely arm64 2.0.4-1 [295 kB] 920s Get:122 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-cartopy arm64 0.23.0+dfsg-1 [450 kB] 920s Get:123 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-cftime arm64 1.6.4-1 [195 kB] 920s Get:124 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-iniconfig all 1.1.1-2 [6024 B] 920s Get:125 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pandas-lib arm64 2.1.4+dfsg-8 [4178 kB] 920s Get:126 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pandas all 2.1.4+dfsg-8 [3042 kB] 920s Get:127 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-pint all 0.19.2-1 [170 kB] 920s Get:128 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-platformdirs all 4.2.1-1 [16.3 kB] 920s Get:129 http://ftpmaster.internal/ubuntu oracular-proposed/universe arm64 python3-pooch all 1.8.2-1 [49.9 kB] 920s Get:130 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-traitlets all 5.5.0-2 [85.0 kB] 920s Get:131 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-xarray all 2024.03.0-1 [744 kB] 920s Get:132 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-metpy all 1.6.2+ds-1 [354 kB] 920s Get:133 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-netcdf4 arm64 1.7.0-1 [535 kB] 920s Get:134 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pluggy all 1.5.0-1 [21.0 kB] 920s Get:135 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pytest all 7.4.4-1 [305 kB] 920s Get:136 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pytest-mpl all 0.17.0-1 [26.5 kB] 920s Get:137 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-setuptools-scm all 8.1.0-1 [32.2 kB] 922s Fetched 146 MB in 6s (25.0 MB/s) 922s Selecting previously unselected package m4. 923s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78264 files and directories currently installed.) 923s Preparing to unpack .../000-m4_1.4.19-4build1_arm64.deb ... 923s Unpacking m4 (1.4.19-4build1) ... 923s Selecting previously unselected package autoconf. 924s Preparing to unpack .../001-autoconf_2.71-3_all.deb ... 924s Unpacking autoconf (2.71-3) ... 924s Selecting previously unselected package autotools-dev. 925s Preparing to unpack .../002-autotools-dev_20220109.1_all.deb ... 925s Unpacking autotools-dev (20220109.1) ... 925s Selecting previously unselected package automake. 925s Preparing to unpack .../003-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 925s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 925s Selecting previously unselected package autopoint. 925s Preparing to unpack .../004-autopoint_0.21-14ubuntu2_all.deb ... 925s Unpacking autopoint (0.21-14ubuntu2) ... 925s Selecting previously unselected package libtcl8.6:arm64. 925s Preparing to unpack .../005-libtcl8.6_8.6.14+dfsg-1build1_arm64.deb ... 925s Unpacking libtcl8.6:arm64 (8.6.14+dfsg-1build1) ... 925s Selecting previously unselected package libxrender1:arm64. 925s Preparing to unpack .../006-libxrender1_1%3a0.9.10-1.1build1_arm64.deb ... 925s Unpacking libxrender1:arm64 (1:0.9.10-1.1build1) ... 925s Selecting previously unselected package libxft2:arm64. 925s Preparing to unpack .../007-libxft2_2.3.6-1build1_arm64.deb ... 925s Unpacking libxft2:arm64 (2.3.6-1build1) ... 925s Selecting previously unselected package x11-common. 925s Preparing to unpack .../008-x11-common_1%3a7.7+23ubuntu3_all.deb ... 925s Unpacking x11-common (1:7.7+23ubuntu3) ... 925s Selecting previously unselected package libxss1:arm64. 925s Preparing to unpack .../009-libxss1_1%3a1.2.3-1build3_arm64.deb ... 925s Unpacking libxss1:arm64 (1:1.2.3-1build3) ... 926s Selecting previously unselected package libtk8.6:arm64. 926s Preparing to unpack .../010-libtk8.6_8.6.14-1build1_arm64.deb ... 926s Unpacking libtk8.6:arm64 (8.6.14-1build1) ... 926s Selecting previously unselected package tk8.6-blt2.5. 926s Preparing to unpack .../011-tk8.6-blt2.5_2.5.3+dfsg-7build1_arm64.deb ... 926s Unpacking tk8.6-blt2.5 (2.5.3+dfsg-7build1) ... 926s Selecting previously unselected package blt. 927s Preparing to unpack .../012-blt_2.5.3+dfsg-7build1_arm64.deb ... 927s Unpacking blt (2.5.3+dfsg-7build1) ... 927s Selecting previously unselected package libisl23:arm64. 927s Preparing to unpack .../013-libisl23_0.26-3build1_arm64.deb ... 927s Unpacking libisl23:arm64 (0.26-3build1) ... 927s Selecting previously unselected package libmpc3:arm64. 927s Preparing to unpack .../014-libmpc3_1.3.1-1build1_arm64.deb ... 927s Unpacking libmpc3:arm64 (1.3.1-1build1) ... 927s Selecting previously unselected package cpp-13-aarch64-linux-gnu. 927s Preparing to unpack .../015-cpp-13-aarch64-linux-gnu_13.2.0-23ubuntu4_arm64.deb ... 927s Unpacking cpp-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 927s Selecting previously unselected package cpp-13. 928s Preparing to unpack .../016-cpp-13_13.2.0-23ubuntu4_arm64.deb ... 928s Unpacking cpp-13 (13.2.0-23ubuntu4) ... 928s Selecting previously unselected package cpp-aarch64-linux-gnu. 929s Preparing to unpack .../017-cpp-aarch64-linux-gnu_4%3a13.2.0-7ubuntu1_arm64.deb ... 929s Unpacking cpp-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 929s Selecting previously unselected package cpp. 930s Preparing to unpack .../018-cpp_4%3a13.2.0-7ubuntu1_arm64.deb ... 931s Unpacking cpp (4:13.2.0-7ubuntu1) ... 931s Selecting previously unselected package libcc1-0:arm64. 932s Preparing to unpack .../019-libcc1-0_14.1.0-1ubuntu1_arm64.deb ... 932s Unpacking libcc1-0:arm64 (14.1.0-1ubuntu1) ... 932s Selecting previously unselected package libgomp1:arm64. 932s Preparing to unpack .../020-libgomp1_14.1.0-1ubuntu1_arm64.deb ... 932s Unpacking libgomp1:arm64 (14.1.0-1ubuntu1) ... 933s Selecting previously unselected package libitm1:arm64. 933s Preparing to unpack .../021-libitm1_14.1.0-1ubuntu1_arm64.deb ... 933s Unpacking libitm1:arm64 (14.1.0-1ubuntu1) ... 933s Selecting previously unselected package libatomic1:arm64. 933s Preparing to unpack .../022-libatomic1_14.1.0-1ubuntu1_arm64.deb ... 933s Unpacking libatomic1:arm64 (14.1.0-1ubuntu1) ... 933s Selecting previously unselected package libasan8:arm64. 934s Preparing to unpack .../023-libasan8_14.1.0-1ubuntu1_arm64.deb ... 934s Unpacking libasan8:arm64 (14.1.0-1ubuntu1) ... 934s Selecting previously unselected package liblsan0:arm64. 934s Preparing to unpack .../024-liblsan0_14.1.0-1ubuntu1_arm64.deb ... 934s Unpacking liblsan0:arm64 (14.1.0-1ubuntu1) ... 935s Selecting previously unselected package libtsan2:arm64. 935s Preparing to unpack .../025-libtsan2_14.1.0-1ubuntu1_arm64.deb ... 935s Unpacking libtsan2:arm64 (14.1.0-1ubuntu1) ... 935s Selecting previously unselected package libubsan1:arm64. 935s Preparing to unpack .../026-libubsan1_14.1.0-1ubuntu1_arm64.deb ... 935s Unpacking libubsan1:arm64 (14.1.0-1ubuntu1) ... 935s Selecting previously unselected package libhwasan0:arm64. 936s Preparing to unpack .../027-libhwasan0_14.1.0-1ubuntu1_arm64.deb ... 936s Unpacking libhwasan0:arm64 (14.1.0-1ubuntu1) ... 936s Selecting previously unselected package libgcc-13-dev:arm64. 936s Preparing to unpack .../028-libgcc-13-dev_13.2.0-23ubuntu4_arm64.deb ... 936s Unpacking libgcc-13-dev:arm64 (13.2.0-23ubuntu4) ... 936s Selecting previously unselected package gcc-13-aarch64-linux-gnu. 936s Preparing to unpack .../029-gcc-13-aarch64-linux-gnu_13.2.0-23ubuntu4_arm64.deb ... 936s Unpacking gcc-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 936s Selecting previously unselected package gcc-13. 936s Preparing to unpack .../030-gcc-13_13.2.0-23ubuntu4_arm64.deb ... 936s Unpacking gcc-13 (13.2.0-23ubuntu4) ... 936s Selecting previously unselected package gcc-aarch64-linux-gnu. 936s Preparing to unpack .../031-gcc-aarch64-linux-gnu_4%3a13.2.0-7ubuntu1_arm64.deb ... 936s Unpacking gcc-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 936s Selecting previously unselected package gcc. 937s Preparing to unpack .../032-gcc_4%3a13.2.0-7ubuntu1_arm64.deb ... 937s Unpacking gcc (4:13.2.0-7ubuntu1) ... 937s Selecting previously unselected package libstdc++-13-dev:arm64. 937s Preparing to unpack .../033-libstdc++-13-dev_13.2.0-23ubuntu4_arm64.deb ... 937s Unpacking libstdc++-13-dev:arm64 (13.2.0-23ubuntu4) ... 937s Selecting previously unselected package g++-13-aarch64-linux-gnu. 937s Preparing to unpack .../034-g++-13-aarch64-linux-gnu_13.2.0-23ubuntu4_arm64.deb ... 937s Unpacking g++-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 937s Selecting previously unselected package g++-13. 937s Preparing to unpack .../035-g++-13_13.2.0-23ubuntu4_arm64.deb ... 937s Unpacking g++-13 (13.2.0-23ubuntu4) ... 937s Selecting previously unselected package g++-aarch64-linux-gnu. 937s Preparing to unpack .../036-g++-aarch64-linux-gnu_4%3a13.2.0-7ubuntu1_arm64.deb ... 937s Unpacking g++-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 937s Selecting previously unselected package g++. 937s Preparing to unpack .../037-g++_4%3a13.2.0-7ubuntu1_arm64.deb ... 937s Unpacking g++ (4:13.2.0-7ubuntu1) ... 938s Selecting previously unselected package build-essential. 938s Preparing to unpack .../038-build-essential_12.10ubuntu1_arm64.deb ... 938s Unpacking build-essential (12.10ubuntu1) ... 938s Selecting previously unselected package libdebhelper-perl. 938s Preparing to unpack .../039-libdebhelper-perl_13.15.3ubuntu2_all.deb ... 938s Unpacking libdebhelper-perl (13.15.3ubuntu2) ... 938s Selecting previously unselected package libtool. 938s Preparing to unpack .../040-libtool_2.4.7-7build1_all.deb ... 938s Unpacking libtool (2.4.7-7build1) ... 938s Selecting previously unselected package dh-autoreconf. 938s Preparing to unpack .../041-dh-autoreconf_20_all.deb ... 938s Unpacking dh-autoreconf (20) ... 938s Selecting previously unselected package libarchive-zip-perl. 938s Preparing to unpack .../042-libarchive-zip-perl_1.68-1_all.deb ... 938s Unpacking libarchive-zip-perl (1.68-1) ... 939s Selecting previously unselected package libfile-stripnondeterminism-perl. 939s Preparing to unpack .../043-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 939s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 939s Selecting previously unselected package dh-strip-nondeterminism. 939s Preparing to unpack .../044-dh-strip-nondeterminism_1.14.0-1_all.deb ... 939s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 939s Selecting previously unselected package debugedit. 939s Preparing to unpack .../045-debugedit_1%3a5.0-5build2_arm64.deb ... 939s Unpacking debugedit (1:5.0-5build2) ... 939s Selecting previously unselected package dwz. 939s Preparing to unpack .../046-dwz_0.15-1build6_arm64.deb ... 939s Unpacking dwz (0.15-1build6) ... 939s Selecting previously unselected package gettext. 939s Preparing to unpack .../047-gettext_0.21-14ubuntu2_arm64.deb ... 939s Unpacking gettext (0.21-14ubuntu2) ... 939s Selecting previously unselected package intltool-debian. 939s Preparing to unpack .../048-intltool-debian_0.35.0+20060710.6_all.deb ... 939s Unpacking intltool-debian (0.35.0+20060710.6) ... 939s Selecting previously unselected package po-debconf. 939s Preparing to unpack .../049-po-debconf_1.0.21+nmu1_all.deb ... 939s Unpacking po-debconf (1.0.21+nmu1) ... 939s Selecting previously unselected package debhelper. 940s Preparing to unpack .../050-debhelper_13.15.3ubuntu2_all.deb ... 940s Unpacking debhelper (13.15.3ubuntu2) ... 940s Selecting previously unselected package python3-setuptools. 940s Preparing to unpack .../051-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 940s Unpacking python3-setuptools (68.1.2-2ubuntu1) ... 940s Selecting previously unselected package dh-python. 940s Preparing to unpack .../052-dh-python_6.20240422_all.deb ... 940s Unpacking dh-python (6.20240422) ... 940s Selecting previously unselected package fonts-glyphicons-halflings. 940s Preparing to unpack .../053-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 940s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 940s Selecting previously unselected package fonts-lyx. 940s Preparing to unpack .../054-fonts-lyx_2.4.0-1_all.deb ... 940s Unpacking fonts-lyx (2.4.0-1) ... 940s Selecting previously unselected package javascript-common. 940s Preparing to unpack .../055-javascript-common_11+nmu1_all.deb ... 940s Unpacking javascript-common (11+nmu1) ... 940s Selecting previously unselected package libaec0:arm64. 941s Preparing to unpack .../056-libaec0_1.1.3-1_arm64.deb ... 941s Unpacking libaec0:arm64 (1.1.3-1) ... 941s Selecting previously unselected package libblas3:arm64. 941s Preparing to unpack .../057-libblas3_3.12.0-3build1_arm64.deb ... 941s Unpacking libblas3:arm64 (3.12.0-3build1) ... 941s Selecting previously unselected package libgeos3.12.2:arm64. 941s Preparing to unpack .../058-libgeos3.12.2_3.12.2-1_arm64.deb ... 941s Unpacking libgeos3.12.2:arm64 (3.12.2-1) ... 941s Selecting previously unselected package libgeos-c1t64:arm64. 941s Preparing to unpack .../059-libgeos-c1t64_3.12.2-1_arm64.deb ... 941s Unpacking libgeos-c1t64:arm64 (3.12.2-1) ... 941s Selecting previously unselected package libgfortran5:arm64. 941s Preparing to unpack .../060-libgfortran5_14.1.0-1ubuntu1_arm64.deb ... 941s Unpacking libgfortran5:arm64 (14.1.0-1ubuntu1) ... 941s Selecting previously unselected package libgraphite2-3:arm64. 941s Preparing to unpack .../061-libgraphite2-3_1.3.14-2build1_arm64.deb ... 941s Unpacking libgraphite2-3:arm64 (1.3.14-2build1) ... 941s Selecting previously unselected package libharfbuzz0b:arm64. 942s Preparing to unpack .../062-libharfbuzz0b_8.3.0-2build2_arm64.deb ... 942s Unpacking libharfbuzz0b:arm64 (8.3.0-2build2) ... 942s Selecting previously unselected package libsz2:arm64. 942s Preparing to unpack .../063-libsz2_1.1.3-1_arm64.deb ... 942s Unpacking libsz2:arm64 (1.1.3-1) ... 942s Selecting previously unselected package libhdf5-103-1t64:arm64. 942s Preparing to unpack .../064-libhdf5-103-1t64_1.10.10+repack-3.1ubuntu4_arm64.deb ... 942s Unpacking libhdf5-103-1t64:arm64 (1.10.10+repack-3.1ubuntu4) ... 942s Selecting previously unselected package libhdf5-hl-100t64:arm64. 942s Preparing to unpack .../065-libhdf5-hl-100t64_1.10.10+repack-3.1ubuntu4_arm64.deb ... 942s Unpacking libhdf5-hl-100t64:arm64 (1.10.10+repack-3.1ubuntu4) ... 942s Selecting previously unselected package libimagequant0:arm64. 942s Preparing to unpack .../066-libimagequant0_2.18.0-1build1_arm64.deb ... 942s Unpacking libimagequant0:arm64 (2.18.0-1build1) ... 942s Selecting previously unselected package libjs-bootstrap. 942s Preparing to unpack .../067-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 942s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 942s Selecting previously unselected package libjs-popper.js. 942s Preparing to unpack .../068-libjs-popper.js_1.16.1+ds-6_all.deb ... 942s Unpacking libjs-popper.js (1.16.1+ds-6) ... 942s Selecting previously unselected package libjs-bootstrap4. 942s Preparing to unpack .../069-libjs-bootstrap4_4.6.1+dfsg1-4_all.deb ... 943s Unpacking libjs-bootstrap4 (4.6.1+dfsg1-4) ... 943s Selecting previously unselected package libjs-jquery. 943s Preparing to unpack .../070-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 943s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 943s Selecting previously unselected package libjs-jquery-ui. 943s Preparing to unpack .../071-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... 943s Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... 943s Selecting previously unselected package liblapack3:arm64. 943s Preparing to unpack .../072-liblapack3_3.12.0-3build1_arm64.deb ... 943s Unpacking liblapack3:arm64 (3.12.0-3build1) ... 943s Selecting previously unselected package liblbfgsb0:arm64. 943s Preparing to unpack .../073-liblbfgsb0_3.0+dfsg.4-1build1_arm64.deb ... 943s Unpacking liblbfgsb0:arm64 (3.0+dfsg.4-1build1) ... 943s Selecting previously unselected package liblcms2-2:arm64. 944s Preparing to unpack .../074-liblcms2-2_2.14-2build1_arm64.deb ... 944s Unpacking liblcms2-2:arm64 (2.14-2build1) ... 944s Selecting previously unselected package libnetcdf19t64:arm64. 944s Preparing to unpack .../075-libnetcdf19t64_1%3a4.9.2-6_arm64.deb ... 944s Unpacking libnetcdf19t64:arm64 (1:4.9.2-6) ... 944s Selecting previously unselected package proj-data. 944s Preparing to unpack .../076-proj-data_9.4.1-1_all.deb ... 944s Unpacking proj-data (9.4.1-1) ... 944s Selecting previously unselected package libproj25:arm64. 944s Preparing to unpack .../077-libproj25_9.4.1-1_arm64.deb ... 944s Unpacking libproj25:arm64 (9.4.1-1) ... 944s Selecting previously unselected package libqhull-r8.0:arm64. 944s Preparing to unpack .../078-libqhull-r8.0_2020.2-6build1_arm64.deb ... 944s Unpacking libqhull-r8.0:arm64 (2020.2-6build1) ... 944s Selecting previously unselected package libraqm0:arm64. 945s Preparing to unpack .../079-libraqm0_0.10.1-1build1_arm64.deb ... 945s Unpacking libraqm0:arm64 (0.10.1-1build1) ... 945s Selecting previously unselected package libwebpdemux2:arm64. 945s Preparing to unpack .../080-libwebpdemux2_1.4.0-0.1_arm64.deb ... 945s Unpacking libwebpdemux2:arm64 (1.4.0-0.1) ... 945s Selecting previously unselected package libwebpmux3:arm64. 945s Preparing to unpack .../081-libwebpmux3_1.4.0-0.1_arm64.deb ... 945s Unpacking libwebpmux3:arm64 (1.4.0-0.1) ... 945s Selecting previously unselected package libxslt1.1:arm64. 945s Preparing to unpack .../082-libxslt1.1_1.1.39-0exp1build1_arm64.deb ... 945s Unpacking libxslt1.1:arm64 (1.1.39-0exp1build1) ... 945s Selecting previously unselected package pybuild-plugin-autopkgtest. 945s Preparing to unpack .../083-pybuild-plugin-autopkgtest_6.20240422_all.deb ... 945s Unpacking pybuild-plugin-autopkgtest (6.20240422) ... 945s Selecting previously unselected package python3-packaging. 945s Preparing to unpack .../084-python3-packaging_24.0-1_all.deb ... 945s Unpacking python3-packaging (24.0-1) ... 945s Selecting previously unselected package python3-pyproject-hooks. 946s Preparing to unpack .../085-python3-pyproject-hooks_1.1.0-1_all.deb ... 946s Unpacking python3-pyproject-hooks (1.1.0-1) ... 946s Selecting previously unselected package python3-toml. 946s Preparing to unpack .../086-python3-toml_0.10.2-1_all.deb ... 946s Unpacking python3-toml (0.10.2-1) ... 946s Selecting previously unselected package python3-wheel. 946s Preparing to unpack .../087-python3-wheel_0.43.0-1_all.deb ... 946s Unpacking python3-wheel (0.43.0-1) ... 946s Selecting previously unselected package python3-build. 946s Preparing to unpack .../088-python3-build_1.2.1-1_all.deb ... 946s Unpacking python3-build (1.2.1-1) ... 946s Selecting previously unselected package python3-installer. 946s Preparing to unpack .../089-python3-installer_0.7.0+dfsg1-3_all.deb ... 946s Unpacking python3-installer (0.7.0+dfsg1-3) ... 946s Selecting previously unselected package pybuild-plugin-pyproject. 946s Preparing to unpack .../090-pybuild-plugin-pyproject_6.20240422_all.deb ... 946s Unpacking pybuild-plugin-pyproject (6.20240422) ... 946s Selecting previously unselected package python-cartopy-data. 946s Preparing to unpack .../091-python-cartopy-data_0.23.0+dfsg-1_all.deb ... 946s Unpacking python-cartopy-data (0.23.0+dfsg-1) ... 946s Selecting previously unselected package python-matplotlib-data. 946s Preparing to unpack .../092-python-matplotlib-data_3.6.3-2ubuntu1_all.deb ... 946s Unpacking python-matplotlib-data (3.6.3-2ubuntu1) ... 946s Selecting previously unselected package python3-all. 946s Preparing to unpack .../093-python3-all_3.12.3-0ubuntu1_arm64.deb ... 946s Unpacking python3-all (3.12.3-0ubuntu1) ... 946s Selecting previously unselected package python3-appdirs. 946s Preparing to unpack .../094-python3-appdirs_1.4.4-4_all.deb ... 946s Unpacking python3-appdirs (1.4.4-4) ... 946s Selecting previously unselected package python3-brotli. 946s Preparing to unpack .../095-python3-brotli_1.1.0-2build2_arm64.deb ... 946s Unpacking python3-brotli (1.1.0-2build2) ... 946s Selecting previously unselected package python3-dateutil. 947s Preparing to unpack .../096-python3-dateutil_2.9.0-2_all.deb ... 947s Unpacking python3-dateutil (2.9.0-2) ... 947s Selecting previously unselected package libopenjp2-7:arm64. 947s Preparing to unpack .../097-libopenjp2-7_2.5.0-2build3_arm64.deb ... 947s Unpacking libopenjp2-7:arm64 (2.5.0-2build3) ... 947s Selecting previously unselected package python3-pil:arm64. 947s Preparing to unpack .../098-python3-pil_10.3.0-2_arm64.deb ... 947s Unpacking python3-pil:arm64 (10.3.0-2) ... 947s Selecting previously unselected package python3-tk:arm64. 947s Preparing to unpack .../099-python3-tk_3.12.3-0ubuntu1_arm64.deb ... 947s Unpacking python3-tk:arm64 (3.12.3-0ubuntu1) ... 947s Selecting previously unselected package python3-pil.imagetk:arm64. 947s Preparing to unpack .../100-python3-pil.imagetk_10.3.0-2_arm64.deb ... 947s Unpacking python3-pil.imagetk:arm64 (10.3.0-2) ... 947s Selecting previously unselected package python3-numpy. 947s Preparing to unpack .../101-python3-numpy_1%3a1.26.4+ds-10_arm64.deb ... 947s Unpacking python3-numpy (1:1.26.4+ds-10) ... 947s Selecting previously unselected package python3-contourpy. 947s Preparing to unpack .../102-python3-contourpy_1.0.7-3_arm64.deb ... 947s Unpacking python3-contourpy (1.0.7-3) ... 947s Selecting previously unselected package python3-cycler. 948s Preparing to unpack .../103-python3-cycler_0.12.1-1_all.deb ... 948s Unpacking python3-cycler (0.12.1-1) ... 948s Selecting previously unselected package python3-decorator. 948s Preparing to unpack .../104-python3-decorator_5.1.1-5_all.deb ... 948s Unpacking python3-decorator (5.1.1-5) ... 948s Selecting previously unselected package python3-scipy. 948s Preparing to unpack .../105-python3-scipy_1.12.0-2_arm64.deb ... 948s Unpacking python3-scipy (1.12.0-2) ... 948s Selecting previously unselected package python3-ufolib2. 949s Preparing to unpack .../106-python3-ufolib2_0.16.0+dfsg1-1_all.deb ... 949s Unpacking python3-ufolib2 (0.16.0+dfsg1-1) ... 949s Selecting previously unselected package python3-mpmath. 949s Preparing to unpack .../107-python3-mpmath_1.3.0-1_all.deb ... 949s Unpacking python3-mpmath (1.3.0-1) ... 949s Selecting previously unselected package python3-sympy. 949s Preparing to unpack .../108-python3-sympy_1.12-8_all.deb ... 949s Unpacking python3-sympy (1.12-8) ... 949s Selecting previously unselected package python3-fs. 949s Preparing to unpack .../109-python3-fs_2.4.16-4_all.deb ... 949s Unpacking python3-fs (2.4.16-4) ... 949s Selecting previously unselected package python3-lxml:arm64. 949s Preparing to unpack .../110-python3-lxml_5.2.1-1_arm64.deb ... 949s Unpacking python3-lxml:arm64 (5.2.1-1) ... 950s Selecting previously unselected package python3-lz4. 950s Preparing to unpack .../111-python3-lz4_4.0.2+dfsg-1build4_arm64.deb ... 950s Unpacking python3-lz4 (4.0.2+dfsg-1build4) ... 950s Selecting previously unselected package python3-unicodedata2. 950s Preparing to unpack .../112-python3-unicodedata2_15.1.0+ds-1build1_arm64.deb ... 950s Unpacking python3-unicodedata2 (15.1.0+ds-1build1) ... 950s Selecting previously unselected package unicode-data. 950s Preparing to unpack .../113-unicode-data_15.1.0-1_all.deb ... 950s Unpacking unicode-data (15.1.0-1) ... 950s Selecting previously unselected package python3-fonttools. 950s Preparing to unpack .../114-python3-fonttools_4.46.0-1build2_arm64.deb ... 950s Unpacking python3-fonttools (4.46.0-1build2) ... 950s Selecting previously unselected package python3-kiwisolver. 951s Preparing to unpack .../115-python3-kiwisolver_1.4.5-1_arm64.deb ... 951s Unpacking python3-kiwisolver (1.4.5-1) ... 951s Selecting previously unselected package python3-matplotlib. 951s Preparing to unpack .../116-python3-matplotlib_3.6.3-2ubuntu1_arm64.deb ... 951s Unpacking python3-matplotlib (3.6.3-2ubuntu1) ... 951s Selecting previously unselected package python3-pyproj. 951s Preparing to unpack .../117-python3-pyproj_3.6.1-4_arm64.deb ... 951s Unpacking python3-pyproj (3.6.1-4) ... 951s Selecting previously unselected package python3-pyshp. 951s Preparing to unpack .../118-python3-pyshp_2.3.1-2_all.deb ... 951s Unpacking python3-pyshp (2.3.1-2) ... 951s Selecting previously unselected package python3-shapely. 951s Preparing to unpack .../119-python3-shapely_2.0.4-1_arm64.deb ... 951s Unpacking python3-shapely (2.0.4-1) ... 951s Selecting previously unselected package python3-cartopy. 951s Preparing to unpack .../120-python3-cartopy_0.23.0+dfsg-1_arm64.deb ... 951s Unpacking python3-cartopy (0.23.0+dfsg-1) ... 952s Selecting previously unselected package python3-cftime. 952s Preparing to unpack .../121-python3-cftime_1.6.4-1_arm64.deb ... 952s Unpacking python3-cftime (1.6.4-1) ... 952s Selecting previously unselected package python3-iniconfig. 952s Preparing to unpack .../122-python3-iniconfig_1.1.1-2_all.deb ... 952s Unpacking python3-iniconfig (1.1.1-2) ... 952s Selecting previously unselected package python3-pandas-lib:arm64. 952s Preparing to unpack .../123-python3-pandas-lib_2.1.4+dfsg-8_arm64.deb ... 952s Unpacking python3-pandas-lib:arm64 (2.1.4+dfsg-8) ... 952s Selecting previously unselected package python3-pandas. 952s Preparing to unpack .../124-python3-pandas_2.1.4+dfsg-8_all.deb ... 952s Unpacking python3-pandas (2.1.4+dfsg-8) ... 952s Selecting previously unselected package python3-pint. 952s Preparing to unpack .../125-python3-pint_0.19.2-1_all.deb ... 952s Unpacking python3-pint (0.19.2-1) ... 952s Selecting previously unselected package python3-platformdirs. 952s Preparing to unpack .../126-python3-platformdirs_4.2.1-1_all.deb ... 952s Unpacking python3-platformdirs (4.2.1-1) ... 952s Selecting previously unselected package python3-pooch. 952s Preparing to unpack .../127-python3-pooch_1.8.2-1_all.deb ... 952s Unpacking python3-pooch (1.8.2-1) ... 952s Selecting previously unselected package python3-traitlets. 953s Preparing to unpack .../128-python3-traitlets_5.5.0-2_all.deb ... 953s Unpacking python3-traitlets (5.5.0-2) ... 953s Selecting previously unselected package python3-xarray. 953s Preparing to unpack .../129-python3-xarray_2024.03.0-1_all.deb ... 953s Unpacking python3-xarray (2024.03.0-1) ... 953s Selecting previously unselected package python3-metpy. 953s Preparing to unpack .../130-python3-metpy_1.6.2+ds-1_all.deb ... 953s Unpacking python3-metpy (1.6.2+ds-1) ... 953s Selecting previously unselected package python3-netcdf4. 953s Preparing to unpack .../131-python3-netcdf4_1.7.0-1_arm64.deb ... 953s Unpacking python3-netcdf4 (1.7.0-1) ... 953s Selecting previously unselected package python3-pluggy. 953s Preparing to unpack .../132-python3-pluggy_1.5.0-1_all.deb ... 953s Unpacking python3-pluggy (1.5.0-1) ... 953s Selecting previously unselected package python3-pytest. 953s Preparing to unpack .../133-python3-pytest_7.4.4-1_all.deb ... 953s Unpacking python3-pytest (7.4.4-1) ... 953s Selecting previously unselected package python3-pytest-mpl. 953s Preparing to unpack .../134-python3-pytest-mpl_0.17.0-1_all.deb ... 953s Unpacking python3-pytest-mpl (0.17.0-1) ... 953s Selecting previously unselected package python3-setuptools-scm. 953s Preparing to unpack .../135-python3-setuptools-scm_8.1.0-1_all.deb ... 953s Unpacking python3-setuptools-scm (8.1.0-1) ... 953s Selecting previously unselected package autopkgtest-satdep. 953s Preparing to unpack .../136-1-autopkgtest-satdep.deb ... 953s Unpacking autopkgtest-satdep (0) ... 953s Setting up javascript-common (11+nmu1) ... 953s Setting up libgraphite2-3:arm64 (1.3.14-2build1) ... 953s Setting up liblcms2-2:arm64 (2.14-2build1) ... 953s Setting up python3-iniconfig (1.1.1-2) ... 953s Setting up proj-data (9.4.1-1) ... 953s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 954s Setting up libxrender1:arm64 (1:0.9.10-1.1build1) ... 954s Setting up libproj25:arm64 (9.4.1-1) ... 954s Setting up libjs-popper.js (1.16.1+ds-6) ... 954s Setting up python3-lz4 (4.0.2+dfsg-1build4) ... 954s Setting up libarchive-zip-perl (1.68-1) ... 954s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 954s Setting up python3-unicodedata2 (15.1.0+ds-1build1) ... 954s Setting up fonts-lyx (2.4.0-1) ... 954s Setting up libwebpdemux2:arm64 (1.4.0-0.1) ... 954s Setting up libdebhelper-perl (13.15.3ubuntu2) ... 954s Setting up libgeos3.12.2:arm64 (3.12.2-1) ... 954s Setting up x11-common (1:7.7+23ubuntu3) ... 955s Setting up m4 (1.4.19-4build1) ... 955s Setting up libqhull-r8.0:arm64 (2020.2-6build1) ... 955s Setting up python3-all (3.12.3-0ubuntu1) ... 955s Setting up python3-pyshp (2.3.1-2) ... 955s Setting up libgomp1:arm64 (14.1.0-1ubuntu1) ... 955s Setting up python3-wheel (0.43.0-1) ... 955s Setting up libaec0:arm64 (1.1.3-1) ... 955s Setting up python3-platformdirs (4.2.1-1) ... 955s Setting up unicode-data (15.1.0-1) ... 955s Setting up python3-pint (0.19.2-1) ... 956s Setting up python3-decorator (5.1.1-5) ... 956s Setting up autotools-dev (20220109.1) ... 956s Setting up libblas3:arm64 (3.12.0-3build1) ... 956s update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode 956s Setting up python3-packaging (24.0-1) ... 956s Setting up python3-pyproject-hooks (1.1.0-1) ... 956s Setting up python-cartopy-data (0.23.0+dfsg-1) ... 956s Setting up python3-pooch (1.8.2-1) ... 957s Setting up python3-brotli (1.1.0-2build2) ... 957s Setting up python3-cycler (0.12.1-1) ... 957s Setting up libimagequant0:arm64 (2.18.0-1build1) ... 957s Setting up python3-kiwisolver (1.4.5-1) ... 957s Setting up libmpc3:arm64 (1.3.1-1build1) ... 957s Setting up libatomic1:arm64 (14.1.0-1ubuntu1) ... 957s Setting up libtcl8.6:arm64 (8.6.14+dfsg-1build1) ... 957s Setting up autopoint (0.21-14ubuntu2) ... 957s Setting up python3-toml (0.10.2-1) ... 957s Setting up python3-installer (0.7.0+dfsg1-3) ... 958s Setting up libgfortran5:arm64 (14.1.0-1ubuntu1) ... 958s Setting up autoconf (2.71-3) ... 958s Setting up python3-pluggy (1.5.0-1) ... 958s Setting up libubsan1:arm64 (14.1.0-1ubuntu1) ... 958s Setting up dwz (0.15-1build6) ... 958s Setting up libhwasan0:arm64 (14.1.0-1ubuntu1) ... 958s Setting up python3-traitlets (5.5.0-2) ... 958s Setting up libasan8:arm64 (14.1.0-1ubuntu1) ... 958s Setting up libxslt1.1:arm64 (1.1.39-0exp1build1) ... 958s Setting up debugedit (1:5.0-5build2) ... 958s Setting up libopenjp2-7:arm64 (2.5.0-2build3) ... 958s Setting up libharfbuzz0b:arm64 (8.3.0-2build2) ... 958s Setting up python3-dateutil (2.9.0-2) ... 958s Setting up libxss1:arm64 (1:1.2.3-1build3) ... 958s Setting up libjs-bootstrap4 (4.6.1+dfsg1-4) ... 958s Setting up libtsan2:arm64 (14.1.0-1ubuntu1) ... 958s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 958s Setting up python3-mpmath (1.3.0-1) ... 959s Setting up libisl23:arm64 (0.26-3build1) ... 959s Setting up python3-build (1.2.1-1) ... 959s Setting up python-matplotlib-data (3.6.3-2ubuntu1) ... 959s Setting up libwebpmux3:arm64 (1.4.0-0.1) ... 959s Setting up python3-appdirs (1.4.4-4) ... 959s Setting up libcc1-0:arm64 (14.1.0-1ubuntu1) ... 959s Setting up liblsan0:arm64 (14.1.0-1ubuntu1) ... 959s Setting up libsz2:arm64 (1.1.3-1) ... 959s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 959s Setting up libitm1:arm64 (14.1.0-1ubuntu1) ... 959s Setting up automake (1:1.16.5-1.3ubuntu1) ... 959s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 959s Setting up dh-python (6.20240422) ... 960s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 960s Setting up python3-sympy (1.12-8) ... 967s Setting up liblapack3:arm64 (3.12.0-3build1) ... 967s update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode 967s Setting up libxft2:arm64 (2.3.6-1build1) ... 967s Setting up gettext (0.21-14ubuntu2) ... 967s Setting up cpp-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 967s Setting up pybuild-plugin-pyproject (6.20240422) ... 967s Setting up python3-pytest (7.4.4-1) ... 967s Setting up libgeos-c1t64:arm64 (3.12.2-1) ... 967s Setting up libtk8.6:arm64 (8.6.14-1build1) ... 967s Setting up python3-setuptools-scm (8.1.0-1) ... 967s Setting up intltool-debian (0.35.0+20060710.6) ... 967s Setting up python3-fs (2.4.16-4) ... 968s Setting up cpp-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 968s Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... 968s Setting up libraqm0:arm64 (0.10.1-1build1) ... 968s Setting up python3-numpy (1:1.26.4+ds-10) ... 970s Setting up dh-strip-nondeterminism (1.14.0-1) ... 970s Setting up libgcc-13-dev:arm64 (13.2.0-23ubuntu4) ... 970s Setting up python3-lxml:arm64 (5.2.1-1) ... 970s Setting up python3-contourpy (1.0.7-3) ... 970s Setting up libhdf5-103-1t64:arm64 (1.10.10+repack-3.1ubuntu4) ... 970s Setting up libstdc++-13-dev:arm64 (13.2.0-23ubuntu4) ... 970s Setting up liblbfgsb0:arm64 (3.0+dfsg.4-1build1) ... 970s Setting up libhdf5-hl-100t64:arm64 (1.10.10+repack-3.1ubuntu4) ... 970s Setting up python3-shapely (2.0.4-1) ... 970s Setting up tk8.6-blt2.5 (2.5.3+dfsg-7build1) ... 970s Setting up libnetcdf19t64:arm64 (1:4.9.2-6) ... 970s Setting up python3-scipy (1.12.0-2) ... 974s Setting up cpp-13 (13.2.0-23ubuntu4) ... 974s Setting up po-debconf (1.0.21+nmu1) ... 974s Setting up blt (2.5.3+dfsg-7build1) ... 974s Setting up python3-pandas-lib:arm64 (2.1.4+dfsg-8) ... 974s Setting up python3-tk:arm64 (3.12.3-0ubuntu1) ... 974s Setting up gcc-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 974s Setting up python3-pyproj (3.6.1-4) ... 974s Setting up python3-pil:arm64 (10.3.0-2) ... 974s Setting up python3-pandas (2.1.4+dfsg-8) ... 979s Setting up python3-pil.imagetk:arm64 (10.3.0-2) ... 979s Setting up gcc-13 (13.2.0-23ubuntu4) ... 979s Setting up python3-cftime (1.6.4-1) ... 979s Setting up cpp (4:13.2.0-7ubuntu1) ... 979s Setting up python3-netcdf4 (1.7.0-1) ... 980s Setting up g++-13-aarch64-linux-gnu (13.2.0-23ubuntu4) ... 980s Setting up gcc-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 980s Setting up g++-13 (13.2.0-23ubuntu4) ... 980s Setting up libtool (2.4.7-7build1) ... 980s Setting up python3-xarray (2024.03.0-1) ... 981s Setting up gcc (4:13.2.0-7ubuntu1) ... 981s Setting up dh-autoreconf (20) ... 981s Setting up g++-aarch64-linux-gnu (4:13.2.0-7ubuntu1) ... 981s Setting up debhelper (13.15.3ubuntu2) ... 981s Setting up g++ (4:13.2.0-7ubuntu1) ... 981s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 981s Setting up build-essential (12.10ubuntu1) ... 981s Setting up pybuild-plugin-autopkgtest (6.20240422) ... 981s Setting up python3-ufolib2 (0.16.0+dfsg1-1) ... 981s Setting up python3-fonttools (4.46.0-1build2) ... 982s Setting up python3-matplotlib (3.6.3-2ubuntu1) ... 984s Setting up python3-pytest-mpl (0.17.0-1) ... 984s Setting up python3-cartopy (0.23.0+dfsg-1) ... 984s Setting up python3-metpy (1.6.2+ds-1) ... 984s Setting up autopkgtest-satdep (0) ... 984s Processing triggers for libc-bin (2.39-0ubuntu9) ... 985s Processing triggers for man-db (2.12.1-2) ... 986s Processing triggers for install-info (7.1-3build2) ... 993s (Reading database ... 91075 files and directories currently installed.) 993s Removing autopkgtest-satdep (0) ... 994s autopkgtest [11:12:54]: test pybuild-autopkgtest: pybuild-autopkgtest 994s autopkgtest [11:12:54]: test pybuild-autopkgtest: [----------------------- 994s pybuild-autopkgtest 994s I: pybuild pybuild:308: ln -s /tmp/autopkgtest.l3G77H/build.gIE/src/conftest.py /tmp/autopkgtest.l3G77H/build.gIE/src/tests 2>/dev/null || true; ln -s /tmp/autopkgtest.l3G77H/build.gIE/src/src/metpy/*.txt /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build/metpy 2>/dev/null || true; ln -s /tmp/autopkgtest.l3G77H/build.gIE/src/src/metpy/plots/_static /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true; ln -s /tmp/autopkgtest.l3G77H/build.gIE/src/src/metpy/plots/colortable_files /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true; ln -s /tmp/autopkgtest.l3G77H/build.gIE/src/src/metpy/plots/nexrad_tables /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true 994s I: pybuild base:311: cd /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build; python3.12 -m pytest -W ignore::DeprecationWarning -k "not test_projection and not test_pyproj_projection and not test_no_projection and not test_globe and not test_geodetic and not test_unit_array and not test_units and not test_units_data and not test_magnitude_with_quantity and not test_convert_units and not test_convert_to_base_units and not test_missing_grid_mapping_invalid and not test_coordinates_basic_by_method and not test_coordinates_basic_by_property and not test_narr_example_variable_without_grid_mapping and not test_find_axis_name_ and not test_find_axis_number_ and not test_cf_parse_with_grid_mapping and not test_data_array_loc_ and not test_data_array_sel_ and not test_dataset_ and not test_check_axis_with_bad_unit and not test_auxilary_lat_lon_ and not test_zoom_xarray and not test_parse_grid_arguments_xarray and not test_absolute_momentum_xarray_units_attr and not test_precipitable_water and not test_mean_pressure_weighted and not test_weighted_continuous_average and not test_precipitable_water_xarray and not test_bunkers_motion and not test_bulk_shear and not test_critical_angle and not _4d and not test_interpolate_to_grid and not test_natural_neighbor_to_grid and not test_inverse_distance_to_grid and not test_interpolate_to_points and not test_natural_neighbor_to_points and not test_inverse_distance_to_points and not test_declarative_ and not test_no_field_error and not test_ndim_error_ and not test_projection_object and not test_colorfill and not test_global and not test_latlon and not test_plotobs_units_with_formatter and not test_attribute_error_ and not test_time_deltas and not test_latlon_default_units and not test_add_timestamp_xarray and not test_find_nn_triangles_point and not test_vorticity_grid_pole and not test_corfidi_motion and not test_corfidi_motion_override_llj and not test_corfidi_corfidi_llj_unaivalable and not test_corfidi_corfidi_cloudlayer_trimmed and not test_corfidi_motion_with_nans and not test_colorbar_kwargs and not test_xy_not_vertical and not test_lcc_minimal and not test_lcc_single_std_parallel" --ignore=tests/io/test_gempak.py --ignore=tests/io/test_gini.py --ignore=tests/io/test_metar.py --ignore=tests/io/test_nexrad.py --ignore=tests/io/test_station_data.py --ignore=tests/io/test_text.py 1000s ============================= test session starts ============================== 1000s platform linux -- Python 3.12.4, pytest-7.4.4, pluggy-1.5.0 1000s Matplotlib: 3.6.3 1000s Freetype: 2.13.2 1000s Dep Versions: Matplotlib 3.6.3, NumPy 1.26.4, Pandas 2.1.4, Pint 0.19.2 1000s PyProj 3.6.1, SciPy 1.12.0, Traitlets 5.5.0, Xarray 999 1000s rootdir: /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build 1000s configfile: pyproject.toml 1000s plugins: mpl-0.17.0 1000s collected 1257 items / 271 deselected / 986 selected 1000s 1000s tests/test_cbook.py .. [ 0%] 1000s tests/test_deprecation.py . [ 0%] 1000s tests/test_packaging.py . [ 0%] 1000s tests/test_testing.py ........ [ 1%] 1000s tests/test_xarray.py ................................................... [ 6%] 1000s ........................................................................ [ 13%] 1003s ............................................. [ 18%] 1003s tests/calc/test_basic.py s...s....s...s...s....s........s.......s....s.. [ 23%] 1003s ......s....s....s...s....s...s...s...s......s........s.....s..........s. [ 30%] 1003s ...s...s.....s....s... [ 32%] 1003s tests/calc/test_calc_tools.py .......................................... [ 36%] 1004s ......................FF...............................FFFFFFF.FFFF..... [ 44%] 1005s ............................. [ 47%] 1008s tests/calc/test_cross_sections.py ............ [ 48%] 1008s tests/calc/test_indices.py .... [ 48%] 1009s tests/calc/test_kinematics.py .......................................... [ 52%] 1010s ......FFFFFF............. [ 55%] 1010s tests/calc/test_thermo.py ................................x............. [ 60%] 1011s ...............F.........................F.............................. [ 67%] 1011s ........................................................................ [ 74%] 1012s .......FFFFF............. [ 77%] 1012s tests/calc/test_turbulence.py ........................... [ 80%] 1012s tests/interpolate/test_geometry.py ............ [ 81%] 1012s tests/interpolate/test_grid.py ....... [ 81%] 1012s tests/interpolate/test_interpolate_tools.py ...... [ 82%] 1012s tests/interpolate/test_one_dimension.py .................. [ 84%] 1012s tests/interpolate/test_points.py ... [ 84%] 1013s tests/interpolate/test_slices.py ........ [ 85%] 1013s tests/io/test_tools.py .. [ 85%] 1013s tests/plots/test_cartopy_utils.py ....... [ 86%] 1013s tests/plots/test_ctables.py .......... [ 87%] 1013s tests/plots/test_declarative.py ........... [ 88%] 1013s tests/plots/test_mapping.py .................... [ 90%] 1014s tests/plots/test_mpl.py . [ 90%] 1014s tests/plots/test_patheffects.py ........ [ 91%] 1014s tests/plots/test_plot_areas.py ..... [ 91%] 1015s tests/plots/test_skewt.py .................................... [ 95%] 1015s tests/plots/test_station_plot.py .......................... [ 98%] 1015s tests/plots/test_util.py ............. [ 99%] 1016s tests/plots/test_wx_symbols.py .... [100%] 1016s 1016s =================================== FAILURES =================================== 1016s __________________________ test_get_layer_heights_agl __________________________ 1016s 1016s def test_get_layer_heights_agl(): 1016s """Test get_layer_heights with interpolation.""" 1016s heights = np.arange(300, 1200, 100) * units.m 1016s data = heights.m * 0.1 * units.degC 1016s > heights, data = get_layer_heights(heights, 500 * units.m, data, with_agl=True) 1016s 1016s tests/calc/test_calc_tools.py:461: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = None, interpolate = True 1016s with_agl = True 1016s args = (,) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _________________ test_get_layer_heights_agl_bottom_no_interp __________________ 1016s 1016s def test_get_layer_heights_agl_bottom_no_interp(): 1016s """Test get_layer_heights with no interpolation and a bottom.""" 1016s heights_init = np.arange(300, 1200, 100) * units.m 1016s data = heights_init.m * 0.1 * units.degC 1016s > heights, data = get_layer_heights(heights_init, 500 * units.m, data, with_agl=True, 1016s interpolate=False, bottom=200 * units.m) 1016s 1016s tests/calc/test_calc_tools.py:472: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = False, with_agl = True 1016s args = (,) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s ___________________________ test_angle_to_direction ____________________________ 1016s 1016s def test_angle_to_direction(): 1016s """Test single angle in degree.""" 1016s expected_dirs = DIR_STRS[:-1] # UND at -1 1016s > output_dirs = [angle_to_direction(angle) for angle in FULL_CIRCLE_DEGREES] 1016s 1016s tests/calc/test_calc_tools.py:850: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = , full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _________________________ test_angle_to_direction_edge _________________________ 1016s 1016s def test_angle_to_direction_edge(): 1016s """Test single angle edge case (360 and no units) in degree.""" 1016s expected_dirs = 'N' 1016s > output_dirs = angle_to_direction(360) 1016s 1016s tests/calc/test_calc_tools.py:857: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = , full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _________________________ test_angle_to_direction_list _________________________ 1016s 1016s def test_angle_to_direction_list(): 1016s """Test list of angles in degree.""" 1016s expected_dirs = DIR_STRS[:-1] 1016s > output_dirs = list(angle_to_direction(FULL_CIRCLE_DEGREES)) 1016s 1016s tests/calc/test_calc_tools.py:864: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _________________________ test_angle_to_direction_arr __________________________ 1016s 1016s def test_angle_to_direction_arr(): 1016s """Test array of angles in degree.""" 1016s expected_dirs = DIR_STRS[:-1] 1016s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES) 1016s 1016s tests/calc/test_calc_tools.py:871: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _________________________ test_angle_to_direction_full _________________________ 1016s 1016s def test_angle_to_direction_full(): 1016s """Test the `full` keyword argument, expecting unabbrieviated output.""" 1016s expected_dirs = [ 1016s 'North', 'North North East', 'North East', 'East North East', 1016s 'East', 'East South East', 'South East', 'South South East', 1016s 'South', 'South South West', 'South West', 'West South West', 1016s 'West', 'West North West', 'North West', 'North North West' 1016s ] 1016s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, full=True) 1016s 1016s tests/calc/test_calc_tools.py:883: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = True, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s ____________________ test_angle_to_direction_invalid_scalar ____________________ 1016s 1016s @pytest.mark.filterwarnings('ignore:invalid value encountered in remainder:RuntimeWarning') 1016s def test_angle_to_direction_invalid_scalar(): 1016s """Test invalid angle.""" 1016s expected_dirs = UND 1016s > output_dirs = angle_to_direction(None) 1016s 1016s tests/calc/test_calc_tools.py:891: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = , full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _____________________ test_angle_to_direction_invalid_arr ______________________ 1016s 1016s @pytest.mark.filterwarnings('ignore:invalid value encountered in remainder:RuntimeWarning') 1016s def test_angle_to_direction_invalid_arr(): 1016s """Test array of invalid angles.""" 1016s expected_dirs = ['NE', UND, UND, UND, 'N'] 1016s > output_dirs = angle_to_direction(['46', None, np.nan, None, '362.']) 1016s 1016s tests/calc/test_calc_tools.py:899: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = , full = False 1016s level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _______________________ test_angle_to_direction_level_3 ________________________ 1016s 1016s def test_angle_to_direction_level_3(): 1016s """Test array of angles in degree.""" 1016s expected_dirs = DIR_STRS[:-1] # UND at -1 1016s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=3) 1016s 1016s tests/calc/test_calc_tools.py:913: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = False, level = 3 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _______________________ test_angle_to_direction_level_2 ________________________ 1016s 1016s def test_angle_to_direction_level_2(): 1016s """Test array of angles in degree.""" 1016s expected_dirs = [ 1016s 'N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW' 1016s ] 1016s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=2) 1016s 1016s tests/calc/test_calc_tools.py:923: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = False, level = 2 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _______________________ test_angle_to_direction_level_1 ________________________ 1016s 1016s def test_angle_to_direction_level_1(): 1016s """Test array of angles in degree.""" 1016s expected_dirs = [ 1016s 'N', 'N', 'N', 'E', 'E', 'E', 'E', 'S', 'S', 'S', 'S', 1016s 'W', 'W', 'W', 'W', 'N'] 1016s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=1) 1016s 1016s tests/calc/test_calc_tools.py:932: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = 1016s full = False, level = 1 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _______________________ test_angle_to_direction_ndarray ________________________ 1016s 1016s def test_angle_to_direction_ndarray(): 1016s """Test array of angles in degree with a 2d numpy array.""" 1016s expected_dirs = np.array([['E', 'W'], ['E', 'W']]) 1016s input_angle = np.array([[90, 270], [90, 270]]) 1016s > output_dirs = angle_to_direction(input_angle, level=1) 1016s 1016s tests/calc/test_calc_tools.py:940: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s input_angle = , full = False 1016s level = 1 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s def angle_to_direction(input_angle, full=False, level=3): 1016s """Convert the meteorological angle to directional text. 1016s 1016s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 1016s and rounds to the nearest angle (355 -> N | 404 -> NNE) 1016s 1016s Parameters 1016s ---------- 1016s input_angle : float or array-like 1016s Angles such as 0, 25, 45, 360, 410, etc. 1016s full : bool 1016s True returns full text (South), False returns abbreviated text (S) 1016s level : int 1016s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 1016s 1016s Returns 1016s ------- 1016s direction 1016s The directional text 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import angle_to_direction 1016s >>> from metpy.units import units 1016s >>> angle_to_direction(225. * units.deg) 1016s 'SW' 1016s 1016s """ 1016s try: # strip units temporarily 1016s origin_units = input_angle.units 1016s input_angle = input_angle.m 1016s except AttributeError: # no units associated 1016s origin_units = units.degree 1016s 1016s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 1016s input_angle = [input_angle] 1016s scalar = True 1016s else: 1016s scalar = False 1016s 1016s np_input_angle = np.array(input_angle).astype(float) 1016s origshape = np_input_angle.shape 1016s ndarray = len(origshape) > 1 1016s # clean any numeric strings, negatives, and None does not handle strings with alphabet 1016s input_angle = units.Quantity(np_input_angle, origin_units) 1016s input_angle[input_angle < 0] = np.nan 1016s 1016s # Normalize between 0 - 360 1016s norm_angles = input_angle % MAX_DEGREE_ANGLE 1016s 1016s if level == 3: 1016s nskip = 1 1016s elif level == 2: 1016s nskip = 2 1016s elif level == 1: 1016s nskip = 4 1016s else: 1016s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 1016s raise ValueError(err_msg) 1016s 1016s angle_dict = { 1016s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 1016s for i, dir_str in enumerate(DIR_STRS[::nskip]) 1016s } 1016s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 1016s angle_dict[UND_ANGLE] = UND 1016s 1016s # round to the nearest angles for dict lookup 1016s # 0.001 is subtracted so there's an equal number of dir_str from 1016s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 1016s 1016s # without the 0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 1016s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 1016s 1016s # with the -0.001, level=2 would yield: 1016s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 1016s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 1016s 1016s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 1016s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 1016s _________________ test_storm_relative_helicity_no_storm_motion _________________ 1016s 1016s def test_storm_relative_helicity_no_storm_motion(): 1016s """Test storm relative helicity with no storm motion and differing input units.""" 1016s u = np.array([0, 20, 10, 0]) * units('m/s') 1016s v = np.array([20, 0, 0, 10]) * units('m/s') 1016s u = u.to('knots') 1016s heights = np.array([0, 250, 500, 750]) * units.m 1016s 1016s > positive_srh, negative_srh, total_srh = storm_relative_helicity(heights, u, v, 1016s depth=750 * units.meters) 1016s 1016s tests/calc/test_kinematics.py:550: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = (, ) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s __________________ test_storm_relative_helicity_storm_motion ___________________ 1016s 1016s def test_storm_relative_helicity_storm_motion(): 1016s """Test storm relative helicity with storm motion and differing input units.""" 1016s u = np.array([5, 25, 15, 5]) * units('m/s') 1016s v = np.array([30, 10, 10, 20]) * units('m/s') 1016s u = u.to('knots') 1016s heights = np.array([0, 250, 500, 750]) * units.m 1016s 1016s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 1016s depth=750 * units.meters, 1016s storm_u=5 * units('m/s'), 1016s storm_v=10 * units('m/s')) 1016s 1016s tests/calc/test_kinematics.py:565: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = (, ) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _______________ test_storm_relative_helicity_with_interpolation ________________ 1016s 1016s def test_storm_relative_helicity_with_interpolation(): 1016s """Test storm relative helicity with interpolation.""" 1016s u = np.array([-5, 15, 25, 15, -5]) * units('m/s') 1016s v = np.array([40, 20, 10, 10, 30]) * units('m/s') 1016s u = u.to('knots') 1016s heights = np.array([0, 100, 200, 300, 400]) * units.m 1016s 1016s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 1016s bottom=50 * units.meters, 1016s depth=300 * units.meters, 1016s storm_u=5 * units('m/s'), 1016s storm_v=10 * units('m/s')) 1016s 1016s tests/calc/test_kinematics.py:582: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = (, ) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _________________________ test_storm_relative_helicity _________________________ 1016s 1016s def test_storm_relative_helicity(): 1016s """Test function for SRH calculations on an eigth-circle hodograph.""" 1016s # Create larger arrays for everything except pressure to make a smoother graph 1016s hgt_int = np.arange(0, 2050, 50) 1016s hgt_int = hgt_int * units('meter') 1016s dir_int = np.arange(180, 272.25, 2.25) 1016s spd_int = np.zeros(hgt_int.shape[0]) 1016s spd_int[:] = 2. 1016s u_int, v_int = wind_components(spd_int * units('m/s'), dir_int * units.degree) 1016s 1016s # Put in the correct value of SRH for a eighth-circle, 2 m/s hodograph 1016s # (SRH = 2 * area under hodo, in this case...) 1016s srh_true_p = (.25 * np.pi * (2 ** 2)) * units('m^2/s^2') 1016s 1016s # Since there's only positive SRH in this case, total SRH will be equal to positive SRH and 1016s # negative SRH will be zero. 1016s srh_true_t = srh_true_p 1016s srh_true_n = 0 * units('m^2/s^2') 1016s > p_srh, n_srh, t_srh = storm_relative_helicity(hgt_int, u_int, v_int, 1016s 1000 * units('meter'), 1016s bottom=0 * units('meter'), 1016s storm_u=0 * units.knot, 1016s storm_v=0 * units.knot) 1016s 1016s tests/calc/test_kinematics.py:611: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = () 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _______________________ test_storm_relative_helicity_agl _______________________ 1016s 1016s def test_storm_relative_helicity_agl(): 1016s """Test storm relative helicity with heights above ground.""" 1016s u = np.array([-5, 15, 25, 15, -5]) * units('m/s') 1016s v = np.array([40, 20, 10, 10, 30]) * units('m/s') 1016s u = u.to('knots') 1016s heights = np.array([100, 200, 300, 400, 500]) * units.m 1016s 1016s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 1016s bottom=50 * units.meters, 1016s depth=300 * units.meters, 1016s storm_u=5 * units('m/s'), 1016s storm_v=10 * units('m/s')) 1016s 1016s tests/calc/test_kinematics.py:628: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = (, ) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _____________________ test_storm_relative_helicity_masked ______________________ 1016s 1016s def test_storm_relative_helicity_masked(): 1016s """Test that srh does not return masked values.""" 1016s h = units.Quantity(np.ma.array([20.72, 234.85, 456.69, 683.21]), units.meter) 1016s u = units.Quantity(np.ma.array(np.zeros((4,))), units.knot) 1016s v = units.Quantity(np.zeros_like(u), units.knot) 1016s > pos, neg, com = storm_relative_helicity(h, u, v, depth=500 * units.meter, 1016s storm_u=15.77463015050421 * units('m/s'), 1016s storm_v=21.179437759755647 * units('m/s')) 1016s 1016s tests/calc/test_kinematics.py:646: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 1016s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s height = 1016s depth = , bottom = 1016s interpolate = True, with_agl = True 1016s args = (, ) 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[length]') 1016s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 1016s """Return an atmospheric layer from upper air data with the requested bottom and depth. 1016s 1016s This function will subset an upper air dataset to contain only the specified layer using 1016s the height only. 1016s 1016s Parameters 1016s ---------- 1016s height : array-like 1016s Atmospheric height 1016s depth : `pint.Quantity` 1016s Thickness of the layer 1016s args : array-like 1016s Atmospheric variable(s) measured at the given pressures 1016s bottom : `pint.Quantity`, optional 1016s Bottom of the layer 1016s interpolate : bool, optional 1016s Interpolate the top and bottom points if they are not in the given data. Defaults 1016s to True. 1016s with_agl : bool, optional 1016s Returns the height as above ground level by subtracting the minimum height in the 1016s provided height. Defaults to False. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity, pint.Quantity` 1016s Height and data variables of the layer 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Also, this will return Pint Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``heights`` parameter to ``height`` 1016s 1016s """ 1016s # Make sure pressure and datavars are the same length 1016s for datavar in args: 1016s if len(height) != len(datavar): 1016s raise ValueError('Height and data variables must have the same length.') 1016s 1016s # If we want things in AGL, subtract the minimum height from all height values 1016s if with_agl: 1016s > sfc_height = np.min(height) 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 1016s _________________________________ test_lfc_ml2 _________________________________ 1016s 1016s def test_lfc_ml2(): 1016s """Test a mixed-layer LFC calculation that previously crashed.""" 1016s levels = np.array([1024.95703125, 1016.61474609, 1005.33056641, 991.08544922, 973.4163208, 1016s 951.3381958, 924.82836914, 898.25482178, 873.46124268, 848.69830322, 1016s 823.92553711, 788.49304199, 743.44580078, 700.50970459, 659.62017822, 1016s 620.70861816, 583.69421387, 548.49719238, 515.03826904, 483.24401855, 1016s 453.0418396, 424.36477661, 397.1505127, 371.33441162, 346.85922241, 1016s 323.66995239, 301.70935059, 280.92651367, 261.27053833, 242.69168091, 1016s 225.14237976, 208.57781982, 192.95333862, 178.22599792, 164.39630127, 1016s 151.54336548, 139.68635559, 128.74923706, 118.6588974, 109.35111237, 1016s 100.76405334, 92.84288025, 85.53556824, 78.79430389, 72.57549286, 1016s 66.83885193, 61.54678726, 56.66480637, 52.16108322]) * units.mbar 1016s temperatures = np.array([6.00750732, 5.14892578, 4.177948, 3.00268555, 1.55535889, 1016s -0.25527954, -1.93988037, -3.57766724, -4.40600586, -4.19238281, 1016s -3.71185303, -4.47943115, -6.81280518, -8.08685303, -8.41287231, 1016s -10.79302979, -14.13262939, -16.85784912, -19.51675415, 1016s -22.28689575, -24.99938965, -27.79664612, -30.90414429, 1016s -34.49435425, -38.438797, -42.27981567, -45.99230957, 1016s -49.75340271, -53.58230591, -57.30686951, -60.76026917, 1016s -63.92070007, -66.72470093, -68.97846985, -70.4264679, 1016s -71.16407776, -71.53797913, -71.64375305, -71.52735901, 1016s -71.53523254, -71.61097717, -71.92687988, -72.68682861, 1016s -74.129776, -76.02471924, -76.88977051, -76.26008606, 1016s -75.90351868, -76.15809631]) * units.celsius 1016s dewpoints = np.array([4.50012302, 3.42483997, 2.78102994, 2.24474645, 1.593485, -0.9440815, 1016s -3.8044982, -3.55629468, -9.7376976, -10.2950449, -9.67498302, 1016s -10.30486488, -8.70559597, -8.71669006, -12.66509628, -18.6697197, 1016s -23.00351334, -29.46240425, -36.82178497, -41.68824768, -44.50320816, 1016s -48.54426575, -52.50753403, -51.09564209, -48.92690659, -49.97380829, 1016s -51.57516098, -52.62096405, -54.24332809, -57.09109879, -60.5596199, 1016s -63.93486404, -67.07530212, -70.01263428, -72.9258728, -76.12271881, 1016s -79.49847412, -82.2350769, -83.91127014, -84.95665741, -85.61238861, 1016s -86.16391754, -86.7653656, -87.34436035, -87.87495422, -88.34281921, 1016s -88.74453735, -89.04680634, -89.26436615]) * units.celsius 1016s __, t_mixed, td_mixed = mixed_parcel(levels, temperatures, dewpoints) 1016s mixed_parcel_prof = parcel_profile(levels, t_mixed, td_mixed) 1016s > lfc_pressure, lfc_temp = lfc(levels, temperatures, dewpoints, mixed_parcel_prof, td_mixed) 1016s 1016s tests/calc/test_thermo.py:618: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s dewpoint = 1016s parcel_temperature_profile = 1016s dewpoint_start = , which = 'top' 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[pressure]', '[temperature]', '[temperature]', '[temperature]') 1016s def lfc(pressure, temperature, dewpoint, parcel_temperature_profile=None, dewpoint_start=None, 1016s which='top'): 1016s r"""Calculate the level of free convection (LFC). 1016s 1016s This works by finding the first intersection of the ideal parcel path and 1016s the measured parcel temperature. If this intersection occurs below the LCL, 1016s the LFC is determined to be the same as the LCL, based upon the conditions 1016s set forth in [USAF1990]_, pg 4-14, where a parcel must be lifted dry adiabatically 1016s to saturation before it can freely rise. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Atmospheric pressure profile. This array must be from high to low pressure. 1016s 1016s temperature : `pint.Quantity` 1016s Temperature at the levels given by `pressure` 1016s 1016s dewpoint : `pint.Quantity` 1016s Dewpoint at the levels given by `pressure` 1016s 1016s parcel_temperature_profile: `pint.Quantity`, optional 1016s The parcel's temperature profile from which to calculate the LFC. Defaults to the 1016s surface parcel profile. 1016s 1016s dewpoint_start: `pint.Quantity`, optional 1016s Dewpoint of the parcel for which to calculate the LFC. Defaults to the surface 1016s dewpoint. 1016s 1016s which: str, optional 1016s Pick which LFC to return. Options are 'top', 'bottom', 'wide', 'most_cape', and 'all'; 1016s 'top' returns the lowest-pressure LFC (default), 1016s 'bottom' returns the highest-pressure LFC, 1016s 'wide' returns the LFC whose corresponding EL is farthest away, 1016s 'most_cape' returns the LFC that results in the most CAPE in the profile. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s LFC pressure, or array of same if which='all' 1016s 1016s `pint.Quantity` 1016s LFC temperature, or array of same if which='all' 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import dewpoint_from_relative_humidity, lfc 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate dewpoint 1016s >>> Td = dewpoint_from_relative_humidity(T, rh) 1016s >>> # calculate LFC 1016s >>> lfc(p, T, Td) 1016s (, ) 1016s 1016s See Also 1016s -------- 1016s parcel_profile 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Since this function returns scalar values when given a profile, this will return Pint 1016s Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``dewpt``,``dewpoint_start`` parameters to ``dewpoint``, ``dewpoint_start`` 1016s 1016s """ 1016s # Default to surface parcel if no profile or starting pressure level is given 1016s if parcel_temperature_profile is None: 1016s pressure, temperature, dewpoint = _remove_nans(pressure, temperature, dewpoint) 1016s new_profile = parcel_profile_with_lcl(pressure, temperature, dewpoint) 1016s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 1016s parcel_temperature_profile = parcel_temperature_profile.to(temperature.units) 1016s else: 1016s new_profile = _remove_nans(pressure, temperature, dewpoint, parcel_temperature_profile) 1016s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 1016s 1016s if dewpoint_start is None: 1016s dewpoint_start = dewpoint[0] 1016s 1016s # The parcel profile and data may have the same first data point. 1016s # If that is the case, ignore that point to get the real first 1016s # intersection for the LFC calculation. Use logarithmic interpolation. 1016s if np.isclose(parcel_temperature_profile[0].to(temperature.units).m, temperature[0].m): 1016s x, y = find_intersections(pressure[1:], parcel_temperature_profile[1:], 1016s temperature[1:], direction='increasing', log_x=True) 1016s else: 1016s x, y = find_intersections(pressure, parcel_temperature_profile, 1016s temperature, direction='increasing', log_x=True) 1016s 1016s # Compute LCL for this parcel for future comparisons 1016s this_lcl = lcl(pressure[0], parcel_temperature_profile[0], dewpoint_start) 1016s 1016s # The LFC could: 1016s # 1) Not exist 1016s # 2) Exist but be equal to the LCL 1016s # 3) Exist and be above the LCL 1016s 1016s # LFC does not exist or is LCL 1016s if len(x) == 0: 1016s # Is there any positive area above the LCL? 1016s mask = pressure < this_lcl[0] 1016s if np.all(_less_or_close(parcel_temperature_profile[mask], temperature[mask])): 1016s # LFC doesn't exist 1016s x = units.Quantity(np.nan, pressure.units) 1016s y = units.Quantity(np.nan, temperature.units) 1016s else: # LFC = LCL 1016s x, y = this_lcl 1016s return x, y 1016s 1016s # LFC exists. Make sure it is no lower than the LCL 1016s else: 1016s idx = x < this_lcl[0] 1016s # LFC height < LCL height, so set LFC = LCL 1016s if not any(idx): 1016s el_pressure, _ = find_intersections(pressure[1:], parcel_temperature_profile[1:], 1016s temperature[1:], direction='decreasing', 1016s log_x=True) 1016s > if np.min(el_pressure) > this_lcl[0]: 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:724: TypeError 1016s __________________________ test_lfc_and_el_below_lcl ___________________________ 1016s 1016s def test_lfc_and_el_below_lcl(): 1016s """Test that LFC and EL are returned as NaN if both are below LCL.""" 1016s dewpoint = [264.5351, 261.13443, 259.0122, 252.30063, 248.58017, 242.66582] * units.kelvin 1016s temperature = [273.09723, 268.40173, 263.56207, 260.257, 256.63538, 1016s 252.91345] * units.kelvin 1016s pressure = [1017.16, 950, 900, 850, 800, 750] * units.hPa 1016s el_pressure, el_temperature = el(pressure, temperature, dewpoint) 1016s > lfc_pressure, lfc_temperature = lfc(pressure, temperature, dewpoint) 1016s 1016s tests/calc/test_thermo.py:938: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s dewpoint = 1016s parcel_temperature_profile = 1016s dewpoint_start = , which = 'top' 1016s 1016s @exporter.export 1016s @preprocess_and_wrap() 1016s @check_units('[pressure]', '[temperature]', '[temperature]', '[temperature]') 1016s def lfc(pressure, temperature, dewpoint, parcel_temperature_profile=None, dewpoint_start=None, 1016s which='top'): 1016s r"""Calculate the level of free convection (LFC). 1016s 1016s This works by finding the first intersection of the ideal parcel path and 1016s the measured parcel temperature. If this intersection occurs below the LCL, 1016s the LFC is determined to be the same as the LCL, based upon the conditions 1016s set forth in [USAF1990]_, pg 4-14, where a parcel must be lifted dry adiabatically 1016s to saturation before it can freely rise. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Atmospheric pressure profile. This array must be from high to low pressure. 1016s 1016s temperature : `pint.Quantity` 1016s Temperature at the levels given by `pressure` 1016s 1016s dewpoint : `pint.Quantity` 1016s Dewpoint at the levels given by `pressure` 1016s 1016s parcel_temperature_profile: `pint.Quantity`, optional 1016s The parcel's temperature profile from which to calculate the LFC. Defaults to the 1016s surface parcel profile. 1016s 1016s dewpoint_start: `pint.Quantity`, optional 1016s Dewpoint of the parcel for which to calculate the LFC. Defaults to the surface 1016s dewpoint. 1016s 1016s which: str, optional 1016s Pick which LFC to return. Options are 'top', 'bottom', 'wide', 'most_cape', and 'all'; 1016s 'top' returns the lowest-pressure LFC (default), 1016s 'bottom' returns the highest-pressure LFC, 1016s 'wide' returns the LFC whose corresponding EL is farthest away, 1016s 'most_cape' returns the LFC that results in the most CAPE in the profile. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s LFC pressure, or array of same if which='all' 1016s 1016s `pint.Quantity` 1016s LFC temperature, or array of same if which='all' 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import dewpoint_from_relative_humidity, lfc 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate dewpoint 1016s >>> Td = dewpoint_from_relative_humidity(T, rh) 1016s >>> # calculate LFC 1016s >>> lfc(p, T, Td) 1016s (, ) 1016s 1016s See Also 1016s -------- 1016s parcel_profile 1016s 1016s Notes 1016s ----- 1016s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 1016s Since this function returns scalar values when given a profile, this will return Pint 1016s Quantities even when given xarray DataArray profiles. 1016s 1016s .. versionchanged:: 1.0 1016s Renamed ``dewpt``,``dewpoint_start`` parameters to ``dewpoint``, ``dewpoint_start`` 1016s 1016s """ 1016s # Default to surface parcel if no profile or starting pressure level is given 1016s if parcel_temperature_profile is None: 1016s pressure, temperature, dewpoint = _remove_nans(pressure, temperature, dewpoint) 1016s new_profile = parcel_profile_with_lcl(pressure, temperature, dewpoint) 1016s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 1016s parcel_temperature_profile = parcel_temperature_profile.to(temperature.units) 1016s else: 1016s new_profile = _remove_nans(pressure, temperature, dewpoint, parcel_temperature_profile) 1016s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 1016s 1016s if dewpoint_start is None: 1016s dewpoint_start = dewpoint[0] 1016s 1016s # The parcel profile and data may have the same first data point. 1016s # If that is the case, ignore that point to get the real first 1016s # intersection for the LFC calculation. Use logarithmic interpolation. 1016s if np.isclose(parcel_temperature_profile[0].to(temperature.units).m, temperature[0].m): 1016s x, y = find_intersections(pressure[1:], parcel_temperature_profile[1:], 1016s temperature[1:], direction='increasing', log_x=True) 1016s else: 1016s x, y = find_intersections(pressure, parcel_temperature_profile, 1016s temperature, direction='increasing', log_x=True) 1016s 1016s # Compute LCL for this parcel for future comparisons 1016s this_lcl = lcl(pressure[0], parcel_temperature_profile[0], dewpoint_start) 1016s 1016s # The LFC could: 1016s # 1) Not exist 1016s # 2) Exist but be equal to the LCL 1016s # 3) Exist and be above the LCL 1016s 1016s # LFC does not exist or is LCL 1016s if len(x) == 0: 1016s # Is there any positive area above the LCL? 1016s mask = pressure < this_lcl[0] 1016s if np.all(_less_or_close(parcel_temperature_profile[mask], temperature[mask])): 1016s # LFC doesn't exist 1016s x = units.Quantity(np.nan, pressure.units) 1016s y = units.Quantity(np.nan, temperature.units) 1016s else: # LFC = LCL 1016s x, y = this_lcl 1016s return x, y 1016s 1016s # LFC exists. Make sure it is no lower than the LCL 1016s else: 1016s idx = x < this_lcl[0] 1016s # LFC height < LCL height, so set LFC = LCL 1016s if not any(idx): 1016s el_pressure, _ = find_intersections(pressure[1:], parcel_temperature_profile[1:], 1016s temperature[1:], direction='decreasing', 1016s log_x=True) 1016s > if np.min(el_pressure) > this_lcl[0]: 1016s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:724: TypeError 1016s ___________________________________ test_gdi ___________________________________ 1016s 1016s def test_gdi(): 1016s """Test the Galvez Davison Index calculation.""" 1016s pressure = np.array([1014., 1000., 997., 981.2, 947.4, 925., 914.9, 911., 1016s 902., 883., 850., 822.3, 816., 807., 793.2, 770., 1016s 765.1, 753., 737.5, 737., 713., 700., 688., 685., 1016s 680., 666., 659.8, 653., 643., 634., 615., 611.8, 1016s 566.2, 516., 500., 487., 484.2, 481., 475., 460., 1016s 400.]) * units.hPa 1016s temperature = np.array([24.2, 24.2, 24., 23.1, 21., 19.6, 18.7, 18.4, 1016s 19.2, 19.4, 17.2, 15.3, 14.8, 14.4, 13.4, 11.6, 1016s 11.1, 10., 8.8, 8.8, 8.2, 7., 5.6, 5.6, 1016s 5.6, 4.4, 3.8, 3.2, 3., 3.2, 1.8, 1.5, 1016s -3.4, -9.3, -11.3, -13.1, -13.1, -13.1, -13.7, -15.1, 1016s -23.5]) * units.degC 1016s dewpoint = np.array([23.2, 23.1, 22.8, 22., 20.2, 19., 17.6, 17., 1016s 16.8, 15.5, 14., 11.7, 11.2, 8.4, 7., 4.6, 1016s 5., 6., 4.2, 4.1, -1.8, -2., -1.4, -0.4, 1016s -3.4, -5.6, -4.3, -2.8, -7., -25.8, -31.2, -31.4, 1016s -34.1, -37.3, -32.3, -34.1, -37.3, -41.1, -37.7, -58.1, 1016s -57.5]) * units.degC 1016s 1016s relative_humidity = relative_humidity_from_dewpoint(temperature, dewpoint) 1016s mixrat = mixing_ratio_from_relative_humidity(pressure, temperature, relative_humidity) 1016s > gdi = galvez_davison_index(pressure, temperature, mixrat, pressure[0]) 1016s 1016s tests/calc/test_thermo.py:2468: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 1016s return func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s mixing_ratio = 1016s surface_pressure = , vertical_dim = 0 1016s 1016s @exporter.export 1016s @add_vertical_dim_from_xarray 1016s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 1016s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 1016s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 1016s vertical_dim=0): 1016s """ 1016s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 1016s 1016s Calculation of the GDI relies on temperatures and mixing ratios at 950, 1016s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 1016s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 1016s 1016s GDI formula derived from [Galvez2015]_: 1016s 1016s .. math:: GDI = CBI + MWI + II + TC 1016s 1016s where: 1016s 1016s * :math:`CBI` is the Column Buoyancy Index 1016s * :math:`MWI` is the Mid-tropospheric Warming Index 1016s * :math:`II` is the Inversion Index 1016s * :math:`TC` is the Terrain Correction [optional] 1016s 1016s .. list-table:: GDI Values & Corresponding Convective Regimes 1016s :widths: 15 75 1016s :header-rows: 1 1016s 1016s * - GDI Value 1016s - Expected Convective Regime 1016s * - >=45 1016s - Scattered to widespread thunderstorms likely. 1016s * - 35 to 45 1016s - Scattered thunderstorms and/or scattered to widespread rain showers. 1016s * - 25 to 35 1016s - Isolated to scattered thunderstorms and/or scattered showers. 1016s * - 15 to 25 1016s - Isolated thunderstorms and/or isolated to scattered showers. 1016s * - 5 to 10 1016s - Isolated to scattered showers. 1016s * - <5 1016s - Strong TWI likely, light rain possible. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Pressure level(s) 1016s 1016s temperature : `pint.Quantity` 1016s Temperature corresponding to pressure 1016s 1016s mixing_ratio : `pint.Quantity` 1016s Mixing ratio values corresponding to pressure 1016s 1016s surface_pressure : `pint.Quantity` 1016s Pressure of the surface. 1016s 1016s vertical_dim : int, optional 1016s The axis corresponding to vertical, defaults to 0. Automatically determined from 1016s xarray DataArray arguments. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s GDI Index 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import mixing_ratio_from_relative_humidity 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate mixing ratio 1016s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 1016s >>> galvez_davison_index(p, T, mixrat, p[0]) 1016s 1016s """ 1016s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 1016s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 1016s _______________________________ test_gdi_xarray ________________________________ 1016s 1016s index_xarray_data_expanded = Size: 1kB 1016s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 1016s Coordinates: 1016s * isobaric (is... float64 192B result = galvez_davison_index( 1016s pressure, 1016s temperature, 1016s mixing_ratio, 1016s pressure[0] 1016s ) 1016s 1016s tests/calc/test_thermo.py:2482: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 1016s return func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s mixing_ratio = 1016s surface_pressure = , vertical_dim = 0 1016s 1016s @exporter.export 1016s @add_vertical_dim_from_xarray 1016s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 1016s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 1016s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 1016s vertical_dim=0): 1016s """ 1016s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 1016s 1016s Calculation of the GDI relies on temperatures and mixing ratios at 950, 1016s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 1016s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 1016s 1016s GDI formula derived from [Galvez2015]_: 1016s 1016s .. math:: GDI = CBI + MWI + II + TC 1016s 1016s where: 1016s 1016s * :math:`CBI` is the Column Buoyancy Index 1016s * :math:`MWI` is the Mid-tropospheric Warming Index 1016s * :math:`II` is the Inversion Index 1016s * :math:`TC` is the Terrain Correction [optional] 1016s 1016s .. list-table:: GDI Values & Corresponding Convective Regimes 1016s :widths: 15 75 1016s :header-rows: 1 1016s 1016s * - GDI Value 1016s - Expected Convective Regime 1016s * - >=45 1016s - Scattered to widespread thunderstorms likely. 1016s * - 35 to 45 1016s - Scattered thunderstorms and/or scattered to widespread rain showers. 1016s * - 25 to 35 1016s - Isolated to scattered thunderstorms and/or scattered showers. 1016s * - 15 to 25 1016s - Isolated thunderstorms and/or isolated to scattered showers. 1016s * - 5 to 10 1016s - Isolated to scattered showers. 1016s * - <5 1016s - Strong TWI likely, light rain possible. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Pressure level(s) 1016s 1016s temperature : `pint.Quantity` 1016s Temperature corresponding to pressure 1016s 1016s mixing_ratio : `pint.Quantity` 1016s Mixing ratio values corresponding to pressure 1016s 1016s surface_pressure : `pint.Quantity` 1016s Pressure of the surface. 1016s 1016s vertical_dim : int, optional 1016s The axis corresponding to vertical, defaults to 0. Automatically determined from 1016s xarray DataArray arguments. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s GDI Index 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import mixing_ratio_from_relative_humidity 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate mixing ratio 1016s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 1016s >>> galvez_davison_index(p, T, mixrat, p[0]) 1016s 1016s """ 1016s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 1016s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 1016s _______________________________ test_gdi_arrays ________________________________ 1016s 1016s index_xarray_data_expanded = Size: 1kB 1016s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 1016s Coordinates: 1016s * isobaric (is... float64 192B result = galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure) 1016s 1016s tests/calc/test_thermo.py:2507: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 1016s return func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s mixing_ratio = 1016s surface_pressure = 1016s vertical_dim = 0 1016s 1016s @exporter.export 1016s @add_vertical_dim_from_xarray 1016s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 1016s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 1016s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 1016s vertical_dim=0): 1016s """ 1016s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 1016s 1016s Calculation of the GDI relies on temperatures and mixing ratios at 950, 1016s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 1016s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 1016s 1016s GDI formula derived from [Galvez2015]_: 1016s 1016s .. math:: GDI = CBI + MWI + II + TC 1016s 1016s where: 1016s 1016s * :math:`CBI` is the Column Buoyancy Index 1016s * :math:`MWI` is the Mid-tropospheric Warming Index 1016s * :math:`II` is the Inversion Index 1016s * :math:`TC` is the Terrain Correction [optional] 1016s 1016s .. list-table:: GDI Values & Corresponding Convective Regimes 1016s :widths: 15 75 1016s :header-rows: 1 1016s 1016s * - GDI Value 1016s - Expected Convective Regime 1016s * - >=45 1016s - Scattered to widespread thunderstorms likely. 1016s * - 35 to 45 1016s - Scattered thunderstorms and/or scattered to widespread rain showers. 1016s * - 25 to 35 1016s - Isolated to scattered thunderstorms and/or scattered showers. 1016s * - 15 to 25 1016s - Isolated thunderstorms and/or isolated to scattered showers. 1016s * - 5 to 10 1016s - Isolated to scattered showers. 1016s * - <5 1016s - Strong TWI likely, light rain possible. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Pressure level(s) 1016s 1016s temperature : `pint.Quantity` 1016s Temperature corresponding to pressure 1016s 1016s mixing_ratio : `pint.Quantity` 1016s Mixing ratio values corresponding to pressure 1016s 1016s surface_pressure : `pint.Quantity` 1016s Pressure of the surface. 1016s 1016s vertical_dim : int, optional 1016s The axis corresponding to vertical, defaults to 0. Automatically determined from 1016s xarray DataArray arguments. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s GDI Index 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import mixing_ratio_from_relative_humidity 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate mixing ratio 1016s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 1016s >>> galvez_davison_index(p, T, mixrat, p[0]) 1016s 1016s """ 1016s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 1016s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 1016s _______________________________ test_gdi_profile _______________________________ 1016s 1016s index_xarray_data_expanded = Size: 1kB 1016s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 1016s Coordinates: 1016s * isobaric (is... float64 192B assert_almost_equal(galvez_davison_index(pressure, temperature, mixing_ratio, pressure[0]), 1016s 189.5890429, 4) 1016s 1016s tests/calc/test_thermo.py:2525: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 1016s return func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s mixing_ratio = 1016s surface_pressure = , vertical_dim = 0 1016s 1016s @exporter.export 1016s @add_vertical_dim_from_xarray 1016s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 1016s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 1016s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 1016s vertical_dim=0): 1016s """ 1016s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 1016s 1016s Calculation of the GDI relies on temperatures and mixing ratios at 950, 1016s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 1016s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 1016s 1016s GDI formula derived from [Galvez2015]_: 1016s 1016s .. math:: GDI = CBI + MWI + II + TC 1016s 1016s where: 1016s 1016s * :math:`CBI` is the Column Buoyancy Index 1016s * :math:`MWI` is the Mid-tropospheric Warming Index 1016s * :math:`II` is the Inversion Index 1016s * :math:`TC` is the Terrain Correction [optional] 1016s 1016s .. list-table:: GDI Values & Corresponding Convective Regimes 1016s :widths: 15 75 1016s :header-rows: 1 1016s 1016s * - GDI Value 1016s - Expected Convective Regime 1016s * - >=45 1016s - Scattered to widespread thunderstorms likely. 1016s * - 35 to 45 1016s - Scattered thunderstorms and/or scattered to widespread rain showers. 1016s * - 25 to 35 1016s - Isolated to scattered thunderstorms and/or scattered showers. 1016s * - 15 to 25 1016s - Isolated thunderstorms and/or isolated to scattered showers. 1016s * - 5 to 10 1016s - Isolated to scattered showers. 1016s * - <5 1016s - Strong TWI likely, light rain possible. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Pressure level(s) 1016s 1016s temperature : `pint.Quantity` 1016s Temperature corresponding to pressure 1016s 1016s mixing_ratio : `pint.Quantity` 1016s Mixing ratio values corresponding to pressure 1016s 1016s surface_pressure : `pint.Quantity` 1016s Pressure of the surface. 1016s 1016s vertical_dim : int, optional 1016s The axis corresponding to vertical, defaults to 0. Automatically determined from 1016s xarray DataArray arguments. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s GDI Index 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import mixing_ratio_from_relative_humidity 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate mixing ratio 1016s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 1016s >>> galvez_davison_index(p, T, mixrat, p[0]) 1016s 1016s """ 1016s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 1016s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 1016s ______________________ test_gdi_no_950_raises_valueerror _______________________ 1016s 1016s index_xarray_data = Size: 812B 1016s Dimensions: (isobaric: 3, time: 1, y: 2, x: 3) 1016s Coordinates: 1016s * isobaric (i... float64 144B galvez_davison_index( 1016s pressure, 1016s temperature, 1016s mixrat, 1016s pressure[0] 1016s ) 1016s 1016s tests/calc/test_thermo.py:2540: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 1016s return func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 1016s result = func(*bound_args.args, **bound_args.kwargs) 1016s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 1016s return func(*args, **kwargs) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pressure = 1016s temperature = 1016s mixing_ratio = 1016s surface_pressure = , vertical_dim = 0 1016s 1016s @exporter.export 1016s @add_vertical_dim_from_xarray 1016s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 1016s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 1016s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 1016s vertical_dim=0): 1016s """ 1016s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 1016s 1016s Calculation of the GDI relies on temperatures and mixing ratios at 950, 1016s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 1016s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 1016s 1016s GDI formula derived from [Galvez2015]_: 1016s 1016s .. math:: GDI = CBI + MWI + II + TC 1016s 1016s where: 1016s 1016s * :math:`CBI` is the Column Buoyancy Index 1016s * :math:`MWI` is the Mid-tropospheric Warming Index 1016s * :math:`II` is the Inversion Index 1016s * :math:`TC` is the Terrain Correction [optional] 1016s 1016s .. list-table:: GDI Values & Corresponding Convective Regimes 1016s :widths: 15 75 1016s :header-rows: 1 1016s 1016s * - GDI Value 1016s - Expected Convective Regime 1016s * - >=45 1016s - Scattered to widespread thunderstorms likely. 1016s * - 35 to 45 1016s - Scattered thunderstorms and/or scattered to widespread rain showers. 1016s * - 25 to 35 1016s - Isolated to scattered thunderstorms and/or scattered showers. 1016s * - 15 to 25 1016s - Isolated thunderstorms and/or isolated to scattered showers. 1016s * - 5 to 10 1016s - Isolated to scattered showers. 1016s * - <5 1016s - Strong TWI likely, light rain possible. 1016s 1016s Parameters 1016s ---------- 1016s pressure : `pint.Quantity` 1016s Pressure level(s) 1016s 1016s temperature : `pint.Quantity` 1016s Temperature corresponding to pressure 1016s 1016s mixing_ratio : `pint.Quantity` 1016s Mixing ratio values corresponding to pressure 1016s 1016s surface_pressure : `pint.Quantity` 1016s Pressure of the surface. 1016s 1016s vertical_dim : int, optional 1016s The axis corresponding to vertical, defaults to 0. Automatically determined from 1016s xarray DataArray arguments. 1016s 1016s Returns 1016s ------- 1016s `pint.Quantity` 1016s GDI Index 1016s 1016s Examples 1016s -------- 1016s >>> from metpy.calc import mixing_ratio_from_relative_humidity 1016s >>> from metpy.units import units 1016s >>> # pressure 1016s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 1016s ... 550., 500., 450., 400., 350., 300., 250., 200., 1016s ... 175., 150., 125., 100., 80., 70., 60., 50., 1016s ... 40., 30., 25., 20.] * units.hPa 1016s >>> # temperature 1016s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 1016s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 1016s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 1016s ... -56.3, -51.7, -50.7, -47.5] * units.degC 1016s >>> # relative humidity 1016s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 1016s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 1016s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 1016s >>> # calculate mixing ratio 1016s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 1016s >>> galvez_davison_index(p, T, mixrat, p[0]) 1016s 1016s """ 1016s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 1016s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 1016s 1016s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 1016s =========================== short test summary info ============================ 1016s FAILED tests/calc/test_calc_tools.py::test_get_layer_heights_agl - TypeError:... 1016s FAILED tests/calc/test_calc_tools.py::test_get_layer_heights_agl_bottom_no_interp 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction - TypeError: no... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_edge - TypeErro... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_list - TypeErro... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_arr - TypeError... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_full - TypeErro... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_invalid_scalar 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_invalid_arr - T... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_3 - TypeE... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_2 - TypeE... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_1 - TypeE... 1016s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_ndarray - TypeE... 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_no_storm_motion 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_storm_motion 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_with_interpolation 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity - TypeErro... 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_agl - Type... 1016s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_masked - T... 1016s FAILED tests/calc/test_thermo.py::test_lfc_ml2 - TypeError: no implementation... 1016s FAILED tests/calc/test_thermo.py::test_lfc_and_el_below_lcl - TypeError: no i... 1016s FAILED tests/calc/test_thermo.py::test_gdi - TypeError: no implementation fou... 1016s FAILED tests/calc/test_thermo.py::test_gdi_xarray - TypeError: no implementat... 1016s FAILED tests/calc/test_thermo.py::test_gdi_arrays - TypeError: no implementat... 1016s FAILED tests/calc/test_thermo.py::test_gdi_profile - TypeError: no implementa... 1016s FAILED tests/calc/test_thermo.py::test_gdi_no_950_raises_valueerror - TypeErr... 1016s ==== 26 failed, 934 passed, 25 skipped, 271 deselected, 1 xfailed in 17.56s ==== 1017s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.l3G77H/autopkgtest_tmp/build; python3.12 -m pytest -W ignore::DeprecationWarning -k "not test_projection and not test_pyproj_projection and not test_no_projection and not test_globe and not test_geodetic and not test_unit_array and not test_units and not test_units_data and not test_magnitude_with_quantity and not test_convert_units and not test_convert_to_base_units and not test_missing_grid_mapping_invalid and not test_coordinates_basic_by_method and not test_coordinates_basic_by_property and not test_narr_example_variable_without_grid_mapping and not test_find_axis_name_ and not test_find_axis_number_ and not test_cf_parse_with_grid_mapping and not test_data_array_loc_ and not test_data_array_sel_ and not test_dataset_ and not test_check_axis_with_bad_unit and not test_auxilary_lat_lon_ and not test_zoom_xarray and not test_parse_grid_arguments_xarray and not test_absolute_momentum_xarray_units_attr and not test_precipitable_water and not test_mean_pressure_weighted and not test_weighted_continuous_average and not test_precipitable_water_xarray and not test_bunkers_motion and not test_bulk_shear and not test_critical_angle and not _4d and not test_interpolate_to_grid and not test_natural_neighbor_to_grid and not test_inverse_distance_to_grid and not test_interpolate_to_points and not test_natural_neighbor_to_points and not test_inverse_distance_to_points and not test_declarative_ and not test_no_field_error and not test_ndim_error_ and not test_projection_object and not test_colorfill and not test_global and not test_latlon and not test_plotobs_units_with_formatter and not test_attribute_error_ and not test_time_deltas and not test_latlon_default_units and not test_add_timestamp_xarray and not test_find_nn_triangles_point and not test_vorticity_grid_pole and not test_corfidi_motion and not test_corfidi_motion_override_llj and not test_corfidi_corfidi_llj_unaivalable and not test_corfidi_corfidi_cloudlayer_trimmed and not test_corfidi_motion_with_nans and not test_colorbar_kwargs and not test_xy_not_vertical and not test_lcc_minimal and not test_lcc_single_std_parallel" --ignore=tests/io/test_gempak.py --ignore=tests/io/test_gini.py --ignore=tests/io/test_metar.py --ignore=tests/io/test_nexrad.py --ignore=tests/io/test_station_data.py --ignore=tests/io/test_text.py 1017s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p 3.12 returned exit code 13 1017s make: *** [/tmp/_IK2NCcm9_/run:4: pybuild-autopkgtest] Error 25 1017s pybuild-autopkgtest: error: /tmp/_IK2NCcm9_/run pybuild-autopkgtest returned exit code 2 1017s autopkgtest [11:13:17]: test pybuild-autopkgtest: -----------------------] 1018s pybuild-autopkgtest FAIL non-zero exit status 25 1018s autopkgtest [11:13:18]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 1018s autopkgtest [11:13:18]: @@@@@@@@@@@@@@@@@@@@ summary 1018s pybuild-autopkgtest FAIL non-zero exit status 25 1050s nova [W] Skipping flock in bos03-arm64 1050s Creating nova instance adt-oracular-arm64-metpy-20240616-102114-juju-7f2275-prod-proposed-migration-environment-3-df2ce90c-a492-4fb9-bff0-837ae0b558eb from image adt/ubuntu-oracular-arm64-server-20240615.img (UUID 891f4ace-6bc2-49e5-8107-dfb2761629d0)...