0s autopkgtest [10:21:15]: starting date and time: 2024-06-16 10:21:15+0000 0s autopkgtest [10:21:15]: git checkout: 433ed4c Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [10:21:15]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ui1ebz4v/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_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\n" >> /etc/environment' --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 -- lxd -r lxd-armhf-10.145.243.27 lxd-armhf-10.145.243.27:autopkgtest/ubuntu/oracular/armhf 23s autopkgtest [10:21:38]: testbed dpkg architecture: armhf 25s autopkgtest [10:21:40]: testbed apt version: 2.9.3 25s autopkgtest [10:21:40]: @@@@@@@@@@@@@@@@@@@@ test bed setup 34s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 34s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [36.1 kB] 34s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [389 kB] 34s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7052 B] 34s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2576 B] 34s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main armhf Packages [34.8 kB] 34s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted armhf Packages [1860 B] 34s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf Packages [293 kB] 34s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse armhf Packages [2528 B] 35s Fetched 877 kB in 1s (857 kB/s) 35s Reading package lists... 51s tee: /proc/self/fd/2: Permission denied 74s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 75s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 75s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 75s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 76s Reading package lists... 76s Reading package lists... 76s Building dependency tree... 76s Reading state information... 77s Calculating upgrade... 78s The following packages will be upgraded: 78s apt apt-utils dracut-install libapt-pkg6.0t64 libc-bin libc6 libldap-common 78s libldap2 libnss3 locales python3-certifi ubuntu-pro-client 78s ubuntu-pro-client-l10n 78s 13 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 78s Need to get 12.1 MB of archives. 78s After this operation, 57.3 kB disk space will be freed. 78s Get:1 http://ftpmaster.internal/ubuntu oracular/main armhf libc6 armhf 2.39-0ubuntu9 [2828 kB] 78s Get:2 http://ftpmaster.internal/ubuntu oracular/main armhf libc-bin armhf 2.39-0ubuntu9 [530 kB] 78s Get:3 http://ftpmaster.internal/ubuntu oracular/main armhf libapt-pkg6.0t64 armhf 2.9.5 [1019 kB] 78s Get:4 http://ftpmaster.internal/ubuntu oracular/main armhf apt armhf 2.9.5 [1398 kB] 79s Get:5 http://ftpmaster.internal/ubuntu oracular/main armhf apt-utils armhf 2.9.5 [217 kB] 79s Get:6 http://ftpmaster.internal/ubuntu oracular/main armhf locales all 2.39-0ubuntu9 [4235 kB] 79s Get:7 http://ftpmaster.internal/ubuntu oracular/main armhf ubuntu-pro-client-l10n armhf 32.3.1 [19.4 kB] 79s Get:8 http://ftpmaster.internal/ubuntu oracular/main armhf ubuntu-pro-client armhf 32.3.1 [230 kB] 79s Get:9 http://ftpmaster.internal/ubuntu oracular/main armhf dracut-install armhf 102-3ubuntu2 [35.1 kB] 79s Get:10 http://ftpmaster.internal/ubuntu oracular/main armhf libldap-common all 2.6.7+dfsg-1~exp1ubuntu9 [31.5 kB] 79s Get:11 http://ftpmaster.internal/ubuntu oracular/main armhf libldap2 armhf 2.6.7+dfsg-1~exp1ubuntu9 [171 kB] 79s Get:12 http://ftpmaster.internal/ubuntu oracular/main armhf libnss3 armhf 2:3.101-1 [1256 kB] 79s Get:13 http://ftpmaster.internal/ubuntu oracular/main armhf python3-certifi all 2024.6.2-1 [160 kB] 79s Preconfiguring packages ... 80s Fetched 12.1 MB in 1s (12.6 MB/s) 80s (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 ... 58402 files and directories currently installed.) 80s Preparing to unpack .../libc6_2.39-0ubuntu9_armhf.deb ... 80s Unpacking libc6:armhf (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 80s Setting up libc6:armhf (2.39-0ubuntu9) ... 81s (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 ... 58402 files and directories currently installed.) 81s Preparing to unpack .../libc-bin_2.39-0ubuntu9_armhf.deb ... 81s Unpacking libc-bin (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 81s Setting up libc-bin (2.39-0ubuntu9) ... 82s (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 ... 58402 files and directories currently installed.) 82s Preparing to unpack .../libapt-pkg6.0t64_2.9.5_armhf.deb ... 82s Unpacking libapt-pkg6.0t64:armhf (2.9.5) over (2.9.3) ... 82s Setting up libapt-pkg6.0t64:armhf (2.9.5) ... 82s (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 ... 58402 files and directories currently installed.) 82s Preparing to unpack .../archives/apt_2.9.5_armhf.deb ... 82s Unpacking apt (2.9.5) over (2.9.3) ... 82s Setting up apt (2.9.5) ... 83s (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 ... 58402 files and directories currently installed.) 83s Preparing to unpack .../0-apt-utils_2.9.5_armhf.deb ... 83s Unpacking apt-utils (2.9.5) over (2.9.3) ... 83s Preparing to unpack .../1-locales_2.39-0ubuntu9_all.deb ... 83s Unpacking locales (2.39-0ubuntu9) over (2.39-0ubuntu8.1) ... 83s Preparing to unpack .../2-ubuntu-pro-client-l10n_32.3.1_armhf.deb ... 83s Unpacking ubuntu-pro-client-l10n (32.3.1) over (32.3) ... 83s Preparing to unpack .../3-ubuntu-pro-client_32.3.1_armhf.deb ... 83s Unpacking ubuntu-pro-client (32.3.1) over (32.3) ... 83s Preparing to unpack .../4-dracut-install_102-3ubuntu2_armhf.deb ... 83s Unpacking dracut-install (102-3ubuntu2) over (102-3ubuntu1) ... 84s Preparing to unpack .../5-libldap-common_2.6.7+dfsg-1~exp1ubuntu9_all.deb ... 84s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu9) over (2.6.7+dfsg-1~exp1ubuntu8) ... 84s Preparing to unpack .../6-libldap2_2.6.7+dfsg-1~exp1ubuntu9_armhf.deb ... 84s Unpacking libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu9) over (2.6.7+dfsg-1~exp1ubuntu8) ... 84s Preparing to unpack .../7-libnss3_2%3a3.101-1_armhf.deb ... 84s Unpacking libnss3:armhf (2:3.101-1) over (2:3.100-1) ... 84s Preparing to unpack .../8-python3-certifi_2024.6.2-1_all.deb ... 84s Unpacking python3-certifi (2024.6.2-1) over (2023.11.17-1) ... 84s Setting up apt-utils (2.9.5) ... 84s Setting up libnss3:armhf (2:3.101-1) ... 84s Setting up locales (2.39-0ubuntu9) ... 85s Generating locales (this might take a while)... 87s en_US.UTF-8... done 87s Generation complete. 87s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu9) ... 87s Setting up python3-certifi (2024.6.2-1) ... 88s Setting up dracut-install (102-3ubuntu2) ... 88s Setting up ubuntu-pro-client (32.3.1) ... 88s Installing new version of config file /etc/apparmor.d/ubuntu_pro_esm_cache ... 88s apparmor_parser: Unable to replace "ubuntu_pro_apt_news". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 88s 88s apparmor_parser: Unable to replace "apt_methods". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 88s 88s apparmor_parser: Unable to replace "ubuntu_pro_esm_cache". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 88s 90s Setting up libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu9) ... 90s Setting up ubuntu-pro-client-l10n (32.3.1) ... 90s Processing triggers for man-db (2.12.1-2) ... 92s Processing triggers for libc-bin (2.39-0ubuntu9) ... 93s Reading package lists... 94s Building dependency tree... 94s Reading state information... 95s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 97s autopkgtest [10:22:52]: rebooting testbed after setup commands that affected boot 138s autopkgtest [10:23:33]: testbed running kernel: Linux 6.5.0-35-generic #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 7 11:19:33 UTC 2 169s autopkgtest [10:24:04]: @@@@@@@@@@@@@@@@@@@@ apt-source metpy 181s Get:1 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (dsc) [2640 B] 181s Get:2 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (tar) [9945 kB] 181s Get:3 http://ftpmaster.internal/ubuntu oracular/universe metpy 1.6.2+ds-1 (diff) [9740 B] 181s gpgv: Signature made Tue Apr 16 08:36:50 2024 UTC 181s gpgv: using RSA key 3B70F209A5FFD68903C472C5EBF48AB2578F9812 181s gpgv: issuer "antonio.valentino@tiscali.it" 181s gpgv: Can't check signature: No public key 181s dpkg-source: warning: cannot verify inline signature for ./metpy_1.6.2+ds-1.dsc: no acceptable signature found 182s autopkgtest [10:24:17]: testing package metpy version 1.6.2+ds-1 184s autopkgtest [10:24:19]: build not needed 187s autopkgtest [10:24:22]: test pybuild-autopkgtest: preparing testbed 198s Reading package lists... 199s Building dependency tree... 199s Reading state information... 199s Starting pkgProblemResolver with broken count: 0 199s Starting 2 pkgProblemResolver with broken count: 0 199s Done 200s The following additional packages will be installed: 200s autoconf automake autopoint autotools-dev blt build-essential cpp cpp-13 200s cpp-13-arm-linux-gnueabihf cpp-arm-linux-gnueabihf debhelper debugedit 200s dh-autoreconf dh-python dh-strip-nondeterminism dwz fontconfig-config 200s fonts-dejavu-core fonts-dejavu-mono fonts-glyphicons-halflings fonts-lyx g++ 200s g++-13 g++-13-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-13 200s gcc-13-arm-linux-gnueabihf gcc-13-base gcc-arm-linux-gnueabihf gettext 200s intltool-debian javascript-common libaec0 libarchive-zip-perl libasan8 200s libatomic1 libblas3 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 200s libdebhelper-perl libdeflate0 libdw1t64 libfile-stripnondeterminism-perl 200s libfontconfig1 libfreetype6 libgcc-13-dev libgeos-c1t64 libgeos3.12.2 200s libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libhdf5-103-1t64 200s libhdf5-hl-100t64 libimagequant0 libisl23 libjbig0 libjpeg-turbo8 libjpeg8 200s libjs-bootstrap libjs-bootstrap4 libjs-jquery libjs-jquery-ui 200s libjs-popper.js liblapack3 liblbfgsb0 liblcms2-2 liblerc4 libmpc3 200s libnetcdf19t64 libopenjp2-7 libproj25 libqhull-r8.0 libraqm0 libsharpyuv0 200s libstdc++-13-dev libsz2 libtcl8.6 libtiff6 libtk8.6 libtool libubsan1 200s libwebp7 libwebpdemux2 libwebpmux3 libxft2 libxrender1 libxslt1.1 libxss1 200s linux-libc-dev m4 po-debconf proj-data pybuild-plugin-autopkgtest 200s pybuild-plugin-pyproject python-cartopy-data python-matplotlib-data 200s python3-all python3-appdirs python3-brotli python3-build python3-cartopy 200s python3-cftime python3-contourpy python3-cycler python3-dateutil 200s python3-decorator python3-fonttools python3-fs python3-iniconfig 200s python3-installer python3-kiwisolver python3-lxml python3-lz4 200s python3-matplotlib python3-metpy python3-mpmath python3-netcdf4 200s python3-numpy python3-packaging python3-pandas python3-pandas-lib 200s python3-pil python3-pil.imagetk python3-pint python3-platformdirs 200s python3-pluggy python3-pooch python3-pyproj python3-pyproject-hooks 200s python3-pyshp python3-pytest python3-pytest-mpl python3-scipy 200s python3-setuptools-scm python3-shapely python3-sympy python3-tk python3-toml 200s python3-traitlets python3-tz python3-ufolib2 python3-unicodedata2 200s python3-wheel python3-xarray rpcsvc-proto tk8.6-blt2.5 unicode-data 200s x11-common 200s Suggested packages: 200s autoconf-archive gnu-standards autoconf-doc blt-demo cpp-doc gcc-13-locales 200s cpp-13-doc dh-make flit gcc-13-doc gcc-multilib manpages-dev flex bison gdb 200s gcc-doc gdb-arm-linux-gnueabihf gettext-doc libasprintf-dev libgettextpo-dev 200s apache2 | lighttpd | httpd glibc-doc libjs-jquery-ui-docs liblcms2-utils 200s proj-bin libstdc++-13-doc tcl8.6 tk8.6 libtool-doc gfortran 200s | fortran95-compiler gcj-jdk m4-doc libmail-box-perl python3-pip 200s python3-venv python-build-doc python3-fiona python3-gdal python3-owslib 200s python3-pykdtree python-cycler-doc python-installer-doc python-lxml-doc 200s cm-super-minimal dvipng ffmpeg fonts-staypuft ghostscript gir1.2-gtk-3.0 200s inkscape ipython3 librsvg2-common python3-cairocffi python3-gi-cairo 200s python3-gobject python3-pyqt5 python3-sip python3-tornado 200s texlive-extra-utils texlive-latex-extra python-mpmath-doc python3-gmpy2 200s gfortran python-numpy-doc python3-dev python-pandas-doc python3-statsmodels 200s python-pil-doc python3-paramiko python-scipy-doc texlive-fonts-extra 200s python-sympy-doc tix python3-tk-dbg python-xarray-doc python3-pydap 200s python3-seaborn python3-toolz 200s Recommended packages: 200s manpages manpages-dev libc-devtools libarchive-cpio-perl node-jquery 200s libltdl-dev libmail-sendmail-perl python3-bs4 python3-cssselect 200s python3-html5lib python3-bottleneck python3-numexpr python3-odf 200s python3-openpyxl python3-tables python3-olefile python3-tqdm isympy-common 200s python3-dask python3-rasterio python3-h5netcdf python3-zarr 200s The following NEW packages will be installed: 200s autoconf automake autopkgtest-satdep autopoint autotools-dev blt 200s build-essential cpp cpp-13 cpp-13-arm-linux-gnueabihf 200s cpp-arm-linux-gnueabihf debhelper debugedit dh-autoreconf dh-python 200s dh-strip-nondeterminism dwz fontconfig-config fonts-dejavu-core 200s fonts-dejavu-mono fonts-glyphicons-halflings fonts-lyx g++ g++-13 200s g++-13-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-13 200s gcc-13-arm-linux-gnueabihf gcc-13-base gcc-arm-linux-gnueabihf gettext 200s intltool-debian javascript-common libaec0 libarchive-zip-perl libasan8 200s libatomic1 libblas3 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 200s libdebhelper-perl libdeflate0 libdw1t64 libfile-stripnondeterminism-perl 200s libfontconfig1 libfreetype6 libgcc-13-dev libgeos-c1t64 libgeos3.12.2 200s libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libhdf5-103-1t64 200s libhdf5-hl-100t64 libimagequant0 libisl23 libjbig0 libjpeg-turbo8 libjpeg8 200s libjs-bootstrap libjs-bootstrap4 libjs-jquery libjs-jquery-ui 200s libjs-popper.js liblapack3 liblbfgsb0 liblcms2-2 liblerc4 libmpc3 200s libnetcdf19t64 libopenjp2-7 libproj25 libqhull-r8.0 libraqm0 libsharpyuv0 200s libstdc++-13-dev libsz2 libtcl8.6 libtiff6 libtk8.6 libtool libubsan1 200s libwebp7 libwebpdemux2 libwebpmux3 libxft2 libxrender1 libxslt1.1 libxss1 200s linux-libc-dev m4 po-debconf proj-data pybuild-plugin-autopkgtest 200s pybuild-plugin-pyproject python-cartopy-data python-matplotlib-data 200s python3-all python3-appdirs python3-brotli python3-build python3-cartopy 200s python3-cftime python3-contourpy python3-cycler python3-dateutil 200s python3-decorator python3-fonttools python3-fs python3-iniconfig 200s python3-installer python3-kiwisolver python3-lxml python3-lz4 200s python3-matplotlib python3-metpy python3-mpmath python3-netcdf4 200s python3-numpy python3-packaging python3-pandas python3-pandas-lib 200s python3-pil python3-pil.imagetk python3-pint python3-platformdirs 200s python3-pluggy python3-pooch python3-pyproj python3-pyproject-hooks 200s python3-pyshp python3-pytest python3-pytest-mpl python3-scipy 200s python3-setuptools-scm python3-shapely python3-sympy python3-tk python3-toml 200s python3-traitlets python3-tz python3-ufolib2 python3-unicodedata2 200s python3-wheel python3-xarray rpcsvc-proto tk8.6-blt2.5 unicode-data 200s x11-common 200s 0 upgraded, 153 newly installed, 0 to remove and 0 not upgraded. 200s Need to get 138 MB/138 MB of archives. 200s After this operation, 472 MB of additional disk space will be used. 200s Get:1 /tmp/autopkgtest.VT1ucx/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [880 B] 200s Get:2 http://ftpmaster.internal/ubuntu oracular/main armhf m4 armhf 1.4.19-4build1 [235 kB] 200s Get:3 http://ftpmaster.internal/ubuntu oracular/main armhf autoconf all 2.71-3 [339 kB] 200s Get:4 http://ftpmaster.internal/ubuntu oracular/main armhf autotools-dev all 20220109.1 [44.9 kB] 200s Get:5 http://ftpmaster.internal/ubuntu oracular/main armhf automake all 1:1.16.5-1.3ubuntu1 [558 kB] 200s Get:6 http://ftpmaster.internal/ubuntu oracular/main armhf autopoint all 0.21-14ubuntu2 [422 kB] 200s Get:7 http://ftpmaster.internal/ubuntu oracular/main armhf libtcl8.6 armhf 8.6.14+dfsg-1build1 [903 kB] 201s Get:8 http://ftpmaster.internal/ubuntu oracular/main armhf libfreetype6 armhf 2.13.2+dfsg-1build3 [331 kB] 201s Get:9 http://ftpmaster.internal/ubuntu oracular/main armhf fonts-dejavu-mono all 2.37-8 [502 kB] 201s Get:10 http://ftpmaster.internal/ubuntu oracular/main armhf fonts-dejavu-core all 2.37-8 [835 kB] 201s Get:11 http://ftpmaster.internal/ubuntu oracular/main armhf fontconfig-config armhf 2.15.0-1.1ubuntu2 [37.4 kB] 201s Get:12 http://ftpmaster.internal/ubuntu oracular/main armhf libfontconfig1 armhf 2.15.0-1.1ubuntu2 [113 kB] 201s Get:13 http://ftpmaster.internal/ubuntu oracular/main armhf libxrender1 armhf 1:0.9.10-1.1build1 [16.0 kB] 201s Get:14 http://ftpmaster.internal/ubuntu oracular/main armhf libxft2 armhf 2.3.6-1build1 [37.4 kB] 201s Get:15 http://ftpmaster.internal/ubuntu oracular/main armhf x11-common all 1:7.7+23ubuntu3 [21.7 kB] 201s Get:16 http://ftpmaster.internal/ubuntu oracular/main armhf libxss1 armhf 1:1.2.3-1build3 [6500 B] 201s Get:17 http://ftpmaster.internal/ubuntu oracular/main armhf libtk8.6 armhf 8.6.14-1build1 [681 kB] 201s Get:18 http://ftpmaster.internal/ubuntu oracular/main armhf tk8.6-blt2.5 armhf 2.5.3+dfsg-7build1 [525 kB] 201s Get:19 http://ftpmaster.internal/ubuntu oracular/main armhf blt armhf 2.5.3+dfsg-7build1 [4840 B] 201s Get:20 http://ftpmaster.internal/ubuntu oracular/main armhf libc-dev-bin armhf 2.39-0ubuntu9 [19.1 kB] 201s Get:21 http://ftpmaster.internal/ubuntu oracular/main armhf linux-libc-dev armhf 6.8.0-31.31 [1557 kB] 201s Get:22 http://ftpmaster.internal/ubuntu oracular/main armhf libcrypt-dev armhf 1:4.4.36-4build1 [120 kB] 201s Get:23 http://ftpmaster.internal/ubuntu oracular/main armhf rpcsvc-proto armhf 1.4.2-0ubuntu7 [62.2 kB] 201s Get:24 http://ftpmaster.internal/ubuntu oracular/main armhf libc6-dev armhf 2.39-0ubuntu9 [1351 kB] 201s Get:25 http://ftpmaster.internal/ubuntu oracular/main armhf gcc-13-base armhf 13.2.0-23ubuntu4 [48.9 kB] 201s Get:26 http://ftpmaster.internal/ubuntu oracular/main armhf libisl23 armhf 0.26-3build1 [544 kB] 201s Get:27 http://ftpmaster.internal/ubuntu oracular/main armhf libmpc3 armhf 1.3.1-1build1 [46.7 kB] 201s Get:28 http://ftpmaster.internal/ubuntu oracular/main armhf cpp-13-arm-linux-gnueabihf armhf 13.2.0-23ubuntu4 [8759 kB] 201s Get:29 http://ftpmaster.internal/ubuntu oracular/main armhf cpp-13 armhf 13.2.0-23ubuntu4 [1034 B] 201s Get:30 http://ftpmaster.internal/ubuntu oracular/main armhf cpp-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [5320 B] 201s Get:31 http://ftpmaster.internal/ubuntu oracular/main armhf cpp armhf 4:13.2.0-7ubuntu1 [22.4 kB] 201s Get:32 http://ftpmaster.internal/ubuntu oracular/main armhf libcc1-0 armhf 14.1.0-1ubuntu1 [43.3 kB] 201s Get:33 http://ftpmaster.internal/ubuntu oracular/main armhf libgomp1 armhf 14.1.0-1ubuntu1 [125 kB] 201s Get:34 http://ftpmaster.internal/ubuntu oracular/main armhf libatomic1 armhf 14.1.0-1ubuntu1 [7816 B] 201s Get:35 http://ftpmaster.internal/ubuntu oracular/main armhf libasan8 armhf 14.1.0-1ubuntu1 [2913 kB] 201s Get:36 http://ftpmaster.internal/ubuntu oracular/main armhf libubsan1 armhf 14.1.0-1ubuntu1 [1154 kB] 201s Get:37 http://ftpmaster.internal/ubuntu oracular/main armhf libgcc-13-dev armhf 13.2.0-23ubuntu4 [899 kB] 201s Get:38 http://ftpmaster.internal/ubuntu oracular/main armhf gcc-13-arm-linux-gnueabihf armhf 13.2.0-23ubuntu4 [16.9 MB] 202s Get:39 http://ftpmaster.internal/ubuntu oracular/main armhf gcc-13 armhf 13.2.0-23ubuntu4 [453 kB] 202s Get:40 http://ftpmaster.internal/ubuntu oracular/main armhf gcc-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [1220 B] 202s Get:41 http://ftpmaster.internal/ubuntu oracular/main armhf gcc armhf 4:13.2.0-7ubuntu1 [5022 B] 202s Get:42 http://ftpmaster.internal/ubuntu oracular/main armhf libstdc++-13-dev armhf 13.2.0-23ubuntu4 [2456 kB] 202s Get:43 http://ftpmaster.internal/ubuntu oracular/main armhf g++-13-arm-linux-gnueabihf armhf 13.2.0-23ubuntu4 [9941 kB] 202s Get:44 http://ftpmaster.internal/ubuntu oracular/main armhf g++-13 armhf 13.2.0-23ubuntu4 [14.5 kB] 202s Get:45 http://ftpmaster.internal/ubuntu oracular/main armhf g++-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [966 B] 202s Get:46 http://ftpmaster.internal/ubuntu oracular/main armhf g++ armhf 4:13.2.0-7ubuntu1 [1090 B] 202s Get:47 http://ftpmaster.internal/ubuntu oracular/main armhf build-essential armhf 12.10ubuntu1 [4928 B] 202s Get:48 http://ftpmaster.internal/ubuntu oracular/main armhf libdebhelper-perl all 13.15.3ubuntu2 [92.3 kB] 202s Get:49 http://ftpmaster.internal/ubuntu oracular/main armhf libtool all 2.4.7-7build1 [166 kB] 202s Get:50 http://ftpmaster.internal/ubuntu oracular/main armhf dh-autoreconf all 20 [16.1 kB] 202s Get:51 http://ftpmaster.internal/ubuntu oracular/main armhf libarchive-zip-perl all 1.68-1 [90.2 kB] 202s Get:52 http://ftpmaster.internal/ubuntu oracular/main armhf libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 202s Get:53 http://ftpmaster.internal/ubuntu oracular/main armhf dh-strip-nondeterminism all 1.14.0-1 [5058 B] 202s Get:54 http://ftpmaster.internal/ubuntu oracular/main armhf libdw1t64 armhf 0.191-1 [238 kB] 202s Get:55 http://ftpmaster.internal/ubuntu oracular/main armhf debugedit armhf 1:5.0-5build2 [42.3 kB] 202s Get:56 http://ftpmaster.internal/ubuntu oracular/main armhf dwz armhf 0.15-1build6 [116 kB] 202s Get:57 http://ftpmaster.internal/ubuntu oracular/main armhf gettext armhf 0.21-14ubuntu2 [800 kB] 202s Get:58 http://ftpmaster.internal/ubuntu oracular/main armhf intltool-debian all 0.35.0+20060710.6 [23.2 kB] 202s Get:59 http://ftpmaster.internal/ubuntu oracular/main armhf po-debconf all 1.0.21+nmu1 [233 kB] 202s Get:60 http://ftpmaster.internal/ubuntu oracular/main armhf debhelper all 13.15.3ubuntu2 [878 kB] 202s Get:61 http://ftpmaster.internal/ubuntu oracular/universe armhf dh-python all 6.20240422 [110 kB] 202s Get:62 http://ftpmaster.internal/ubuntu oracular/universe armhf fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 202s Get:63 http://ftpmaster.internal/ubuntu oracular/universe armhf fonts-lyx all 2.4.0-1 [171 kB] 202s Get:64 http://ftpmaster.internal/ubuntu oracular/main armhf javascript-common all 11+nmu1 [5936 B] 202s Get:65 http://ftpmaster.internal/ubuntu oracular/universe armhf libaec0 armhf 1.1.3-1 [20.8 kB] 202s Get:66 http://ftpmaster.internal/ubuntu oracular/main armhf libblas3 armhf 3.12.0-3build1 [123 kB] 202s Get:67 http://ftpmaster.internal/ubuntu oracular/main armhf libdeflate0 armhf 1.20-1 [38.3 kB] 202s Get:68 http://ftpmaster.internal/ubuntu oracular/universe armhf libgeos3.12.2 armhf 3.12.2-1 [868 kB] 202s Get:69 http://ftpmaster.internal/ubuntu oracular/universe armhf libgeos-c1t64 armhf 3.12.2-1 [92.8 kB] 202s Get:70 http://ftpmaster.internal/ubuntu oracular/main armhf libgfortran5 armhf 14.1.0-1ubuntu1 [311 kB] 202s Get:71 http://ftpmaster.internal/ubuntu oracular/main armhf libgraphite2-3 armhf 1.3.14-2build1 [64.6 kB] 202s Get:72 http://ftpmaster.internal/ubuntu oracular/main armhf libharfbuzz0b armhf 8.3.0-2build2 [446 kB] 202s Get:73 http://ftpmaster.internal/ubuntu oracular/universe armhf libsz2 armhf 1.1.3-1 [5302 B] 202s Get:74 http://ftpmaster.internal/ubuntu oracular/universe armhf libhdf5-103-1t64 armhf 1.10.10+repack-3.1ubuntu4 [1337 kB] 202s Get:75 http://ftpmaster.internal/ubuntu oracular/universe armhf libhdf5-hl-100t64 armhf 1.10.10+repack-3.1ubuntu4 [54.8 kB] 202s Get:76 http://ftpmaster.internal/ubuntu oracular/main armhf libimagequant0 armhf 2.18.0-1build1 [31.1 kB] 202s Get:77 http://ftpmaster.internal/ubuntu oracular/main armhf libjpeg-turbo8 armhf 2.1.5-2ubuntu2 [125 kB] 202s Get:78 http://ftpmaster.internal/ubuntu oracular/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 202s Get:79 http://ftpmaster.internal/ubuntu oracular/universe armhf libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 202s Get:80 http://ftpmaster.internal/ubuntu oracular/universe armhf libjs-popper.js all 1.16.1+ds-6 [54.1 kB] 202s Get:81 http://ftpmaster.internal/ubuntu oracular/universe armhf libjs-bootstrap4 all 4.6.1+dfsg1-4 [537 kB] 202s Get:82 http://ftpmaster.internal/ubuntu oracular/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 202s Get:83 http://ftpmaster.internal/ubuntu oracular/universe armhf libjs-jquery-ui all 1.13.2+dfsg-1 [252 kB] 202s Get:84 http://ftpmaster.internal/ubuntu oracular/main armhf liblapack3 armhf 3.12.0-3build1 [2085 kB] 202s Get:85 http://ftpmaster.internal/ubuntu oracular/universe armhf liblbfgsb0 armhf 3.0+dfsg.4-1build1 [27.4 kB] 202s Get:86 http://ftpmaster.internal/ubuntu oracular/main armhf liblcms2-2 armhf 2.14-2build1 [132 kB] 202s Get:87 http://ftpmaster.internal/ubuntu oracular/main armhf liblerc4 armhf 4.0.0+ds-4ubuntu2 [151 kB] 202s Get:88 http://ftpmaster.internal/ubuntu oracular/universe armhf libnetcdf19t64 armhf 1:4.9.2-6 [422 kB] 202s Get:89 http://ftpmaster.internal/ubuntu oracular/universe armhf proj-data all 9.4.1-1 [7892 kB] 203s Get:90 http://ftpmaster.internal/ubuntu oracular/main armhf libjbig0 armhf 2.1-6.1ubuntu2 [24.9 kB] 203s Get:91 http://ftpmaster.internal/ubuntu oracular/main armhf libsharpyuv0 armhf 1.4.0-0.1 [16.3 kB] 203s Get:92 http://ftpmaster.internal/ubuntu oracular/main armhf libwebp7 armhf 1.4.0-0.1 [184 kB] 203s Get:93 http://ftpmaster.internal/ubuntu oracular/main armhf libtiff6 armhf 4.5.1+git230720-4ubuntu2 [178 kB] 203s Get:94 http://ftpmaster.internal/ubuntu oracular/universe armhf libproj25 armhf 9.4.1-1 [1285 kB] 203s Get:95 http://ftpmaster.internal/ubuntu oracular/universe armhf libqhull-r8.0 armhf 2020.2-6build1 [173 kB] 203s Get:96 http://ftpmaster.internal/ubuntu oracular/main armhf libraqm0 armhf 0.10.1-1build1 [12.4 kB] 203s Get:97 http://ftpmaster.internal/ubuntu oracular/main armhf libwebpdemux2 armhf 1.4.0-0.1 [11.8 kB] 203s Get:98 http://ftpmaster.internal/ubuntu oracular/main armhf libwebpmux3 armhf 1.4.0-0.1 [22.5 kB] 203s Get:99 http://ftpmaster.internal/ubuntu oracular/main armhf libxslt1.1 armhf 1.1.39-0exp1build1 [150 kB] 203s Get:100 http://ftpmaster.internal/ubuntu oracular/universe armhf pybuild-plugin-autopkgtest all 6.20240422 [1748 B] 203s Get:101 http://ftpmaster.internal/ubuntu oracular/main armhf python3-packaging all 24.0-1 [41.1 kB] 203s Get:102 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pyproject-hooks all 1.1.0-1 [9852 B] 203s Get:103 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-toml all 0.10.2-1 [16.5 kB] 203s Get:104 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-wheel all 0.43.0-1 [53.5 kB] 203s Get:105 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-build all 1.2.1-1 [29.7 kB] 203s Get:106 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 203s Get:107 http://ftpmaster.internal/ubuntu oracular/universe armhf pybuild-plugin-pyproject all 6.20240422 [1730 B] 203s Get:108 http://ftpmaster.internal/ubuntu oracular/universe armhf python-cartopy-data all 0.23.0+dfsg-1 [6508 kB] 204s Get:109 http://ftpmaster.internal/ubuntu oracular/universe armhf python-matplotlib-data all 3.6.3-2ubuntu1 [2937 kB] 204s Get:110 http://ftpmaster.internal/ubuntu oracular/main armhf python3-all armhf 3.12.3-0ubuntu1 [886 B] 204s Get:111 http://ftpmaster.internal/ubuntu oracular/main armhf python3-appdirs all 1.4.4-4 [10.9 kB] 204s Get:112 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-brotli armhf 1.1.0-2build2 [321 kB] 204s Get:113 http://ftpmaster.internal/ubuntu oracular/main armhf python3-dateutil all 2.9.0-2 [80.3 kB] 204s Get:114 http://ftpmaster.internal/ubuntu oracular/main armhf libopenjp2-7 armhf 2.5.0-2build3 [160 kB] 204s Get:115 http://ftpmaster.internal/ubuntu oracular/main armhf python3-pil armhf 10.3.0-2 [423 kB] 204s Get:116 http://ftpmaster.internal/ubuntu oracular/main armhf python3-tk armhf 3.12.3-0ubuntu1 [99.2 kB] 204s Get:117 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pil.imagetk armhf 10.3.0-2 [8660 B] 204s Get:118 http://ftpmaster.internal/ubuntu oracular/main armhf python3-numpy armhf 1:1.26.4+ds-10 [3541 kB] 204s Get:119 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-contourpy armhf 1.0.7-3 [171 kB] 204s Get:120 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-cycler all 0.12.1-1 [9716 B] 204s Get:121 http://ftpmaster.internal/ubuntu oracular/main armhf python3-decorator all 5.1.1-5 [10.1 kB] 204s Get:122 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-scipy armhf 1.12.0-2 [16.1 MB] 204s Get:123 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-ufolib2 all 0.16.0+dfsg1-1 [33.5 kB] 204s Get:124 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-mpmath all 1.3.0-1 [425 kB] 204s Get:125 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-sympy all 1.12-8 [3966 kB] 204s Get:126 http://ftpmaster.internal/ubuntu oracular/main armhf python3-tz all 2024.1-2 [31.4 kB] 204s Get:127 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-fs all 2.4.16-4 [91.3 kB] 205s Get:128 http://ftpmaster.internal/ubuntu oracular/main armhf python3-lxml armhf 5.2.1-1 [1200 kB] 205s Get:129 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-lz4 armhf 4.0.2+dfsg-1build4 [24.8 kB] 205s Get:130 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-unicodedata2 armhf 15.1.0+ds-1build1 [361 kB] 205s Get:131 http://ftpmaster.internal/ubuntu oracular/universe armhf unicode-data all 15.1.0-1 [8878 kB] 205s Get:132 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-fonttools armhf 4.46.0-1build2 [1402 kB] 205s Get:133 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-kiwisolver armhf 1.4.5-1 [56.3 kB] 205s Get:134 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-matplotlib armhf 3.6.3-2ubuntu1 [5964 kB] 205s Get:135 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pyproj armhf 3.6.1-4 [382 kB] 205s Get:136 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pyshp all 2.3.1-2 [62.0 kB] 205s Get:137 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-shapely armhf 2.0.4-1 [287 kB] 205s Get:138 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-cartopy armhf 0.23.0+dfsg-1 [445 kB] 205s Get:139 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-cftime armhf 1.6.4-1 [202 kB] 205s Get:140 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-iniconfig all 1.1.1-2 [6024 B] 205s Get:141 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pandas-lib armhf 2.1.4+dfsg-8 [4461 kB] 205s Get:142 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pandas all 2.1.4+dfsg-8 [3042 kB] 205s Get:143 http://ftpmaster.internal/ubuntu oracular/main armhf python3-pint all 0.19.2-1 [170 kB] 205s Get:144 http://ftpmaster.internal/ubuntu oracular/main armhf python3-platformdirs all 4.2.1-1 [16.3 kB] 205s Get:145 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf python3-pooch all 1.8.2-1 [49.9 kB] 205s Get:146 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-traitlets all 5.5.0-2 [85.0 kB] 205s Get:147 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-xarray all 2024.03.0-1 [744 kB] 205s Get:148 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-metpy all 1.6.2+ds-1 [354 kB] 205s Get:149 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-netcdf4 armhf 1.7.0-1 [560 kB] 205s Get:150 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pluggy all 1.5.0-1 [21.0 kB] 205s Get:151 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pytest all 7.4.4-1 [305 kB] 205s Get:152 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pytest-mpl all 0.17.0-1 [26.5 kB] 205s Get:153 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-setuptools-scm all 8.1.0-1 [32.2 kB] 206s Fetched 138 MB in 6s (24.7 MB/s) 206s Selecting previously unselected package m4. 206s (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 ... 58402 files and directories currently installed.) 206s Preparing to unpack .../000-m4_1.4.19-4build1_armhf.deb ... 206s Unpacking m4 (1.4.19-4build1) ... 206s Selecting previously unselected package autoconf. 206s Preparing to unpack .../001-autoconf_2.71-3_all.deb ... 206s Unpacking autoconf (2.71-3) ... 206s Selecting previously unselected package autotools-dev. 206s Preparing to unpack .../002-autotools-dev_20220109.1_all.deb ... 206s Unpacking autotools-dev (20220109.1) ... 206s Selecting previously unselected package automake. 207s Preparing to unpack .../003-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 207s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 207s Selecting previously unselected package autopoint. 207s Preparing to unpack .../004-autopoint_0.21-14ubuntu2_all.deb ... 207s Unpacking autopoint (0.21-14ubuntu2) ... 207s Selecting previously unselected package libtcl8.6:armhf. 207s Preparing to unpack .../005-libtcl8.6_8.6.14+dfsg-1build1_armhf.deb ... 207s Unpacking libtcl8.6:armhf (8.6.14+dfsg-1build1) ... 207s Selecting previously unselected package libfreetype6:armhf. 207s Preparing to unpack .../006-libfreetype6_2.13.2+dfsg-1build3_armhf.deb ... 207s Unpacking libfreetype6:armhf (2.13.2+dfsg-1build3) ... 207s Selecting previously unselected package fonts-dejavu-mono. 207s Preparing to unpack .../007-fonts-dejavu-mono_2.37-8_all.deb ... 207s Unpacking fonts-dejavu-mono (2.37-8) ... 207s Selecting previously unselected package fonts-dejavu-core. 207s Preparing to unpack .../008-fonts-dejavu-core_2.37-8_all.deb ... 207s Unpacking fonts-dejavu-core (2.37-8) ... 207s Selecting previously unselected package fontconfig-config. 207s Preparing to unpack .../009-fontconfig-config_2.15.0-1.1ubuntu2_armhf.deb ... 207s Unpacking fontconfig-config (2.15.0-1.1ubuntu2) ... 207s Selecting previously unselected package libfontconfig1:armhf. 207s Preparing to unpack .../010-libfontconfig1_2.15.0-1.1ubuntu2_armhf.deb ... 207s Unpacking libfontconfig1:armhf (2.15.0-1.1ubuntu2) ... 207s Selecting previously unselected package libxrender1:armhf. 207s Preparing to unpack .../011-libxrender1_1%3a0.9.10-1.1build1_armhf.deb ... 207s Unpacking libxrender1:armhf (1:0.9.10-1.1build1) ... 207s Selecting previously unselected package libxft2:armhf. 207s Preparing to unpack .../012-libxft2_2.3.6-1build1_armhf.deb ... 207s Unpacking libxft2:armhf (2.3.6-1build1) ... 207s Selecting previously unselected package x11-common. 207s Preparing to unpack .../013-x11-common_1%3a7.7+23ubuntu3_all.deb ... 207s Unpacking x11-common (1:7.7+23ubuntu3) ... 207s Selecting previously unselected package libxss1:armhf. 207s Preparing to unpack .../014-libxss1_1%3a1.2.3-1build3_armhf.deb ... 207s Unpacking libxss1:armhf (1:1.2.3-1build3) ... 207s Selecting previously unselected package libtk8.6:armhf. 208s Preparing to unpack .../015-libtk8.6_8.6.14-1build1_armhf.deb ... 208s Unpacking libtk8.6:armhf (8.6.14-1build1) ... 208s Selecting previously unselected package tk8.6-blt2.5. 208s Preparing to unpack .../016-tk8.6-blt2.5_2.5.3+dfsg-7build1_armhf.deb ... 208s Unpacking tk8.6-blt2.5 (2.5.3+dfsg-7build1) ... 208s Selecting previously unselected package blt. 208s Preparing to unpack .../017-blt_2.5.3+dfsg-7build1_armhf.deb ... 208s Unpacking blt (2.5.3+dfsg-7build1) ... 208s Selecting previously unselected package libc-dev-bin. 208s Preparing to unpack .../018-libc-dev-bin_2.39-0ubuntu9_armhf.deb ... 208s Unpacking libc-dev-bin (2.39-0ubuntu9) ... 208s Selecting previously unselected package linux-libc-dev:armhf. 208s Preparing to unpack .../019-linux-libc-dev_6.8.0-31.31_armhf.deb ... 208s Unpacking linux-libc-dev:armhf (6.8.0-31.31) ... 208s Selecting previously unselected package libcrypt-dev:armhf. 208s Preparing to unpack .../020-libcrypt-dev_1%3a4.4.36-4build1_armhf.deb ... 208s Unpacking libcrypt-dev:armhf (1:4.4.36-4build1) ... 208s Selecting previously unselected package rpcsvc-proto. 208s Preparing to unpack .../021-rpcsvc-proto_1.4.2-0ubuntu7_armhf.deb ... 208s Unpacking rpcsvc-proto (1.4.2-0ubuntu7) ... 208s Selecting previously unselected package libc6-dev:armhf. 208s Preparing to unpack .../022-libc6-dev_2.39-0ubuntu9_armhf.deb ... 208s Unpacking libc6-dev:armhf (2.39-0ubuntu9) ... 208s Selecting previously unselected package gcc-13-base:armhf. 208s Preparing to unpack .../023-gcc-13-base_13.2.0-23ubuntu4_armhf.deb ... 208s Unpacking gcc-13-base:armhf (13.2.0-23ubuntu4) ... 208s Selecting previously unselected package libisl23:armhf. 208s Preparing to unpack .../024-libisl23_0.26-3build1_armhf.deb ... 208s Unpacking libisl23:armhf (0.26-3build1) ... 208s Selecting previously unselected package libmpc3:armhf. 208s Preparing to unpack .../025-libmpc3_1.3.1-1build1_armhf.deb ... 208s Unpacking libmpc3:armhf (1.3.1-1build1) ... 208s Selecting previously unselected package cpp-13-arm-linux-gnueabihf. 208s Preparing to unpack .../026-cpp-13-arm-linux-gnueabihf_13.2.0-23ubuntu4_armhf.deb ... 208s Unpacking cpp-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 209s Selecting previously unselected package cpp-13. 209s Preparing to unpack .../027-cpp-13_13.2.0-23ubuntu4_armhf.deb ... 209s Unpacking cpp-13 (13.2.0-23ubuntu4) ... 209s Selecting previously unselected package cpp-arm-linux-gnueabihf. 209s Preparing to unpack .../028-cpp-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 209s Unpacking cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 209s Selecting previously unselected package cpp. 209s Preparing to unpack .../029-cpp_4%3a13.2.0-7ubuntu1_armhf.deb ... 209s Unpacking cpp (4:13.2.0-7ubuntu1) ... 209s Selecting previously unselected package libcc1-0:armhf. 209s Preparing to unpack .../030-libcc1-0_14.1.0-1ubuntu1_armhf.deb ... 209s Unpacking libcc1-0:armhf (14.1.0-1ubuntu1) ... 209s Selecting previously unselected package libgomp1:armhf. 209s Preparing to unpack .../031-libgomp1_14.1.0-1ubuntu1_armhf.deb ... 209s Unpacking libgomp1:armhf (14.1.0-1ubuntu1) ... 209s Selecting previously unselected package libatomic1:armhf. 209s Preparing to unpack .../032-libatomic1_14.1.0-1ubuntu1_armhf.deb ... 209s Unpacking libatomic1:armhf (14.1.0-1ubuntu1) ... 209s Selecting previously unselected package libasan8:armhf. 209s Preparing to unpack .../033-libasan8_14.1.0-1ubuntu1_armhf.deb ... 209s Unpacking libasan8:armhf (14.1.0-1ubuntu1) ... 209s Selecting previously unselected package libubsan1:armhf. 209s Preparing to unpack .../034-libubsan1_14.1.0-1ubuntu1_armhf.deb ... 209s Unpacking libubsan1:armhf (14.1.0-1ubuntu1) ... 209s Selecting previously unselected package libgcc-13-dev:armhf. 209s Preparing to unpack .../035-libgcc-13-dev_13.2.0-23ubuntu4_armhf.deb ... 209s Unpacking libgcc-13-dev:armhf (13.2.0-23ubuntu4) ... 209s Selecting previously unselected package gcc-13-arm-linux-gnueabihf. 209s Preparing to unpack .../036-gcc-13-arm-linux-gnueabihf_13.2.0-23ubuntu4_armhf.deb ... 209s Unpacking gcc-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 210s Selecting previously unselected package gcc-13. 210s Preparing to unpack .../037-gcc-13_13.2.0-23ubuntu4_armhf.deb ... 210s Unpacking gcc-13 (13.2.0-23ubuntu4) ... 210s Selecting previously unselected package gcc-arm-linux-gnueabihf. 210s Preparing to unpack .../038-gcc-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 210s Unpacking gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 210s Selecting previously unselected package gcc. 210s Preparing to unpack .../039-gcc_4%3a13.2.0-7ubuntu1_armhf.deb ... 210s Unpacking gcc (4:13.2.0-7ubuntu1) ... 210s Selecting previously unselected package libstdc++-13-dev:armhf. 210s Preparing to unpack .../040-libstdc++-13-dev_13.2.0-23ubuntu4_armhf.deb ... 210s Unpacking libstdc++-13-dev:armhf (13.2.0-23ubuntu4) ... 210s Selecting previously unselected package g++-13-arm-linux-gnueabihf. 210s Preparing to unpack .../041-g++-13-arm-linux-gnueabihf_13.2.0-23ubuntu4_armhf.deb ... 210s Unpacking g++-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 210s Selecting previously unselected package g++-13. 210s Preparing to unpack .../042-g++-13_13.2.0-23ubuntu4_armhf.deb ... 210s Unpacking g++-13 (13.2.0-23ubuntu4) ... 210s Selecting previously unselected package g++-arm-linux-gnueabihf. 210s Preparing to unpack .../043-g++-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 210s Unpacking g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 210s Selecting previously unselected package g++. 210s Preparing to unpack .../044-g++_4%3a13.2.0-7ubuntu1_armhf.deb ... 210s Unpacking g++ (4:13.2.0-7ubuntu1) ... 210s Selecting previously unselected package build-essential. 210s Preparing to unpack .../045-build-essential_12.10ubuntu1_armhf.deb ... 210s Unpacking build-essential (12.10ubuntu1) ... 210s Selecting previously unselected package libdebhelper-perl. 210s Preparing to unpack .../046-libdebhelper-perl_13.15.3ubuntu2_all.deb ... 210s Unpacking libdebhelper-perl (13.15.3ubuntu2) ... 210s Selecting previously unselected package libtool. 210s Preparing to unpack .../047-libtool_2.4.7-7build1_all.deb ... 210s Unpacking libtool (2.4.7-7build1) ... 210s Selecting previously unselected package dh-autoreconf. 210s Preparing to unpack .../048-dh-autoreconf_20_all.deb ... 210s Unpacking dh-autoreconf (20) ... 210s Selecting previously unselected package libarchive-zip-perl. 210s Preparing to unpack .../049-libarchive-zip-perl_1.68-1_all.deb ... 210s Unpacking libarchive-zip-perl (1.68-1) ... 211s Selecting previously unselected package libfile-stripnondeterminism-perl. 211s Preparing to unpack .../050-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 211s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 211s Selecting previously unselected package dh-strip-nondeterminism. 211s Preparing to unpack .../051-dh-strip-nondeterminism_1.14.0-1_all.deb ... 211s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 211s Selecting previously unselected package libdw1t64:armhf. 211s Preparing to unpack .../052-libdw1t64_0.191-1_armhf.deb ... 211s Unpacking libdw1t64:armhf (0.191-1) ... 211s Selecting previously unselected package debugedit. 211s Preparing to unpack .../053-debugedit_1%3a5.0-5build2_armhf.deb ... 211s Unpacking debugedit (1:5.0-5build2) ... 211s Selecting previously unselected package dwz. 211s Preparing to unpack .../054-dwz_0.15-1build6_armhf.deb ... 211s Unpacking dwz (0.15-1build6) ... 211s Selecting previously unselected package gettext. 211s Preparing to unpack .../055-gettext_0.21-14ubuntu2_armhf.deb ... 211s Unpacking gettext (0.21-14ubuntu2) ... 211s Selecting previously unselected package intltool-debian. 211s Preparing to unpack .../056-intltool-debian_0.35.0+20060710.6_all.deb ... 211s Unpacking intltool-debian (0.35.0+20060710.6) ... 211s Selecting previously unselected package po-debconf. 211s Preparing to unpack .../057-po-debconf_1.0.21+nmu1_all.deb ... 211s Unpacking po-debconf (1.0.21+nmu1) ... 211s Selecting previously unselected package debhelper. 211s Preparing to unpack .../058-debhelper_13.15.3ubuntu2_all.deb ... 211s Unpacking debhelper (13.15.3ubuntu2) ... 211s Selecting previously unselected package dh-python. 211s Preparing to unpack .../059-dh-python_6.20240422_all.deb ... 211s Unpacking dh-python (6.20240422) ... 211s Selecting previously unselected package fonts-glyphicons-halflings. 211s Preparing to unpack .../060-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 211s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 211s Selecting previously unselected package fonts-lyx. 211s Preparing to unpack .../061-fonts-lyx_2.4.0-1_all.deb ... 211s Unpacking fonts-lyx (2.4.0-1) ... 211s Selecting previously unselected package javascript-common. 211s Preparing to unpack .../062-javascript-common_11+nmu1_all.deb ... 211s Unpacking javascript-common (11+nmu1) ... 211s Selecting previously unselected package libaec0:armhf. 211s Preparing to unpack .../063-libaec0_1.1.3-1_armhf.deb ... 211s Unpacking libaec0:armhf (1.1.3-1) ... 211s Selecting previously unselected package libblas3:armhf. 211s Preparing to unpack .../064-libblas3_3.12.0-3build1_armhf.deb ... 211s Unpacking libblas3:armhf (3.12.0-3build1) ... 211s Selecting previously unselected package libdeflate0:armhf. 211s Preparing to unpack .../065-libdeflate0_1.20-1_armhf.deb ... 211s Unpacking libdeflate0:armhf (1.20-1) ... 211s Selecting previously unselected package libgeos3.12.2:armhf. 211s Preparing to unpack .../066-libgeos3.12.2_3.12.2-1_armhf.deb ... 211s Unpacking libgeos3.12.2:armhf (3.12.2-1) ... 211s Selecting previously unselected package libgeos-c1t64:armhf. 211s Preparing to unpack .../067-libgeos-c1t64_3.12.2-1_armhf.deb ... 211s Unpacking libgeos-c1t64:armhf (3.12.2-1) ... 211s Selecting previously unselected package libgfortran5:armhf. 211s Preparing to unpack .../068-libgfortran5_14.1.0-1ubuntu1_armhf.deb ... 211s Unpacking libgfortran5:armhf (14.1.0-1ubuntu1) ... 211s Selecting previously unselected package libgraphite2-3:armhf. 211s Preparing to unpack .../069-libgraphite2-3_1.3.14-2build1_armhf.deb ... 211s Unpacking libgraphite2-3:armhf (1.3.14-2build1) ... 211s Selecting previously unselected package libharfbuzz0b:armhf. 211s Preparing to unpack .../070-libharfbuzz0b_8.3.0-2build2_armhf.deb ... 211s Unpacking libharfbuzz0b:armhf (8.3.0-2build2) ... 211s Selecting previously unselected package libsz2:armhf. 211s Preparing to unpack .../071-libsz2_1.1.3-1_armhf.deb ... 211s Unpacking libsz2:armhf (1.1.3-1) ... 211s Selecting previously unselected package libhdf5-103-1t64:armhf. 211s Preparing to unpack .../072-libhdf5-103-1t64_1.10.10+repack-3.1ubuntu4_armhf.deb ... 211s Unpacking libhdf5-103-1t64:armhf (1.10.10+repack-3.1ubuntu4) ... 211s Selecting previously unselected package libhdf5-hl-100t64:armhf. 212s Preparing to unpack .../073-libhdf5-hl-100t64_1.10.10+repack-3.1ubuntu4_armhf.deb ... 212s Unpacking libhdf5-hl-100t64:armhf (1.10.10+repack-3.1ubuntu4) ... 212s Selecting previously unselected package libimagequant0:armhf. 212s Preparing to unpack .../074-libimagequant0_2.18.0-1build1_armhf.deb ... 212s Unpacking libimagequant0:armhf (2.18.0-1build1) ... 212s Selecting previously unselected package libjpeg-turbo8:armhf. 212s Preparing to unpack .../075-libjpeg-turbo8_2.1.5-2ubuntu2_armhf.deb ... 212s Unpacking libjpeg-turbo8:armhf (2.1.5-2ubuntu2) ... 212s Selecting previously unselected package libjpeg8:armhf. 212s Preparing to unpack .../076-libjpeg8_8c-2ubuntu11_armhf.deb ... 212s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 212s Selecting previously unselected package libjs-bootstrap. 212s Preparing to unpack .../077-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 212s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 212s Selecting previously unselected package libjs-popper.js. 212s Preparing to unpack .../078-libjs-popper.js_1.16.1+ds-6_all.deb ... 212s Unpacking libjs-popper.js (1.16.1+ds-6) ... 212s Selecting previously unselected package libjs-bootstrap4. 212s Preparing to unpack .../079-libjs-bootstrap4_4.6.1+dfsg1-4_all.deb ... 212s Unpacking libjs-bootstrap4 (4.6.1+dfsg1-4) ... 212s Selecting previously unselected package libjs-jquery. 212s Preparing to unpack .../080-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 212s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 212s Selecting previously unselected package libjs-jquery-ui. 212s Preparing to unpack .../081-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... 212s Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... 212s Selecting previously unselected package liblapack3:armhf. 212s Preparing to unpack .../082-liblapack3_3.12.0-3build1_armhf.deb ... 212s Unpacking liblapack3:armhf (3.12.0-3build1) ... 212s Selecting previously unselected package liblbfgsb0:armhf. 212s Preparing to unpack .../083-liblbfgsb0_3.0+dfsg.4-1build1_armhf.deb ... 212s Unpacking liblbfgsb0:armhf (3.0+dfsg.4-1build1) ... 212s Selecting previously unselected package liblcms2-2:armhf. 212s Preparing to unpack .../084-liblcms2-2_2.14-2build1_armhf.deb ... 212s Unpacking liblcms2-2:armhf (2.14-2build1) ... 212s Selecting previously unselected package liblerc4:armhf. 212s Preparing to unpack .../085-liblerc4_4.0.0+ds-4ubuntu2_armhf.deb ... 212s Unpacking liblerc4:armhf (4.0.0+ds-4ubuntu2) ... 213s Selecting previously unselected package libnetcdf19t64:armhf. 213s Preparing to unpack .../086-libnetcdf19t64_1%3a4.9.2-6_armhf.deb ... 213s Unpacking libnetcdf19t64:armhf (1:4.9.2-6) ... 213s Selecting previously unselected package proj-data. 213s Preparing to unpack .../087-proj-data_9.4.1-1_all.deb ... 213s Unpacking proj-data (9.4.1-1) ... 213s Selecting previously unselected package libjbig0:armhf. 213s Preparing to unpack .../088-libjbig0_2.1-6.1ubuntu2_armhf.deb ... 213s Unpacking libjbig0:armhf (2.1-6.1ubuntu2) ... 213s Selecting previously unselected package libsharpyuv0:armhf. 213s Preparing to unpack .../089-libsharpyuv0_1.4.0-0.1_armhf.deb ... 213s Unpacking libsharpyuv0:armhf (1.4.0-0.1) ... 213s Selecting previously unselected package libwebp7:armhf. 213s Preparing to unpack .../090-libwebp7_1.4.0-0.1_armhf.deb ... 213s Unpacking libwebp7:armhf (1.4.0-0.1) ... 213s Selecting previously unselected package libtiff6:armhf. 213s Preparing to unpack .../091-libtiff6_4.5.1+git230720-4ubuntu2_armhf.deb ... 213s Unpacking libtiff6:armhf (4.5.1+git230720-4ubuntu2) ... 213s Selecting previously unselected package libproj25:armhf. 213s Preparing to unpack .../092-libproj25_9.4.1-1_armhf.deb ... 213s Unpacking libproj25:armhf (9.4.1-1) ... 213s Selecting previously unselected package libqhull-r8.0:armhf. 213s Preparing to unpack .../093-libqhull-r8.0_2020.2-6build1_armhf.deb ... 213s Unpacking libqhull-r8.0:armhf (2020.2-6build1) ... 213s Selecting previously unselected package libraqm0:armhf. 213s Preparing to unpack .../094-libraqm0_0.10.1-1build1_armhf.deb ... 213s Unpacking libraqm0:armhf (0.10.1-1build1) ... 213s Selecting previously unselected package libwebpdemux2:armhf. 213s Preparing to unpack .../095-libwebpdemux2_1.4.0-0.1_armhf.deb ... 213s Unpacking libwebpdemux2:armhf (1.4.0-0.1) ... 213s Selecting previously unselected package libwebpmux3:armhf. 213s Preparing to unpack .../096-libwebpmux3_1.4.0-0.1_armhf.deb ... 213s Unpacking libwebpmux3:armhf (1.4.0-0.1) ... 213s Selecting previously unselected package libxslt1.1:armhf. 213s Preparing to unpack .../097-libxslt1.1_1.1.39-0exp1build1_armhf.deb ... 213s Unpacking libxslt1.1:armhf (1.1.39-0exp1build1) ... 213s Selecting previously unselected package pybuild-plugin-autopkgtest. 213s Preparing to unpack .../098-pybuild-plugin-autopkgtest_6.20240422_all.deb ... 213s Unpacking pybuild-plugin-autopkgtest (6.20240422) ... 213s Selecting previously unselected package python3-packaging. 213s Preparing to unpack .../099-python3-packaging_24.0-1_all.deb ... 213s Unpacking python3-packaging (24.0-1) ... 214s Selecting previously unselected package python3-pyproject-hooks. 214s Preparing to unpack .../100-python3-pyproject-hooks_1.1.0-1_all.deb ... 214s Unpacking python3-pyproject-hooks (1.1.0-1) ... 214s Selecting previously unselected package python3-toml. 214s Preparing to unpack .../101-python3-toml_0.10.2-1_all.deb ... 214s Unpacking python3-toml (0.10.2-1) ... 214s Selecting previously unselected package python3-wheel. 214s Preparing to unpack .../102-python3-wheel_0.43.0-1_all.deb ... 214s Unpacking python3-wheel (0.43.0-1) ... 214s Selecting previously unselected package python3-build. 214s Preparing to unpack .../103-python3-build_1.2.1-1_all.deb ... 214s Unpacking python3-build (1.2.1-1) ... 214s Selecting previously unselected package python3-installer. 214s Preparing to unpack .../104-python3-installer_0.7.0+dfsg1-3_all.deb ... 214s Unpacking python3-installer (0.7.0+dfsg1-3) ... 214s Selecting previously unselected package pybuild-plugin-pyproject. 214s Preparing to unpack .../105-pybuild-plugin-pyproject_6.20240422_all.deb ... 214s Unpacking pybuild-plugin-pyproject (6.20240422) ... 214s Selecting previously unselected package python-cartopy-data. 214s Preparing to unpack .../106-python-cartopy-data_0.23.0+dfsg-1_all.deb ... 214s Unpacking python-cartopy-data (0.23.0+dfsg-1) ... 214s Selecting previously unselected package python-matplotlib-data. 214s Preparing to unpack .../107-python-matplotlib-data_3.6.3-2ubuntu1_all.deb ... 214s Unpacking python-matplotlib-data (3.6.3-2ubuntu1) ... 214s Selecting previously unselected package python3-all. 214s Preparing to unpack .../108-python3-all_3.12.3-0ubuntu1_armhf.deb ... 214s Unpacking python3-all (3.12.3-0ubuntu1) ... 214s Selecting previously unselected package python3-appdirs. 214s Preparing to unpack .../109-python3-appdirs_1.4.4-4_all.deb ... 214s Unpacking python3-appdirs (1.4.4-4) ... 214s Selecting previously unselected package python3-brotli. 214s Preparing to unpack .../110-python3-brotli_1.1.0-2build2_armhf.deb ... 214s Unpacking python3-brotli (1.1.0-2build2) ... 214s Selecting previously unselected package python3-dateutil. 214s Preparing to unpack .../111-python3-dateutil_2.9.0-2_all.deb ... 214s Unpacking python3-dateutil (2.9.0-2) ... 214s Selecting previously unselected package libopenjp2-7:armhf. 214s Preparing to unpack .../112-libopenjp2-7_2.5.0-2build3_armhf.deb ... 214s Unpacking libopenjp2-7:armhf (2.5.0-2build3) ... 214s Selecting previously unselected package python3-pil:armhf. 214s Preparing to unpack .../113-python3-pil_10.3.0-2_armhf.deb ... 214s Unpacking python3-pil:armhf (10.3.0-2) ... 214s Selecting previously unselected package python3-tk:armhf. 214s Preparing to unpack .../114-python3-tk_3.12.3-0ubuntu1_armhf.deb ... 214s Unpacking python3-tk:armhf (3.12.3-0ubuntu1) ... 214s Selecting previously unselected package python3-pil.imagetk:armhf. 214s Preparing to unpack .../115-python3-pil.imagetk_10.3.0-2_armhf.deb ... 214s Unpacking python3-pil.imagetk:armhf (10.3.0-2) ... 214s Selecting previously unselected package python3-numpy. 214s Preparing to unpack .../116-python3-numpy_1%3a1.26.4+ds-10_armhf.deb ... 214s Unpacking python3-numpy (1:1.26.4+ds-10) ... 215s Selecting previously unselected package python3-contourpy. 215s Preparing to unpack .../117-python3-contourpy_1.0.7-3_armhf.deb ... 215s Unpacking python3-contourpy (1.0.7-3) ... 215s Selecting previously unselected package python3-cycler. 215s Preparing to unpack .../118-python3-cycler_0.12.1-1_all.deb ... 215s Unpacking python3-cycler (0.12.1-1) ... 215s Selecting previously unselected package python3-decorator. 215s Preparing to unpack .../119-python3-decorator_5.1.1-5_all.deb ... 215s Unpacking python3-decorator (5.1.1-5) ... 215s Selecting previously unselected package python3-scipy. 215s Preparing to unpack .../120-python3-scipy_1.12.0-2_armhf.deb ... 215s Unpacking python3-scipy (1.12.0-2) ... 215s Selecting previously unselected package python3-ufolib2. 215s Preparing to unpack .../121-python3-ufolib2_0.16.0+dfsg1-1_all.deb ... 215s Unpacking python3-ufolib2 (0.16.0+dfsg1-1) ... 215s Selecting previously unselected package python3-mpmath. 215s Preparing to unpack .../122-python3-mpmath_1.3.0-1_all.deb ... 215s Unpacking python3-mpmath (1.3.0-1) ... 215s Selecting previously unselected package python3-sympy. 216s Preparing to unpack .../123-python3-sympy_1.12-8_all.deb ... 216s Unpacking python3-sympy (1.12-8) ... 216s Selecting previously unselected package python3-tz. 216s Preparing to unpack .../124-python3-tz_2024.1-2_all.deb ... 216s Unpacking python3-tz (2024.1-2) ... 216s Selecting previously unselected package python3-fs. 216s Preparing to unpack .../125-python3-fs_2.4.16-4_all.deb ... 216s Unpacking python3-fs (2.4.16-4) ... 216s Selecting previously unselected package python3-lxml:armhf. 216s Preparing to unpack .../126-python3-lxml_5.2.1-1_armhf.deb ... 216s Unpacking python3-lxml:armhf (5.2.1-1) ... 216s Selecting previously unselected package python3-lz4. 216s Preparing to unpack .../127-python3-lz4_4.0.2+dfsg-1build4_armhf.deb ... 216s Unpacking python3-lz4 (4.0.2+dfsg-1build4) ... 216s Selecting previously unselected package python3-unicodedata2. 216s Preparing to unpack .../128-python3-unicodedata2_15.1.0+ds-1build1_armhf.deb ... 216s Unpacking python3-unicodedata2 (15.1.0+ds-1build1) ... 216s Selecting previously unselected package unicode-data. 216s Preparing to unpack .../129-unicode-data_15.1.0-1_all.deb ... 216s Unpacking unicode-data (15.1.0-1) ... 217s Selecting previously unselected package python3-fonttools. 217s Preparing to unpack .../130-python3-fonttools_4.46.0-1build2_armhf.deb ... 217s Unpacking python3-fonttools (4.46.0-1build2) ... 217s Selecting previously unselected package python3-kiwisolver. 217s Preparing to unpack .../131-python3-kiwisolver_1.4.5-1_armhf.deb ... 217s Unpacking python3-kiwisolver (1.4.5-1) ... 217s Selecting previously unselected package python3-matplotlib. 217s Preparing to unpack .../132-python3-matplotlib_3.6.3-2ubuntu1_armhf.deb ... 217s Unpacking python3-matplotlib (3.6.3-2ubuntu1) ... 217s Selecting previously unselected package python3-pyproj. 217s Preparing to unpack .../133-python3-pyproj_3.6.1-4_armhf.deb ... 217s Unpacking python3-pyproj (3.6.1-4) ... 217s Selecting previously unselected package python3-pyshp. 217s Preparing to unpack .../134-python3-pyshp_2.3.1-2_all.deb ... 217s Unpacking python3-pyshp (2.3.1-2) ... 217s Selecting previously unselected package python3-shapely. 217s Preparing to unpack .../135-python3-shapely_2.0.4-1_armhf.deb ... 217s Unpacking python3-shapely (2.0.4-1) ... 217s Selecting previously unselected package python3-cartopy. 217s Preparing to unpack .../136-python3-cartopy_0.23.0+dfsg-1_armhf.deb ... 217s Unpacking python3-cartopy (0.23.0+dfsg-1) ... 217s Selecting previously unselected package python3-cftime. 217s Preparing to unpack .../137-python3-cftime_1.6.4-1_armhf.deb ... 217s Unpacking python3-cftime (1.6.4-1) ... 218s Selecting previously unselected package python3-iniconfig. 218s Preparing to unpack .../138-python3-iniconfig_1.1.1-2_all.deb ... 218s Unpacking python3-iniconfig (1.1.1-2) ... 218s Selecting previously unselected package python3-pandas-lib:armhf. 218s Preparing to unpack .../139-python3-pandas-lib_2.1.4+dfsg-8_armhf.deb ... 218s Unpacking python3-pandas-lib:armhf (2.1.4+dfsg-8) ... 218s Selecting previously unselected package python3-pandas. 218s Preparing to unpack .../140-python3-pandas_2.1.4+dfsg-8_all.deb ... 218s Unpacking python3-pandas (2.1.4+dfsg-8) ... 219s Selecting previously unselected package python3-pint. 219s Preparing to unpack .../141-python3-pint_0.19.2-1_all.deb ... 219s Unpacking python3-pint (0.19.2-1) ... 219s Selecting previously unselected package python3-platformdirs. 219s Preparing to unpack .../142-python3-platformdirs_4.2.1-1_all.deb ... 219s Unpacking python3-platformdirs (4.2.1-1) ... 219s Selecting previously unselected package python3-pooch. 219s Preparing to unpack .../143-python3-pooch_1.8.2-1_all.deb ... 219s Unpacking python3-pooch (1.8.2-1) ... 219s Selecting previously unselected package python3-traitlets. 220s Preparing to unpack .../144-python3-traitlets_5.5.0-2_all.deb ... 220s Unpacking python3-traitlets (5.5.0-2) ... 220s Selecting previously unselected package python3-xarray. 220s Preparing to unpack .../145-python3-xarray_2024.03.0-1_all.deb ... 220s Unpacking python3-xarray (2024.03.0-1) ... 220s Selecting previously unselected package python3-metpy. 220s Preparing to unpack .../146-python3-metpy_1.6.2+ds-1_all.deb ... 220s Unpacking python3-metpy (1.6.2+ds-1) ... 220s Selecting previously unselected package python3-netcdf4. 220s Preparing to unpack .../147-python3-netcdf4_1.7.0-1_armhf.deb ... 220s Unpacking python3-netcdf4 (1.7.0-1) ... 220s Selecting previously unselected package python3-pluggy. 220s Preparing to unpack .../148-python3-pluggy_1.5.0-1_all.deb ... 220s Unpacking python3-pluggy (1.5.0-1) ... 220s Selecting previously unselected package python3-pytest. 220s Preparing to unpack .../149-python3-pytest_7.4.4-1_all.deb ... 220s Unpacking python3-pytest (7.4.4-1) ... 220s Selecting previously unselected package python3-pytest-mpl. 220s Preparing to unpack .../150-python3-pytest-mpl_0.17.0-1_all.deb ... 220s Unpacking python3-pytest-mpl (0.17.0-1) ... 220s Selecting previously unselected package python3-setuptools-scm. 220s Preparing to unpack .../151-python3-setuptools-scm_8.1.0-1_all.deb ... 220s Unpacking python3-setuptools-scm (8.1.0-1) ... 220s Selecting previously unselected package autopkgtest-satdep. 220s Preparing to unpack .../152-1-autopkgtest-satdep.deb ... 220s Unpacking autopkgtest-satdep (0) ... 220s Setting up dh-python (6.20240422) ... 221s Setting up javascript-common (11+nmu1) ... 221s Setting up libgraphite2-3:armhf (1.3.14-2build1) ... 221s Setting up liblcms2-2:armhf (2.14-2build1) ... 221s Setting up python3-iniconfig (1.1.1-2) ... 221s Setting up libsharpyuv0:armhf (1.4.0-0.1) ... 221s Setting up liblerc4:armhf (4.0.0+ds-4ubuntu2) ... 221s Setting up proj-data (9.4.1-1) ... 221s Setting up libxrender1:armhf (1:0.9.10-1.1build1) ... 221s Setting up libjs-popper.js (1.16.1+ds-6) ... 221s Setting up python3-lz4 (4.0.2+dfsg-1build4) ... 221s Setting up libarchive-zip-perl (1.68-1) ... 221s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 221s Setting up python3-unicodedata2 (15.1.0+ds-1build1) ... 221s Setting up fonts-lyx (2.4.0-1) ... 221s Setting up libdebhelper-perl (13.15.3ubuntu2) ... 221s Setting up libgeos3.12.2:armhf (3.12.2-1) ... 221s Setting up x11-common (1:7.7+23ubuntu3) ... 222s Setting up libdeflate0:armhf (1.20-1) ... 222s Setting up linux-libc-dev:armhf (6.8.0-31.31) ... 222s Setting up m4 (1.4.19-4build1) ... 222s Setting up libqhull-r8.0:armhf (2020.2-6build1) ... 222s Setting up python3-all (3.12.3-0ubuntu1) ... 222s Setting up python3-pyshp (2.3.1-2) ... 222s Setting up libgomp1:armhf (14.1.0-1ubuntu1) ... 222s Setting up python3-wheel (0.43.0-1) ... 222s Setting up libjbig0:armhf (2.1-6.1ubuntu2) ... 222s Setting up libaec0:armhf (1.1.3-1) ... 222s Setting up python3-platformdirs (4.2.1-1) ... 222s Setting up python3-tz (2024.1-2) ... 223s Setting up libdw1t64:armhf (0.191-1) ... 223s Setting up unicode-data (15.1.0-1) ... 223s Setting up python3-pint (0.19.2-1) ... 223s Setting up python3-decorator (5.1.1-5) ... 223s Setting up autotools-dev (20220109.1) ... 223s Setting up libblas3:armhf (3.12.0-3build1) ... 223s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 223s Setting up python3-packaging (24.0-1) ... 223s Setting up rpcsvc-proto (1.4.2-0ubuntu7) ... 223s Setting up gcc-13-base:armhf (13.2.0-23ubuntu4) ... 223s Setting up python3-pyproject-hooks (1.1.0-1) ... 224s Setting up libfreetype6:armhf (2.13.2+dfsg-1build3) ... 224s Setting up python-cartopy-data (0.23.0+dfsg-1) ... 224s Setting up python3-pooch (1.8.2-1) ... 224s Setting up python3-brotli (1.1.0-2build2) ... 224s Setting up python3-cycler (0.12.1-1) ... 224s Setting up libimagequant0:armhf (2.18.0-1build1) ... 224s Setting up fonts-dejavu-mono (2.37-8) ... 224s Setting up python3-kiwisolver (1.4.5-1) ... 224s Setting up libmpc3:armhf (1.3.1-1build1) ... 224s Setting up libatomic1:armhf (14.1.0-1ubuntu1) ... 224s Setting up libtcl8.6:armhf (8.6.14+dfsg-1build1) ... 224s Setting up autopoint (0.21-14ubuntu2) ... 224s Setting up fonts-dejavu-core (2.37-8) ... 224s Setting up libjpeg-turbo8:armhf (2.1.5-2ubuntu2) ... 224s Setting up python3-toml (0.10.2-1) ... 224s Setting up python3-installer (0.7.0+dfsg1-3) ... 225s Setting up libgfortran5:armhf (14.1.0-1ubuntu1) ... 225s Setting up autoconf (2.71-3) ... 225s Setting up python3-pluggy (1.5.0-1) ... 225s Setting up libwebp7:armhf (1.4.0-0.1) ... 225s Setting up libubsan1:armhf (14.1.0-1ubuntu1) ... 225s Setting up dwz (0.15-1build6) ... 225s Setting up libcrypt-dev:armhf (1:4.4.36-4build1) ... 225s Setting up python3-traitlets (5.5.0-2) ... 225s Setting up libasan8:armhf (14.1.0-1ubuntu1) ... 225s Setting up libxslt1.1:armhf (1.1.39-0exp1build1) ... 225s Setting up debugedit (1:5.0-5build2) ... 225s Setting up libopenjp2-7:armhf (2.5.0-2build3) ... 225s Setting up libharfbuzz0b:armhf (8.3.0-2build2) ... 225s Setting up python3-dateutil (2.9.0-2) ... 225s Setting up libxss1:armhf (1:1.2.3-1build3) ... 225s Setting up libjs-bootstrap4 (4.6.1+dfsg1-4) ... 225s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 225s Setting up python3-mpmath (1.3.0-1) ... 226s Setting up libisl23:armhf (0.26-3build1) ... 226s Setting up python3-build (1.2.1-1) ... 226s Setting up libc-dev-bin (2.39-0ubuntu9) ... 226s Setting up python-matplotlib-data (3.6.3-2ubuntu1) ... 226s Setting up libwebpmux3:armhf (1.4.0-0.1) ... 226s Setting up python3-appdirs (1.4.4-4) ... 226s Setting up libcc1-0:armhf (14.1.0-1ubuntu1) ... 226s Setting up libsz2:armhf (1.1.3-1) ... 226s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 226s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 226s Setting up automake (1:1.16.5-1.3ubuntu1) ... 226s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 226s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 226s Setting up python3-sympy (1.12-8) ... 233s Setting up liblapack3:armhf (3.12.0-3build1) ... 233s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 233s Setting up gettext (0.21-14ubuntu2) ... 233s Setting up cpp-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 233s Setting up pybuild-plugin-pyproject (6.20240422) ... 233s Setting up fontconfig-config (2.15.0-1.1ubuntu2) ... 233s Setting up python3-pytest (7.4.4-1) ... 233s Setting up libgeos-c1t64:armhf (3.12.2-1) ... 233s Setting up libwebpdemux2:armhf (1.4.0-0.1) ... 233s Setting up python3-setuptools-scm (8.1.0-1) ... 234s Setting up intltool-debian (0.35.0+20060710.6) ... 234s Setting up python3-fs (2.4.16-4) ... 234s Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... 234s Setting up libraqm0:armhf (0.10.1-1build1) ... 234s Setting up python3-numpy (1:1.26.4+ds-10) ... 236s Setting up dh-strip-nondeterminism (1.14.0-1) ... 236s Setting up libgcc-13-dev:armhf (13.2.0-23ubuntu4) ... 236s Setting up python3-lxml:armhf (5.2.1-1) ... 236s Setting up libtiff6:armhf (4.5.1+git230720-4ubuntu2) ... 236s Setting up libc6-dev:armhf (2.39-0ubuntu9) ... 236s Setting up python3-contourpy (1.0.7-3) ... 236s Setting up libfontconfig1:armhf (2.15.0-1.1ubuntu2) ... 236s Setting up libhdf5-103-1t64:armhf (1.10.10+repack-3.1ubuntu4) ... 236s Setting up cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 236s Setting up libstdc++-13-dev:armhf (13.2.0-23ubuntu4) ... 236s Setting up liblbfgsb0:armhf (3.0+dfsg.4-1build1) ... 236s Setting up libhdf5-hl-100t64:armhf (1.10.10+repack-3.1ubuntu4) ... 236s Setting up python3-shapely (2.0.4-1) ... 237s Setting up libnetcdf19t64:armhf (1:4.9.2-6) ... 237s Setting up libxft2:armhf (2.3.6-1build1) ... 237s Setting up python3-scipy (1.12.0-2) ... 240s Setting up cpp-13 (13.2.0-23ubuntu4) ... 240s Setting up libproj25:armhf (9.4.1-1) ... 240s Setting up po-debconf (1.0.21+nmu1) ... 240s Setting up libtk8.6:armhf (8.6.14-1build1) ... 240s Setting up python3-pandas-lib:armhf (2.1.4+dfsg-8) ... 240s Setting up python3-pyproj (3.6.1-4) ... 240s Setting up gcc-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 240s Setting up python3-pil:armhf (10.3.0-2) ... 241s Setting up python3-pandas (2.1.4+dfsg-8) ... 246s Setting up gcc-13 (13.2.0-23ubuntu4) ... 246s Setting up python3-cftime (1.6.4-1) ... 246s Setting up cpp (4:13.2.0-7ubuntu1) ... 246s Setting up python3-netcdf4 (1.7.0-1) ... 246s Setting up gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 246s Setting up g++-13-arm-linux-gnueabihf (13.2.0-23ubuntu4) ... 246s Setting up g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 246s Setting up g++-13 (13.2.0-23ubuntu4) ... 246s Setting up tk8.6-blt2.5 (2.5.3+dfsg-7build1) ... 246s Setting up libtool (2.4.7-7build1) ... 246s Setting up blt (2.5.3+dfsg-7build1) ... 246s Setting up python3-xarray (2024.03.0-1) ... 248s Setting up python3-tk:armhf (3.12.3-0ubuntu1) ... 248s Setting up gcc (4:13.2.0-7ubuntu1) ... 248s Setting up dh-autoreconf (20) ... 248s Setting up python3-pil.imagetk:armhf (10.3.0-2) ... 248s Setting up g++ (4:13.2.0-7ubuntu1) ... 248s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 248s Setting up build-essential (12.10ubuntu1) ... 248s Setting up debhelper (13.15.3ubuntu2) ... 248s Setting up pybuild-plugin-autopkgtest (6.20240422) ... 248s Setting up python3-ufolib2 (0.16.0+dfsg1-1) ... 248s Setting up python3-fonttools (4.46.0-1build2) ... 249s Setting up python3-matplotlib (3.6.3-2ubuntu1) ... 251s Setting up python3-pytest-mpl (0.17.0-1) ... 251s Setting up python3-cartopy (0.23.0+dfsg-1) ... 251s Setting up python3-metpy (1.6.2+ds-1) ... 251s Setting up autopkgtest-satdep (0) ... 251s Processing triggers for libc-bin (2.39-0ubuntu9) ... 251s Processing triggers for man-db (2.12.1-2) ... 253s Processing triggers for install-info (7.1-3build2) ... 275s (Reading database ... 72776 files and directories currently installed.) 275s Removing autopkgtest-satdep (0) ... 281s autopkgtest [10:25:56]: test pybuild-autopkgtest: pybuild-autopkgtest 281s autopkgtest [10:25:56]: test pybuild-autopkgtest: [----------------------- 284s pybuild-autopkgtest 285s I: pybuild pybuild:308: ln -s /tmp/autopkgtest.VT1ucx/build.I4T/src/conftest.py /tmp/autopkgtest.VT1ucx/build.I4T/src/tests 2>/dev/null || true; ln -s /tmp/autopkgtest.VT1ucx/build.I4T/src/src/metpy/*.txt /tmp/autopkgtest.VT1ucx/autopkgtest_tmp/build/metpy 2>/dev/null || true; ln -s /tmp/autopkgtest.VT1ucx/build.I4T/src/src/metpy/plots/_static /tmp/autopkgtest.VT1ucx/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true; ln -s /tmp/autopkgtest.VT1ucx/build.I4T/src/src/metpy/plots/colortable_files /tmp/autopkgtest.VT1ucx/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true; ln -s /tmp/autopkgtest.VT1ucx/build.I4T/src/src/metpy/plots/nexrad_tables /tmp/autopkgtest.VT1ucx/autopkgtest_tmp/build/metpy/plots 2>/dev/null || true 285s I: pybuild base:311: cd /tmp/autopkgtest.VT1ucx/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 290s ============================= test session starts ============================== 290s platform linux -- Python 3.12.4, pytest-7.4.4, pluggy-1.5.0 290s Matplotlib: 3.6.3 290s Freetype: 2.13.2 290s Dep Versions: Matplotlib 3.6.3, NumPy 1.26.4, Pandas 2.1.4, Pint 0.19.2 290s PyProj 3.6.1, SciPy 1.12.0, Traitlets 5.5.0, Xarray 2024.3.0 290s rootdir: /tmp/autopkgtest.VT1ucx/autopkgtest_tmp/build 290s configfile: pyproject.toml 290s plugins: mpl-0.17.0 290s collected 1257 items / 271 deselected / 986 selected 290s 290s tests/test_cbook.py .. [ 0%] 290s tests/test_deprecation.py . [ 0%] 290s tests/test_packaging.py . [ 0%] 290s tests/test_testing.py ........ [ 1%] 290s tests/test_xarray.py ................................................... [ 6%] 290s ........................................................................ [ 13%] 293s ............................................. [ 18%] 293s tests/calc/test_basic.py s...s....s...s...s....s........s.......s....s.. [ 23%] 293s ......s....s....s...s....s...s...s...s......s........s.....s..........s. [ 30%] 293s ...s...s.....s....s... [ 32%] 293s tests/calc/test_calc_tools.py .......................................... [ 36%] 295s ......................FF...............................FFFFFFF.FFFF..... [ 44%] 295s ............................. [ 47%] 299s tests/calc/test_cross_sections.py ............ [ 48%] 299s tests/calc/test_indices.py .... [ 48%] 299s tests/calc/test_kinematics.py .......................................... [ 52%] 300s ......FFFFFF............. [ 55%] 300s tests/calc/test_thermo.py .............................................. [ 60%] 301s ...............F.........................F.............................. [ 67%] 302s ........................................................................ [ 74%] 303s .......FFFFF............. [ 77%] 303s tests/calc/test_turbulence.py ........................... [ 80%] 303s tests/interpolate/test_geometry.py ............ [ 81%] 303s tests/interpolate/test_grid.py ....... [ 81%] 303s tests/interpolate/test_interpolate_tools.py ...... [ 82%] 303s tests/interpolate/test_one_dimension.py .................. [ 84%] 303s tests/interpolate/test_points.py ... [ 84%] 303s tests/interpolate/test_slices.py ........ [ 85%] 303s tests/io/test_tools.py .. [ 85%] 304s tests/plots/test_cartopy_utils.py ....... [ 86%] 304s tests/plots/test_ctables.py .......... [ 87%] 304s tests/plots/test_declarative.py ........... [ 88%] 304s tests/plots/test_mapping.py .................... [ 90%] 304s tests/plots/test_mpl.py . [ 90%] 304s tests/plots/test_patheffects.py ........ [ 91%] 304s tests/plots/test_plot_areas.py ..... [ 91%] 305s tests/plots/test_skewt.py .................................... [ 95%] 306s tests/plots/test_station_plot.py .......................... [ 98%] 306s tests/plots/test_util.py ............. [ 99%] 306s tests/plots/test_wx_symbols.py .... [100%] 306s 306s =================================== FAILURES =================================== 306s __________________________ test_get_layer_heights_agl __________________________ 306s 306s def test_get_layer_heights_agl(): 306s """Test get_layer_heights with interpolation.""" 306s heights = np.arange(300, 1200, 100) * units.m 306s data = heights.m * 0.1 * units.degC 306s > heights, data = get_layer_heights(heights, 500 * units.m, data, with_agl=True) 306s 306s tests/calc/test_calc_tools.py:461: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = None, interpolate = True 306s with_agl = True 306s args = (,) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _________________ test_get_layer_heights_agl_bottom_no_interp __________________ 306s 306s def test_get_layer_heights_agl_bottom_no_interp(): 306s """Test get_layer_heights with no interpolation and a bottom.""" 306s heights_init = np.arange(300, 1200, 100) * units.m 306s data = heights_init.m * 0.1 * units.degC 306s > heights, data = get_layer_heights(heights_init, 500 * units.m, data, with_agl=True, 306s interpolate=False, bottom=200 * units.m) 306s 306s tests/calc/test_calc_tools.py:472: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = False, with_agl = True 306s args = (,) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s ___________________________ test_angle_to_direction ____________________________ 306s 306s def test_angle_to_direction(): 306s """Test single angle in degree.""" 306s expected_dirs = DIR_STRS[:-1] # UND at -1 306s > output_dirs = [angle_to_direction(angle) for angle in FULL_CIRCLE_DEGREES] 306s 306s tests/calc/test_calc_tools.py:850: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = , full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _________________________ test_angle_to_direction_edge _________________________ 306s 306s def test_angle_to_direction_edge(): 306s """Test single angle edge case (360 and no units) in degree.""" 306s expected_dirs = 'N' 306s > output_dirs = angle_to_direction(360) 306s 306s tests/calc/test_calc_tools.py:857: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = , full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _________________________ test_angle_to_direction_list _________________________ 306s 306s def test_angle_to_direction_list(): 306s """Test list of angles in degree.""" 306s expected_dirs = DIR_STRS[:-1] 306s > output_dirs = list(angle_to_direction(FULL_CIRCLE_DEGREES)) 306s 306s tests/calc/test_calc_tools.py:864: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _________________________ test_angle_to_direction_arr __________________________ 306s 306s def test_angle_to_direction_arr(): 306s """Test array of angles in degree.""" 306s expected_dirs = DIR_STRS[:-1] 306s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES) 306s 306s tests/calc/test_calc_tools.py:871: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _________________________ test_angle_to_direction_full _________________________ 306s 306s def test_angle_to_direction_full(): 306s """Test the `full` keyword argument, expecting unabbrieviated output.""" 306s expected_dirs = [ 306s 'North', 'North North East', 'North East', 'East North East', 306s 'East', 'East South East', 'South East', 'South South East', 306s 'South', 'South South West', 'South West', 'West South West', 306s 'West', 'West North West', 'North West', 'North North West' 306s ] 306s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, full=True) 306s 306s tests/calc/test_calc_tools.py:883: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = True, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s ____________________ test_angle_to_direction_invalid_scalar ____________________ 306s 306s @pytest.mark.filterwarnings('ignore:invalid value encountered in remainder:RuntimeWarning') 306s def test_angle_to_direction_invalid_scalar(): 306s """Test invalid angle.""" 306s expected_dirs = UND 306s > output_dirs = angle_to_direction(None) 306s 306s tests/calc/test_calc_tools.py:891: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = , full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _____________________ test_angle_to_direction_invalid_arr ______________________ 306s 306s @pytest.mark.filterwarnings('ignore:invalid value encountered in remainder:RuntimeWarning') 306s def test_angle_to_direction_invalid_arr(): 306s """Test array of invalid angles.""" 306s expected_dirs = ['NE', UND, UND, UND, 'N'] 306s > output_dirs = angle_to_direction(['46', None, np.nan, None, '362.']) 306s 306s tests/calc/test_calc_tools.py:899: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = , full = False 306s level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _______________________ test_angle_to_direction_level_3 ________________________ 306s 306s def test_angle_to_direction_level_3(): 306s """Test array of angles in degree.""" 306s expected_dirs = DIR_STRS[:-1] # UND at -1 306s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=3) 306s 306s tests/calc/test_calc_tools.py:913: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = False, level = 3 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _______________________ test_angle_to_direction_level_2 ________________________ 306s 306s def test_angle_to_direction_level_2(): 306s """Test array of angles in degree.""" 306s expected_dirs = [ 306s 'N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW' 306s ] 306s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=2) 306s 306s tests/calc/test_calc_tools.py:923: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = False, level = 2 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _______________________ test_angle_to_direction_level_1 ________________________ 306s 306s def test_angle_to_direction_level_1(): 306s """Test array of angles in degree.""" 306s expected_dirs = [ 306s 'N', 'N', 'N', 'E', 'E', 'E', 'E', 'S', 'S', 'S', 'S', 306s 'W', 'W', 'W', 'W', 'N'] 306s > output_dirs = angle_to_direction(FULL_CIRCLE_DEGREES, level=1) 306s 306s tests/calc/test_calc_tools.py:932: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = 306s full = False, level = 1 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _______________________ test_angle_to_direction_ndarray ________________________ 306s 306s def test_angle_to_direction_ndarray(): 306s """Test array of angles in degree with a 2d numpy array.""" 306s expected_dirs = np.array([['E', 'W'], ['E', 'W']]) 306s input_angle = np.array([[90, 270], [90, 270]]) 306s > output_dirs = angle_to_direction(input_angle, level=1) 306s 306s tests/calc/test_calc_tools.py:940: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s input_angle = , full = False 306s level = 1 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s def angle_to_direction(input_angle, full=False, level=3): 306s """Convert the meteorological angle to directional text. 306s 306s Works for angles greater than or equal to 360 (360 -> N | 405 -> NE) 306s and rounds to the nearest angle (355 -> N | 404 -> NNE) 306s 306s Parameters 306s ---------- 306s input_angle : float or array-like 306s Angles such as 0, 25, 45, 360, 410, etc. 306s full : bool 306s True returns full text (South), False returns abbreviated text (S) 306s level : int 306s Level of detail (3 = N/NNE/NE/ENE/E... 2 = N/NE/E/SE... 1 = N/E/S/W) 306s 306s Returns 306s ------- 306s direction 306s The directional text 306s 306s Examples 306s -------- 306s >>> from metpy.calc import angle_to_direction 306s >>> from metpy.units import units 306s >>> angle_to_direction(225. * units.deg) 306s 'SW' 306s 306s """ 306s try: # strip units temporarily 306s origin_units = input_angle.units 306s input_angle = input_angle.m 306s except AttributeError: # no units associated 306s origin_units = units.degree 306s 306s if not hasattr(input_angle, '__len__') or isinstance(input_angle, str): 306s input_angle = [input_angle] 306s scalar = True 306s else: 306s scalar = False 306s 306s np_input_angle = np.array(input_angle).astype(float) 306s origshape = np_input_angle.shape 306s ndarray = len(origshape) > 1 306s # clean any numeric strings, negatives, and None does not handle strings with alphabet 306s input_angle = units.Quantity(np_input_angle, origin_units) 306s input_angle[input_angle < 0] = np.nan 306s 306s # Normalize between 0 - 360 306s norm_angles = input_angle % MAX_DEGREE_ANGLE 306s 306s if level == 3: 306s nskip = 1 306s elif level == 2: 306s nskip = 2 306s elif level == 1: 306s nskip = 4 306s else: 306s err_msg = 'Level of complexity cannot be less than 1 or greater than 3!' 306s raise ValueError(err_msg) 306s 306s angle_dict = { 306s i * BASE_DEGREE_MULTIPLIER.m * nskip: dir_str 306s for i, dir_str in enumerate(DIR_STRS[::nskip]) 306s } 306s angle_dict[MAX_DEGREE_ANGLE.m] = 'N' # handle edge case of 360. 306s angle_dict[UND_ANGLE] = UND 306s 306s # round to the nearest angles for dict lookup 306s # 0.001 is subtracted so there's an equal number of dir_str from 306s # np.arange(0, 360, 22.5), or else some dir_str will be preferred 306s 306s # without the 0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'E', 'E', 'E', 'SE', 'S', 'S', 306s # 'S', 'SW', 'W', 'W', 'W', 'NW', 'N'] 306s 306s # with the -0.001, level=2 would yield: 306s # ['N', 'N', 'NE', 'NE', 'E', 'E', 'SE', 'SE', 306s # 'S', 'S', 'SW', 'SW', 'W', 'W', 'NW', 'NW'] 306s 306s > multiplier = np.round((norm_angles / BASE_DEGREE_MULTIPLIER / nskip) - 0.001).m 306s E TypeError: no implementation found for 'numpy.round' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:1887: TypeError 306s _________________ test_storm_relative_helicity_no_storm_motion _________________ 306s 306s def test_storm_relative_helicity_no_storm_motion(): 306s """Test storm relative helicity with no storm motion and differing input units.""" 306s u = np.array([0, 20, 10, 0]) * units('m/s') 306s v = np.array([20, 0, 0, 10]) * units('m/s') 306s u = u.to('knots') 306s heights = np.array([0, 250, 500, 750]) * units.m 306s 306s > positive_srh, negative_srh, total_srh = storm_relative_helicity(heights, u, v, 306s depth=750 * units.meters) 306s 306s tests/calc/test_kinematics.py:550: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = (, ) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s __________________ test_storm_relative_helicity_storm_motion ___________________ 306s 306s def test_storm_relative_helicity_storm_motion(): 306s """Test storm relative helicity with storm motion and differing input units.""" 306s u = np.array([5, 25, 15, 5]) * units('m/s') 306s v = np.array([30, 10, 10, 20]) * units('m/s') 306s u = u.to('knots') 306s heights = np.array([0, 250, 500, 750]) * units.m 306s 306s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 306s depth=750 * units.meters, 306s storm_u=5 * units('m/s'), 306s storm_v=10 * units('m/s')) 306s 306s tests/calc/test_kinematics.py:565: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = (, ) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _______________ test_storm_relative_helicity_with_interpolation ________________ 306s 306s def test_storm_relative_helicity_with_interpolation(): 306s """Test storm relative helicity with interpolation.""" 306s u = np.array([-5, 15, 25, 15, -5]) * units('m/s') 306s v = np.array([40, 20, 10, 10, 30]) * units('m/s') 306s u = u.to('knots') 306s heights = np.array([0, 100, 200, 300, 400]) * units.m 306s 306s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 306s bottom=50 * units.meters, 306s depth=300 * units.meters, 306s storm_u=5 * units('m/s'), 306s storm_v=10 * units('m/s')) 306s 306s tests/calc/test_kinematics.py:582: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = (, ) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _________________________ test_storm_relative_helicity _________________________ 306s 306s def test_storm_relative_helicity(): 306s """Test function for SRH calculations on an eigth-circle hodograph.""" 306s # Create larger arrays for everything except pressure to make a smoother graph 306s hgt_int = np.arange(0, 2050, 50) 306s hgt_int = hgt_int * units('meter') 306s dir_int = np.arange(180, 272.25, 2.25) 306s spd_int = np.zeros(hgt_int.shape[0]) 306s spd_int[:] = 2. 306s u_int, v_int = wind_components(spd_int * units('m/s'), dir_int * units.degree) 306s 306s # Put in the correct value of SRH for a eighth-circle, 2 m/s hodograph 306s # (SRH = 2 * area under hodo, in this case...) 306s srh_true_p = (.25 * np.pi * (2 ** 2)) * units('m^2/s^2') 306s 306s # Since there's only positive SRH in this case, total SRH will be equal to positive SRH and 306s # negative SRH will be zero. 306s srh_true_t = srh_true_p 306s srh_true_n = 0 * units('m^2/s^2') 306s > p_srh, n_srh, t_srh = storm_relative_helicity(hgt_int, u_int, v_int, 306s 1000 * units('meter'), 306s bottom=0 * units('meter'), 306s storm_u=0 * units.knot, 306s storm_v=0 * units.knot) 306s 306s tests/calc/test_kinematics.py:611: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = () 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _______________________ test_storm_relative_helicity_agl _______________________ 306s 306s def test_storm_relative_helicity_agl(): 306s """Test storm relative helicity with heights above ground.""" 306s u = np.array([-5, 15, 25, 15, -5]) * units('m/s') 306s v = np.array([40, 20, 10, 10, 30]) * units('m/s') 306s u = u.to('knots') 306s heights = np.array([100, 200, 300, 400, 500]) * units.m 306s 306s > pos_srh, neg_srh, total_srh = storm_relative_helicity(heights, u, v, 306s bottom=50 * units.meters, 306s depth=300 * units.meters, 306s storm_u=5 * units('m/s'), 306s storm_v=10 * units('m/s')) 306s 306s tests/calc/test_kinematics.py:628: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = (, ) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _____________________ test_storm_relative_helicity_masked ______________________ 306s 306s def test_storm_relative_helicity_masked(): 306s """Test that srh does not return masked values.""" 306s h = units.Quantity(np.ma.array([20.72, 234.85, 456.69, 683.21]), units.meter) 306s u = units.Quantity(np.ma.array(np.zeros((4,))), units.knot) 306s v = units.Quantity(np.zeros_like(u), units.knot) 306s > pos, neg, com = storm_relative_helicity(h, u, v, depth=500 * units.meter, 306s storm_u=15.77463015050421 * units('m/s'), 306s storm_v=21.179437759755647 * units('m/s')) 306s 306s tests/calc/test_kinematics.py:646: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s /usr/lib/python3/dist-packages/metpy/calc/kinematics.py:848: in storm_relative_helicity 306s _, u, v = get_layer_heights(height, depth, u, v, with_agl=True, bottom=bottom) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s height = 306s depth = , bottom = 306s interpolate = True, with_agl = True 306s args = (, ) 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[length]') 306s def get_layer_heights(height, depth, *args, bottom=None, interpolate=True, with_agl=False): 306s """Return an atmospheric layer from upper air data with the requested bottom and depth. 306s 306s This function will subset an upper air dataset to contain only the specified layer using 306s the height only. 306s 306s Parameters 306s ---------- 306s height : array-like 306s Atmospheric height 306s depth : `pint.Quantity` 306s Thickness of the layer 306s args : array-like 306s Atmospheric variable(s) measured at the given pressures 306s bottom : `pint.Quantity`, optional 306s Bottom of the layer 306s interpolate : bool, optional 306s Interpolate the top and bottom points if they are not in the given data. Defaults 306s to True. 306s with_agl : bool, optional 306s Returns the height as above ground level by subtracting the minimum height in the 306s provided height. Defaults to False. 306s 306s Returns 306s ------- 306s `pint.Quantity, pint.Quantity` 306s Height and data variables of the layer 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Also, this will return Pint Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``heights`` parameter to ``height`` 306s 306s """ 306s # Make sure pressure and datavars are the same length 306s for datavar in args: 306s if len(height) != len(datavar): 306s raise ValueError('Height and data variables must have the same length.') 306s 306s # If we want things in AGL, subtract the minimum height from all height values 306s if with_agl: 306s > sfc_height = np.min(height) 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/tools.py:476: TypeError 306s _________________________________ test_lfc_ml2 _________________________________ 306s 306s def test_lfc_ml2(): 306s """Test a mixed-layer LFC calculation that previously crashed.""" 306s levels = np.array([1024.95703125, 1016.61474609, 1005.33056641, 991.08544922, 973.4163208, 306s 951.3381958, 924.82836914, 898.25482178, 873.46124268, 848.69830322, 306s 823.92553711, 788.49304199, 743.44580078, 700.50970459, 659.62017822, 306s 620.70861816, 583.69421387, 548.49719238, 515.03826904, 483.24401855, 306s 453.0418396, 424.36477661, 397.1505127, 371.33441162, 346.85922241, 306s 323.66995239, 301.70935059, 280.92651367, 261.27053833, 242.69168091, 306s 225.14237976, 208.57781982, 192.95333862, 178.22599792, 164.39630127, 306s 151.54336548, 139.68635559, 128.74923706, 118.6588974, 109.35111237, 306s 100.76405334, 92.84288025, 85.53556824, 78.79430389, 72.57549286, 306s 66.83885193, 61.54678726, 56.66480637, 52.16108322]) * units.mbar 306s temperatures = np.array([6.00750732, 5.14892578, 4.177948, 3.00268555, 1.55535889, 306s -0.25527954, -1.93988037, -3.57766724, -4.40600586, -4.19238281, 306s -3.71185303, -4.47943115, -6.81280518, -8.08685303, -8.41287231, 306s -10.79302979, -14.13262939, -16.85784912, -19.51675415, 306s -22.28689575, -24.99938965, -27.79664612, -30.90414429, 306s -34.49435425, -38.438797, -42.27981567, -45.99230957, 306s -49.75340271, -53.58230591, -57.30686951, -60.76026917, 306s -63.92070007, -66.72470093, -68.97846985, -70.4264679, 306s -71.16407776, -71.53797913, -71.64375305, -71.52735901, 306s -71.53523254, -71.61097717, -71.92687988, -72.68682861, 306s -74.129776, -76.02471924, -76.88977051, -76.26008606, 306s -75.90351868, -76.15809631]) * units.celsius 306s dewpoints = np.array([4.50012302, 3.42483997, 2.78102994, 2.24474645, 1.593485, -0.9440815, 306s -3.8044982, -3.55629468, -9.7376976, -10.2950449, -9.67498302, 306s -10.30486488, -8.70559597, -8.71669006, -12.66509628, -18.6697197, 306s -23.00351334, -29.46240425, -36.82178497, -41.68824768, -44.50320816, 306s -48.54426575, -52.50753403, -51.09564209, -48.92690659, -49.97380829, 306s -51.57516098, -52.62096405, -54.24332809, -57.09109879, -60.5596199, 306s -63.93486404, -67.07530212, -70.01263428, -72.9258728, -76.12271881, 306s -79.49847412, -82.2350769, -83.91127014, -84.95665741, -85.61238861, 306s -86.16391754, -86.7653656, -87.34436035, -87.87495422, -88.34281921, 306s -88.74453735, -89.04680634, -89.26436615]) * units.celsius 306s __, t_mixed, td_mixed = mixed_parcel(levels, temperatures, dewpoints) 306s mixed_parcel_prof = parcel_profile(levels, t_mixed, td_mixed) 306s > lfc_pressure, lfc_temp = lfc(levels, temperatures, dewpoints, mixed_parcel_prof, td_mixed) 306s 306s tests/calc/test_thermo.py:618: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s dewpoint = 306s parcel_temperature_profile = 306s dewpoint_start = , which = 'top' 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[pressure]', '[temperature]', '[temperature]', '[temperature]') 306s def lfc(pressure, temperature, dewpoint, parcel_temperature_profile=None, dewpoint_start=None, 306s which='top'): 306s r"""Calculate the level of free convection (LFC). 306s 306s This works by finding the first intersection of the ideal parcel path and 306s the measured parcel temperature. If this intersection occurs below the LCL, 306s the LFC is determined to be the same as the LCL, based upon the conditions 306s set forth in [USAF1990]_, pg 4-14, where a parcel must be lifted dry adiabatically 306s to saturation before it can freely rise. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Atmospheric pressure profile. This array must be from high to low pressure. 306s 306s temperature : `pint.Quantity` 306s Temperature at the levels given by `pressure` 306s 306s dewpoint : `pint.Quantity` 306s Dewpoint at the levels given by `pressure` 306s 306s parcel_temperature_profile: `pint.Quantity`, optional 306s The parcel's temperature profile from which to calculate the LFC. Defaults to the 306s surface parcel profile. 306s 306s dewpoint_start: `pint.Quantity`, optional 306s Dewpoint of the parcel for which to calculate the LFC. Defaults to the surface 306s dewpoint. 306s 306s which: str, optional 306s Pick which LFC to return. Options are 'top', 'bottom', 'wide', 'most_cape', and 'all'; 306s 'top' returns the lowest-pressure LFC (default), 306s 'bottom' returns the highest-pressure LFC, 306s 'wide' returns the LFC whose corresponding EL is farthest away, 306s 'most_cape' returns the LFC that results in the most CAPE in the profile. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s LFC pressure, or array of same if which='all' 306s 306s `pint.Quantity` 306s LFC temperature, or array of same if which='all' 306s 306s Examples 306s -------- 306s >>> from metpy.calc import dewpoint_from_relative_humidity, lfc 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate dewpoint 306s >>> Td = dewpoint_from_relative_humidity(T, rh) 306s >>> # calculate LFC 306s >>> lfc(p, T, Td) 306s (, ) 306s 306s See Also 306s -------- 306s parcel_profile 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Since this function returns scalar values when given a profile, this will return Pint 306s Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``dewpt``,``dewpoint_start`` parameters to ``dewpoint``, ``dewpoint_start`` 306s 306s """ 306s # Default to surface parcel if no profile or starting pressure level is given 306s if parcel_temperature_profile is None: 306s pressure, temperature, dewpoint = _remove_nans(pressure, temperature, dewpoint) 306s new_profile = parcel_profile_with_lcl(pressure, temperature, dewpoint) 306s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 306s parcel_temperature_profile = parcel_temperature_profile.to(temperature.units) 306s else: 306s new_profile = _remove_nans(pressure, temperature, dewpoint, parcel_temperature_profile) 306s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 306s 306s if dewpoint_start is None: 306s dewpoint_start = dewpoint[0] 306s 306s # The parcel profile and data may have the same first data point. 306s # If that is the case, ignore that point to get the real first 306s # intersection for the LFC calculation. Use logarithmic interpolation. 306s if np.isclose(parcel_temperature_profile[0].to(temperature.units).m, temperature[0].m): 306s x, y = find_intersections(pressure[1:], parcel_temperature_profile[1:], 306s temperature[1:], direction='increasing', log_x=True) 306s else: 306s x, y = find_intersections(pressure, parcel_temperature_profile, 306s temperature, direction='increasing', log_x=True) 306s 306s # Compute LCL for this parcel for future comparisons 306s this_lcl = lcl(pressure[0], parcel_temperature_profile[0], dewpoint_start) 306s 306s # The LFC could: 306s # 1) Not exist 306s # 2) Exist but be equal to the LCL 306s # 3) Exist and be above the LCL 306s 306s # LFC does not exist or is LCL 306s if len(x) == 0: 306s # Is there any positive area above the LCL? 306s mask = pressure < this_lcl[0] 306s if np.all(_less_or_close(parcel_temperature_profile[mask], temperature[mask])): 306s # LFC doesn't exist 306s x = units.Quantity(np.nan, pressure.units) 306s y = units.Quantity(np.nan, temperature.units) 306s else: # LFC = LCL 306s x, y = this_lcl 306s return x, y 306s 306s # LFC exists. Make sure it is no lower than the LCL 306s else: 306s idx = x < this_lcl[0] 306s # LFC height < LCL height, so set LFC = LCL 306s if not any(idx): 306s el_pressure, _ = find_intersections(pressure[1:], parcel_temperature_profile[1:], 306s temperature[1:], direction='decreasing', 306s log_x=True) 306s > if np.min(el_pressure) > this_lcl[0]: 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:724: TypeError 306s __________________________ test_lfc_and_el_below_lcl ___________________________ 306s 306s def test_lfc_and_el_below_lcl(): 306s """Test that LFC and EL are returned as NaN if both are below LCL.""" 306s dewpoint = [264.5351, 261.13443, 259.0122, 252.30063, 248.58017, 242.66582] * units.kelvin 306s temperature = [273.09723, 268.40173, 263.56207, 260.257, 256.63538, 306s 252.91345] * units.kelvin 306s pressure = [1017.16, 950, 900, 850, 800, 750] * units.hPa 306s el_pressure, el_temperature = el(pressure, temperature, dewpoint) 306s > lfc_pressure, lfc_temperature = lfc(pressure, temperature, dewpoint) 306s 306s tests/calc/test_thermo.py:938: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s dewpoint = 306s parcel_temperature_profile = 306s dewpoint_start = , which = 'top' 306s 306s @exporter.export 306s @preprocess_and_wrap() 306s @check_units('[pressure]', '[temperature]', '[temperature]', '[temperature]') 306s def lfc(pressure, temperature, dewpoint, parcel_temperature_profile=None, dewpoint_start=None, 306s which='top'): 306s r"""Calculate the level of free convection (LFC). 306s 306s This works by finding the first intersection of the ideal parcel path and 306s the measured parcel temperature. If this intersection occurs below the LCL, 306s the LFC is determined to be the same as the LCL, based upon the conditions 306s set forth in [USAF1990]_, pg 4-14, where a parcel must be lifted dry adiabatically 306s to saturation before it can freely rise. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Atmospheric pressure profile. This array must be from high to low pressure. 306s 306s temperature : `pint.Quantity` 306s Temperature at the levels given by `pressure` 306s 306s dewpoint : `pint.Quantity` 306s Dewpoint at the levels given by `pressure` 306s 306s parcel_temperature_profile: `pint.Quantity`, optional 306s The parcel's temperature profile from which to calculate the LFC. Defaults to the 306s surface parcel profile. 306s 306s dewpoint_start: `pint.Quantity`, optional 306s Dewpoint of the parcel for which to calculate the LFC. Defaults to the surface 306s dewpoint. 306s 306s which: str, optional 306s Pick which LFC to return. Options are 'top', 'bottom', 'wide', 'most_cape', and 'all'; 306s 'top' returns the lowest-pressure LFC (default), 306s 'bottom' returns the highest-pressure LFC, 306s 'wide' returns the LFC whose corresponding EL is farthest away, 306s 'most_cape' returns the LFC that results in the most CAPE in the profile. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s LFC pressure, or array of same if which='all' 306s 306s `pint.Quantity` 306s LFC temperature, or array of same if which='all' 306s 306s Examples 306s -------- 306s >>> from metpy.calc import dewpoint_from_relative_humidity, lfc 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate dewpoint 306s >>> Td = dewpoint_from_relative_humidity(T, rh) 306s >>> # calculate LFC 306s >>> lfc(p, T, Td) 306s (, ) 306s 306s See Also 306s -------- 306s parcel_profile 306s 306s Notes 306s ----- 306s Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). 306s Since this function returns scalar values when given a profile, this will return Pint 306s Quantities even when given xarray DataArray profiles. 306s 306s .. versionchanged:: 1.0 306s Renamed ``dewpt``,``dewpoint_start`` parameters to ``dewpoint``, ``dewpoint_start`` 306s 306s """ 306s # Default to surface parcel if no profile or starting pressure level is given 306s if parcel_temperature_profile is None: 306s pressure, temperature, dewpoint = _remove_nans(pressure, temperature, dewpoint) 306s new_profile = parcel_profile_with_lcl(pressure, temperature, dewpoint) 306s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 306s parcel_temperature_profile = parcel_temperature_profile.to(temperature.units) 306s else: 306s new_profile = _remove_nans(pressure, temperature, dewpoint, parcel_temperature_profile) 306s pressure, temperature, dewpoint, parcel_temperature_profile = new_profile 306s 306s if dewpoint_start is None: 306s dewpoint_start = dewpoint[0] 306s 306s # The parcel profile and data may have the same first data point. 306s # If that is the case, ignore that point to get the real first 306s # intersection for the LFC calculation. Use logarithmic interpolation. 306s if np.isclose(parcel_temperature_profile[0].to(temperature.units).m, temperature[0].m): 306s x, y = find_intersections(pressure[1:], parcel_temperature_profile[1:], 306s temperature[1:], direction='increasing', log_x=True) 306s else: 306s x, y = find_intersections(pressure, parcel_temperature_profile, 306s temperature, direction='increasing', log_x=True) 306s 306s # Compute LCL for this parcel for future comparisons 306s this_lcl = lcl(pressure[0], parcel_temperature_profile[0], dewpoint_start) 306s 306s # The LFC could: 306s # 1) Not exist 306s # 2) Exist but be equal to the LCL 306s # 3) Exist and be above the LCL 306s 306s # LFC does not exist or is LCL 306s if len(x) == 0: 306s # Is there any positive area above the LCL? 306s mask = pressure < this_lcl[0] 306s if np.all(_less_or_close(parcel_temperature_profile[mask], temperature[mask])): 306s # LFC doesn't exist 306s x = units.Quantity(np.nan, pressure.units) 306s y = units.Quantity(np.nan, temperature.units) 306s else: # LFC = LCL 306s x, y = this_lcl 306s return x, y 306s 306s # LFC exists. Make sure it is no lower than the LCL 306s else: 306s idx = x < this_lcl[0] 306s # LFC height < LCL height, so set LFC = LCL 306s if not any(idx): 306s el_pressure, _ = find_intersections(pressure[1:], parcel_temperature_profile[1:], 306s temperature[1:], direction='decreasing', 306s log_x=True) 306s > if np.min(el_pressure) > this_lcl[0]: 306s E TypeError: no implementation found for 'numpy.min' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:724: TypeError 306s ___________________________________ test_gdi ___________________________________ 306s 306s def test_gdi(): 306s """Test the Galvez Davison Index calculation.""" 306s pressure = np.array([1014., 1000., 997., 981.2, 947.4, 925., 914.9, 911., 306s 902., 883., 850., 822.3, 816., 807., 793.2, 770., 306s 765.1, 753., 737.5, 737., 713., 700., 688., 685., 306s 680., 666., 659.8, 653., 643., 634., 615., 611.8, 306s 566.2, 516., 500., 487., 484.2, 481., 475., 460., 306s 400.]) * units.hPa 306s temperature = np.array([24.2, 24.2, 24., 23.1, 21., 19.6, 18.7, 18.4, 306s 19.2, 19.4, 17.2, 15.3, 14.8, 14.4, 13.4, 11.6, 306s 11.1, 10., 8.8, 8.8, 8.2, 7., 5.6, 5.6, 306s 5.6, 4.4, 3.8, 3.2, 3., 3.2, 1.8, 1.5, 306s -3.4, -9.3, -11.3, -13.1, -13.1, -13.1, -13.7, -15.1, 306s -23.5]) * units.degC 306s dewpoint = np.array([23.2, 23.1, 22.8, 22., 20.2, 19., 17.6, 17., 306s 16.8, 15.5, 14., 11.7, 11.2, 8.4, 7., 4.6, 306s 5., 6., 4.2, 4.1, -1.8, -2., -1.4, -0.4, 306s -3.4, -5.6, -4.3, -2.8, -7., -25.8, -31.2, -31.4, 306s -34.1, -37.3, -32.3, -34.1, -37.3, -41.1, -37.7, -58.1, 306s -57.5]) * units.degC 306s 306s relative_humidity = relative_humidity_from_dewpoint(temperature, dewpoint) 306s mixrat = mixing_ratio_from_relative_humidity(pressure, temperature, relative_humidity) 306s > gdi = galvez_davison_index(pressure, temperature, mixrat, pressure[0]) 306s 306s tests/calc/test_thermo.py:2468: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 306s return func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s mixing_ratio = 306s surface_pressure = , vertical_dim = 0 306s 306s @exporter.export 306s @add_vertical_dim_from_xarray 306s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 306s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 306s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 306s vertical_dim=0): 306s """ 306s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 306s 306s Calculation of the GDI relies on temperatures and mixing ratios at 950, 306s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 306s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 306s 306s GDI formula derived from [Galvez2015]_: 306s 306s .. math:: GDI = CBI + MWI + II + TC 306s 306s where: 306s 306s * :math:`CBI` is the Column Buoyancy Index 306s * :math:`MWI` is the Mid-tropospheric Warming Index 306s * :math:`II` is the Inversion Index 306s * :math:`TC` is the Terrain Correction [optional] 306s 306s .. list-table:: GDI Values & Corresponding Convective Regimes 306s :widths: 15 75 306s :header-rows: 1 306s 306s * - GDI Value 306s - Expected Convective Regime 306s * - >=45 306s - Scattered to widespread thunderstorms likely. 306s * - 35 to 45 306s - Scattered thunderstorms and/or scattered to widespread rain showers. 306s * - 25 to 35 306s - Isolated to scattered thunderstorms and/or scattered showers. 306s * - 15 to 25 306s - Isolated thunderstorms and/or isolated to scattered showers. 306s * - 5 to 10 306s - Isolated to scattered showers. 306s * - <5 306s - Strong TWI likely, light rain possible. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Pressure level(s) 306s 306s temperature : `pint.Quantity` 306s Temperature corresponding to pressure 306s 306s mixing_ratio : `pint.Quantity` 306s Mixing ratio values corresponding to pressure 306s 306s surface_pressure : `pint.Quantity` 306s Pressure of the surface. 306s 306s vertical_dim : int, optional 306s The axis corresponding to vertical, defaults to 0. Automatically determined from 306s xarray DataArray arguments. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s GDI Index 306s 306s Examples 306s -------- 306s >>> from metpy.calc import mixing_ratio_from_relative_humidity 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate mixing ratio 306s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 306s >>> galvez_davison_index(p, T, mixrat, p[0]) 306s 306s """ 306s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 306s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 306s _______________________________ test_gdi_xarray ________________________________ 306s 306s index_xarray_data_expanded = Size: 1kB 306s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 306s Coordinates: 306s * isobaric (is... float64 192B result = galvez_davison_index( 306s pressure, 306s temperature, 306s mixing_ratio, 306s pressure[0] 306s ) 306s 306s tests/calc/test_thermo.py:2482: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 306s return func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s mixing_ratio = 306s surface_pressure = , vertical_dim = 0 306s 306s @exporter.export 306s @add_vertical_dim_from_xarray 306s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 306s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 306s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 306s vertical_dim=0): 306s """ 306s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 306s 306s Calculation of the GDI relies on temperatures and mixing ratios at 950, 306s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 306s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 306s 306s GDI formula derived from [Galvez2015]_: 306s 306s .. math:: GDI = CBI + MWI + II + TC 306s 306s where: 306s 306s * :math:`CBI` is the Column Buoyancy Index 306s * :math:`MWI` is the Mid-tropospheric Warming Index 306s * :math:`II` is the Inversion Index 306s * :math:`TC` is the Terrain Correction [optional] 306s 306s .. list-table:: GDI Values & Corresponding Convective Regimes 306s :widths: 15 75 306s :header-rows: 1 306s 306s * - GDI Value 306s - Expected Convective Regime 306s * - >=45 306s - Scattered to widespread thunderstorms likely. 306s * - 35 to 45 306s - Scattered thunderstorms and/or scattered to widespread rain showers. 306s * - 25 to 35 306s - Isolated to scattered thunderstorms and/or scattered showers. 306s * - 15 to 25 306s - Isolated thunderstorms and/or isolated to scattered showers. 306s * - 5 to 10 306s - Isolated to scattered showers. 306s * - <5 306s - Strong TWI likely, light rain possible. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Pressure level(s) 306s 306s temperature : `pint.Quantity` 306s Temperature corresponding to pressure 306s 306s mixing_ratio : `pint.Quantity` 306s Mixing ratio values corresponding to pressure 306s 306s surface_pressure : `pint.Quantity` 306s Pressure of the surface. 306s 306s vertical_dim : int, optional 306s The axis corresponding to vertical, defaults to 0. Automatically determined from 306s xarray DataArray arguments. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s GDI Index 306s 306s Examples 306s -------- 306s >>> from metpy.calc import mixing_ratio_from_relative_humidity 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate mixing ratio 306s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 306s >>> galvez_davison_index(p, T, mixrat, p[0]) 306s 306s """ 306s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 306s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 306s _______________________________ test_gdi_arrays ________________________________ 306s 306s index_xarray_data_expanded = Size: 1kB 306s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 306s Coordinates: 306s * isobaric (is... float64 192B result = galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure) 306s 306s tests/calc/test_thermo.py:2507: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 306s return func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s mixing_ratio = 306s surface_pressure = 306s vertical_dim = 0 306s 306s @exporter.export 306s @add_vertical_dim_from_xarray 306s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 306s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 306s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 306s vertical_dim=0): 306s """ 306s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 306s 306s Calculation of the GDI relies on temperatures and mixing ratios at 950, 306s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 306s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 306s 306s GDI formula derived from [Galvez2015]_: 306s 306s .. math:: GDI = CBI + MWI + II + TC 306s 306s where: 306s 306s * :math:`CBI` is the Column Buoyancy Index 306s * :math:`MWI` is the Mid-tropospheric Warming Index 306s * :math:`II` is the Inversion Index 306s * :math:`TC` is the Terrain Correction [optional] 306s 306s .. list-table:: GDI Values & Corresponding Convective Regimes 306s :widths: 15 75 306s :header-rows: 1 306s 306s * - GDI Value 306s - Expected Convective Regime 306s * - >=45 306s - Scattered to widespread thunderstorms likely. 306s * - 35 to 45 306s - Scattered thunderstorms and/or scattered to widespread rain showers. 306s * - 25 to 35 306s - Isolated to scattered thunderstorms and/or scattered showers. 306s * - 15 to 25 306s - Isolated thunderstorms and/or isolated to scattered showers. 306s * - 5 to 10 306s - Isolated to scattered showers. 306s * - <5 306s - Strong TWI likely, light rain possible. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Pressure level(s) 306s 306s temperature : `pint.Quantity` 306s Temperature corresponding to pressure 306s 306s mixing_ratio : `pint.Quantity` 306s Mixing ratio values corresponding to pressure 306s 306s surface_pressure : `pint.Quantity` 306s Pressure of the surface. 306s 306s vertical_dim : int, optional 306s The axis corresponding to vertical, defaults to 0. Automatically determined from 306s xarray DataArray arguments. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s GDI Index 306s 306s Examples 306s -------- 306s >>> from metpy.calc import mixing_ratio_from_relative_humidity 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate mixing ratio 306s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 306s >>> galvez_davison_index(p, T, mixrat, p[0]) 306s 306s """ 306s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 306s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 306s _______________________________ test_gdi_profile _______________________________ 306s 306s index_xarray_data_expanded = Size: 1kB 306s Dimensions: (isobaric: 4, time: 1, y: 2, x: 3) 306s Coordinates: 306s * isobaric (is... float64 192B assert_almost_equal(galvez_davison_index(pressure, temperature, mixing_ratio, pressure[0]), 306s 189.5890429, 4) 306s 306s tests/calc/test_thermo.py:2525: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 306s return func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s mixing_ratio = 306s surface_pressure = , vertical_dim = 0 306s 306s @exporter.export 306s @add_vertical_dim_from_xarray 306s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 306s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 306s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 306s vertical_dim=0): 306s """ 306s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 306s 306s Calculation of the GDI relies on temperatures and mixing ratios at 950, 306s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 306s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 306s 306s GDI formula derived from [Galvez2015]_: 306s 306s .. math:: GDI = CBI + MWI + II + TC 306s 306s where: 306s 306s * :math:`CBI` is the Column Buoyancy Index 306s * :math:`MWI` is the Mid-tropospheric Warming Index 306s * :math:`II` is the Inversion Index 306s * :math:`TC` is the Terrain Correction [optional] 306s 306s .. list-table:: GDI Values & Corresponding Convective Regimes 306s :widths: 15 75 306s :header-rows: 1 306s 306s * - GDI Value 306s - Expected Convective Regime 306s * - >=45 306s - Scattered to widespread thunderstorms likely. 306s * - 35 to 45 306s - Scattered thunderstorms and/or scattered to widespread rain showers. 306s * - 25 to 35 306s - Isolated to scattered thunderstorms and/or scattered showers. 306s * - 15 to 25 306s - Isolated thunderstorms and/or isolated to scattered showers. 306s * - 5 to 10 306s - Isolated to scattered showers. 306s * - <5 306s - Strong TWI likely, light rain possible. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Pressure level(s) 306s 306s temperature : `pint.Quantity` 306s Temperature corresponding to pressure 306s 306s mixing_ratio : `pint.Quantity` 306s Mixing ratio values corresponding to pressure 306s 306s surface_pressure : `pint.Quantity` 306s Pressure of the surface. 306s 306s vertical_dim : int, optional 306s The axis corresponding to vertical, defaults to 0. Automatically determined from 306s xarray DataArray arguments. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s GDI Index 306s 306s Examples 306s -------- 306s >>> from metpy.calc import mixing_ratio_from_relative_humidity 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate mixing ratio 306s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 306s >>> galvez_davison_index(p, T, mixrat, p[0]) 306s 306s """ 306s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 306s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 306s ______________________ test_gdi_no_950_raises_valueerror _______________________ 306s 306s index_xarray_data = Size: 812B 306s Dimensions: (isobaric: 3, time: 1, y: 2, x: 3) 306s Coordinates: 306s * isobaric (i... float64 144B galvez_davison_index( 306s pressure, 306s temperature, 306s mixrat, 306s pressure[0] 306s ) 306s 306s tests/calc/test_thermo.py:2540: 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1546: in wrapper 306s return func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/xarray.py:1330: in wrapper 306s result = func(*bound_args.args, **bound_args.kwargs) 306s /usr/lib/python3/dist-packages/metpy/units.py:333: in wrapper 306s return func(*args, **kwargs) 306s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 306s 306s pressure = 306s temperature = 306s mixing_ratio = 306s surface_pressure = , vertical_dim = 0 306s 306s @exporter.export 306s @add_vertical_dim_from_xarray 306s @preprocess_and_wrap(broadcast=('pressure', 'temperature', 'mixing_ratio')) 306s @check_units('[pressure]', '[temperature]', '[dimensionless]', '[pressure]') 306s def galvez_davison_index(pressure, temperature, mixing_ratio, surface_pressure, 306s vertical_dim=0): 306s """ 306s Calculate GDI from the pressure, temperature, mixing ratio, and surface pressure. 306s 306s Calculation of the GDI relies on temperatures and mixing ratios at 950, 306s 850, 700, and 500 hPa. These four levels define three layers: A) Boundary, 306s B) Trade Wind Inversion (TWI), C) Mid-Troposphere. 306s 306s GDI formula derived from [Galvez2015]_: 306s 306s .. math:: GDI = CBI + MWI + II + TC 306s 306s where: 306s 306s * :math:`CBI` is the Column Buoyancy Index 306s * :math:`MWI` is the Mid-tropospheric Warming Index 306s * :math:`II` is the Inversion Index 306s * :math:`TC` is the Terrain Correction [optional] 306s 306s .. list-table:: GDI Values & Corresponding Convective Regimes 306s :widths: 15 75 306s :header-rows: 1 306s 306s * - GDI Value 306s - Expected Convective Regime 306s * - >=45 306s - Scattered to widespread thunderstorms likely. 306s * - 35 to 45 306s - Scattered thunderstorms and/or scattered to widespread rain showers. 306s * - 25 to 35 306s - Isolated to scattered thunderstorms and/or scattered showers. 306s * - 15 to 25 306s - Isolated thunderstorms and/or isolated to scattered showers. 306s * - 5 to 10 306s - Isolated to scattered showers. 306s * - <5 306s - Strong TWI likely, light rain possible. 306s 306s Parameters 306s ---------- 306s pressure : `pint.Quantity` 306s Pressure level(s) 306s 306s temperature : `pint.Quantity` 306s Temperature corresponding to pressure 306s 306s mixing_ratio : `pint.Quantity` 306s Mixing ratio values corresponding to pressure 306s 306s surface_pressure : `pint.Quantity` 306s Pressure of the surface. 306s 306s vertical_dim : int, optional 306s The axis corresponding to vertical, defaults to 0. Automatically determined from 306s xarray DataArray arguments. 306s 306s Returns 306s ------- 306s `pint.Quantity` 306s GDI Index 306s 306s Examples 306s -------- 306s >>> from metpy.calc import mixing_ratio_from_relative_humidity 306s >>> from metpy.units import units 306s >>> # pressure 306s >>> p = [1008., 1000., 950., 900., 850., 800., 750., 700., 650., 600., 306s ... 550., 500., 450., 400., 350., 300., 250., 200., 306s ... 175., 150., 125., 100., 80., 70., 60., 50., 306s ... 40., 30., 25., 20.] * units.hPa 306s >>> # temperature 306s >>> T = [29.3, 28.1, 23.5, 20.9, 18.4, 15.9, 13.1, 10.1, 6.7, 3.1, 306s ... -0.5, -4.5, -9.0, -14.8, -21.5, -29.7, -40.0, -52.4, 306s ... -59.2, -66.5, -74.1, -78.5, -76.0, -71.6, -66.7, -61.3, 306s ... -56.3, -51.7, -50.7, -47.5] * units.degC 306s >>> # relative humidity 306s >>> rh = [.85, .65, .36, .39, .82, .72, .75, .86, .65, .22, .52, 306s ... .66, .64, .20, .05, .75, .76, .45, .25, .48, .76, .88, 306s ... .56, .88, .39, .67, .15, .04, .94, .35] * units.dimensionless 306s >>> # calculate mixing ratio 306s >>> mixrat = mixing_ratio_from_relative_humidity(p, T, rh) 306s >>> galvez_davison_index(p, T, mixrat, p[0]) 306s 306s """ 306s > if np.any(np.max(pressure, axis=vertical_dim) < 950 * units.hectopascal): 306s E TypeError: no implementation found for 'numpy.max' on types that implement __array_function__: [.Quantity'>] 306s 306s /usr/lib/python3/dist-packages/metpy/calc/thermo.py:4586: TypeError 306s =========================== short test summary info ============================ 306s FAILED tests/calc/test_calc_tools.py::test_get_layer_heights_agl - TypeError:... 306s FAILED tests/calc/test_calc_tools.py::test_get_layer_heights_agl_bottom_no_interp 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction - TypeError: no... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_edge - TypeErro... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_list - TypeErro... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_arr - TypeError... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_full - TypeErro... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_invalid_scalar 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_invalid_arr - T... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_3 - TypeE... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_2 - TypeE... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_level_1 - TypeE... 306s FAILED tests/calc/test_calc_tools.py::test_angle_to_direction_ndarray - TypeE... 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_no_storm_motion 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_storm_motion 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_with_interpolation 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity - TypeErro... 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_agl - Type... 306s FAILED tests/calc/test_kinematics.py::test_storm_relative_helicity_masked - T... 306s FAILED tests/calc/test_thermo.py::test_lfc_ml2 - TypeError: no implementation... 306s FAILED tests/calc/test_thermo.py::test_lfc_and_el_below_lcl - TypeError: no i... 306s FAILED tests/calc/test_thermo.py::test_gdi - TypeError: no implementation fou... 306s FAILED tests/calc/test_thermo.py::test_gdi_xarray - TypeError: no implementat... 306s FAILED tests/calc/test_thermo.py::test_gdi_arrays - TypeError: no implementat... 306s FAILED tests/calc/test_thermo.py::test_gdi_profile - TypeError: no implementa... 306s FAILED tests/calc/test_thermo.py::test_gdi_no_950_raises_valueerror - TypeErr... 306s ========= 26 failed, 935 passed, 25 skipped, 271 deselected in 17.83s ========== 307s lsoda-- at t (=r1), too much accuracy requested for precision of machine.. see tolsf (=r2) in above, r1 = 0.3103761152741D+02 r2 = NaN 307s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.VT1ucx/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 307s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p 3.12 returned exit code 13 307s make: *** [/tmp/ll0R14VDWP/run:4: pybuild-autopkgtest] Error 25 307s pybuild-autopkgtest: error: /tmp/ll0R14VDWP/run pybuild-autopkgtest returned exit code 2 307s autopkgtest [10:26:22]: test pybuild-autopkgtest: -----------------------] 311s pybuild-autopkgtest FAIL non-zero exit status 25 311s autopkgtest [10:26:26]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 315s autopkgtest [10:26:30]: @@@@@@@@@@@@@@@@@@@@ summary 315s pybuild-autopkgtest FAIL non-zero exit status 25