--- /srv/reproducible-results/rbuild-debian/r-b-build.exYTFmoO/b1/python-xarray_2025.03.1-8_armhf.changes
+++ /srv/reproducible-results/rbuild-debian/r-b-build.exYTFmoO/b2/python-xarray_2025.03.1-8_armhf.changes
├── Files
│ @@ -1,3 +1,3 @@
│
│ - 5e9f49da861a2dc6f1b1c3dad029bbe5 4465092 doc optional python-xarray-doc_2025.03.1-8_all.deb
│ + 8fb9bcdaeda9d90b3613bdfd255531c9 4464396 doc optional python-xarray-doc_2025.03.1-8_all.deb
│ 8b79a23e523a680ce4498b5099959c43 820204 python optional python3-xarray_2025.03.1-8_all.deb
├── python-xarray-doc_2025.03.1-8_all.deb
│ ├── file list
│ │ @@ -1,3 +1,3 @@
│ │ -rw-r--r-- 0 0 0 4 2025-05-05 09:04:03.000000 debian-binary
│ │ --rw-r--r-- 0 0 0 7360 2025-05-05 09:04:03.000000 control.tar.xz
│ │ --rw-r--r-- 0 0 0 4457540 2025-05-05 09:04:03.000000 data.tar.xz
│ │ +-rw-r--r-- 0 0 0 7364 2025-05-05 09:04:03.000000 control.tar.xz
│ │ +-rw-r--r-- 0 0 0 4456840 2025-05-05 09:04:03.000000 data.tar.xz
│ ├── control.tar.xz
│ │ ├── control.tar
│ │ │ ├── ./control
│ │ │ │ @@ -1,13 +1,13 @@
│ │ │ │ Package: python-xarray-doc
│ │ │ │ Source: python-xarray
│ │ │ │ Version: 2025.03.1-8
│ │ │ │ Architecture: all
│ │ │ │ Maintainer: Debian Science Maintainers
│ │ │ │ -Installed-Size: 13793
│ │ │ │ +Installed-Size: 13795
│ │ │ │ Depends: libjs-sphinxdoc (>= 8.1), libjs-mathjax, libjs-requirejs
│ │ │ │ Built-Using: alabaster (= 0.7.16-0.1), sphinx (= 8.1.3-5)
│ │ │ │ Section: doc
│ │ │ │ Priority: optional
│ │ │ │ Multi-Arch: foreign
│ │ │ │ Homepage: https://xarray.pydata.org/
│ │ │ │ Description: documentation for xarray
│ │ │ ├── ./md5sums
│ │ │ │ ├── ./md5sums
│ │ │ │ │┄ Files differ
│ ├── data.tar.xz
│ │ ├── data.tar
│ │ │ ├── file list
│ │ │ │ @@ -269,31 +269,31 @@
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 461 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/dask.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 494 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/data-structures.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 8448 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/developers-meeting.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 479 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/duckarrays.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 22909 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/ecosystem.html
│ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 21694 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 1843 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1832 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 38490 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 23783 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23771 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 116838 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 8816 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8801 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 27577 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 21033 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21019 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 11448 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 2375 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 38981 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 3228 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3219 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 30434 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 3234 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3232 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 36876 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 2871 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2857 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 46324 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 3589 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3572 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 491 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/faq.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 15073 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/gallery.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 16306 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/genindex.html
│ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 51674 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/faq.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 7741 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/index.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 25661 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/installing.html
│ │ │ │ @@ -323,15 +323,15 @@
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 473 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/plotting.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 6546 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/py-modindex.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 524 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/quick-overview.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 443 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/related-projects.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 476 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/reshaping.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 24428 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/roadmap.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 6341 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/search.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 254779 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 253687 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 482 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/terminology.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 482 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/time-series.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 13358 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/tutorials-and-videos.html
│ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 58669 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/combining.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 140306 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/computation.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 71357 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/dask.html
│ │ │ │ @@ -344,15 +344,15 @@
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 68746 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 147662 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/io.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 11704 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/options.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 42216 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/pandas.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 135242 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 63000 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 46813 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/terminology.html
│ │ │ │ --rw-r--r-- 0 root (0) root (0) 50371 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/testing.html
│ │ │ │ +-rw-r--r-- 0 root (0) root (0) 53463 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/testing.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 53732 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/time-series.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 47294 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/weather-climate.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 494 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/weather-climate.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 1051854 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/whats-new.html
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 512 2025-05-05 09:04:03.000000 ./usr/share/doc/python-xarray-doc/html/why-xarray.html
│ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-05-05 09:04:03.000000 ./usr/share/doc-base/
│ │ │ │ -rw-r--r-- 0 root (0) root (0) 290 2025-05-05 09:04:03.000000 ./usr/share/doc-base/python-xarray-doc.python-xarray-doc
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz
│ │ │ │ ├── ERA5-GRIB-example.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9985795454545454%
│ │ │ │ │ │┄ Differences: {"'cells'": "{2: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:01:39.439934Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:01:39.438490Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:39.975491Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:39.973428Z'}}}, 4: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:01:40.093910Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:40.092390Z', 'iopub.status.idle': '2025-05-21T15:01:4 […]
│ │ │ │ │ │ @@ -15,18 +15,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:04.661520Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:04.659618Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:06.099712Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:06.093124Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:39.439934Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:39.438490Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:39.975491Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:39.973428Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -51,18 +51,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:06.445570Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:06.441561Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:06.549251Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:06.545391Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:40.093910Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:40.092390Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:40.136209Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:40.134349Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -86,18 +86,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:06.565282Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:06.561456Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:06.665179Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:06.660653Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:40.142706Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:40.141538Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:40.184343Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:40.182485Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -122,18 +122,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:06.679879Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:06.678340Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:07.738716Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:07.734921Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:40.190850Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:40.189433Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:40.593434Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:40.591605Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'plt' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -166,18 +166,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:07.762696Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:07.758907Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:07.868697Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:07.860858Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:40.600289Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:40.598835Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:40.642488Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:40.640764Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz
│ │ │ │ ├── ROMS_ocean_model.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9988051470588235%
│ │ │ │ │ │┄ Differences: {"'cells'": "{2: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:01:44.921880Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:01:44.920399Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:47.660059Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:47.658158Z'}}}, 5: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:01:47.667144Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:47.665636Z', 'iopub.status.idle': '2025-05-21T15:01:4 […]
│ │ │ │ │ │ @@ -17,18 +17,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:19.001062Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:18.999161Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:26.451712Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:26.447900Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:44.921880Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:44.920399Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.660059Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.658158Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -87,18 +87,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:26.465928Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:26.464291Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:26.570856Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:26.567118Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.667144Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.665636Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.711137Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.709248Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -137,18 +137,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:26.584494Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:26.582929Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:26.782281Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:26.778452Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.717918Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.716423Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.792952Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.791235Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -182,18 +182,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:26.795861Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:26.794331Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:26.896815Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:26.893006Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.799764Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.798222Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.843076Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.841332Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "scrolled": false
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ @@ -218,18 +218,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:26.910303Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:26.908661Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:27.027069Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:27.023161Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.849634Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.848167Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.897507Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.895740Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -257,18 +257,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:27.040893Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:27.039337Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:27.143698Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:27.139949Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.904343Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.902862Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:47.946339Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:47.944593Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -292,18 +292,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:27.157322Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:27.155810Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:27.822346Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:27.818121Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:47.953170Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:47.951588Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:48.196034Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:48.193977Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz
│ │ │ │ ├── apply_ufunc_vectorize_1d.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9994283536585367%
│ │ │ │ │ │┄ Differences: {"'cells'": "{2: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:01:52.845932Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:01:52.845261Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:53.386805Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:53.384990Z'}}}, 4: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:01:53.393699Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:01:53.392226Z', 'iopub.status.idle': '2025-05-21T15:01:5 […]
│ │ │ │ │ │ @@ -36,18 +36,18 @@
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:45:51.659160Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:45:50.528742Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:39.509398Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:39.505668Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:40.974048Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:40.970169Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:52.845932Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:52.845261Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.386805Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.384990Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -85,18 +85,18 @@
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:45:55.431708Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:45:55.104701Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:40.987908Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:40.986344Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.088922Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.085248Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.393699Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.392226Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.436835Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.434979Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'np' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -125,18 +125,18 @@
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:45:57.889496Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:45:57.792269Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.102433Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.100809Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.220538Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.216849Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.443672Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.442155Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.492800Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.490946Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'air' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -184,18 +184,18 @@
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:45:59.768626Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:45:59.543808Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.234107Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.232528Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.334371Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.330554Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.499409Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.497949Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.540816Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.538993Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -250,18 +250,18 @@
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:02.187012Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:02.105563Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.348601Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.347069Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.455645Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.451728Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.547587Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.546336Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.591056Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.589205Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -328,18 +328,18 @@
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:05.031672Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:04.947588Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.469922Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.468357Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.579695Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.576015Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.597462Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.596256Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.642704Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.640949Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -374,18 +374,18 @@
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:09.325218Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:09.303020Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.593494Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.591974Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.707471Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.703623Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.649254Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.647884Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.696142Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.694315Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -422,18 +422,18 @@
│ │ │ │ │ │ "execution_count": 8,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:11.295440Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:11.226553Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.721091Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.719581Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.843900Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.839918Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.703282Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.701580Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.753660Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.751627Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -486,18 +486,18 @@
│ │ │ │ │ │ "execution_count": 9,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:13.808646Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:13.680098Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:41.858332Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:41.856727Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:41.995752Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:41.991842Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.760968Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.759613Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.818866Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.817039Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -559,18 +559,18 @@
│ │ │ │ │ │ "execution_count": 10,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:26.633233Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:26.515209Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.009524Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.008021Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.141959Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.138169Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.825476Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.824278Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.879685Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.877736Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -616,18 +616,18 @@
│ │ │ │ │ │ "execution_count": 11,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:46:30.026663Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:46:29.893267Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.155693Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.154164Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.296383Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.292448Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.886701Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.884907Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:53.942486Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:53.940682Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -704,18 +704,18 @@
│ │ │ │ │ │ "execution_count": 12,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:48:42.469341Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:48:42.344209Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.312483Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.309254Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.458005Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.454010Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:53.949194Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:53.947990Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:54.008905Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:54.007190Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -790,18 +790,18 @@
│ │ │ │ │ │ "execution_count": 13,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:48:45.267633Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:48:44.943939Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.472242Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.470730Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.589836Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.585866Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:54.015559Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:54.014309Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:54.063782Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:54.061901Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'numba'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -842,18 +842,18 @@
│ │ │ │ │ │ "execution_count": 14,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:48:54.755405Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:48:54.634724Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.603681Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.602167Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.736346Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.732323Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:54.069695Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:54.069022Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:54.123970Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:54.122091Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -896,18 +896,18 @@
│ │ │ │ │ │ "execution_count": 15,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-15T14:49:28.667528Z",
│ │ │ │ │ │ "start_time": "2020-01-15T14:49:28.103914Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:42.750146Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:42.748573Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:01:42.899908Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:01:42.896134Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:01:54.129871Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:01:54.129209Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:01:54.191683Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:01:54.189840Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'numba'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz
│ │ │ │ ├── area_weighted_temperature.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.99921875%
│ │ │ │ │ │┄ Differences: {"'cells'": "{2: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:00.648621Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:00.647095Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:02.736107Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:02.734022Z'}}}, 4: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:02:02.743086Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:02.741767Z', 'iopub.status.idle': '2025-05-21T15:02:0 […]
│ │ │ │ │ │ @@ -28,18 +28,18 @@
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:43:57.222351Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:43:56.147541Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:01:58.378347Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:01:58.373384Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:03.782538Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:03.778434Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:00.648621Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:00.647095Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:02.736107Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:02.734022Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -75,18 +75,18 @@
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:43:57.831734Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:43:57.651845Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:03.796388Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:03.794787Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:03.905427Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:03.901585Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:02.743086Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:02.741767Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:02.788543Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:02.786526Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -122,18 +122,18 @@
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:43:59.887120Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:43:59.582894Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:03.918976Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:03.917348Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:04.561086Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:04.557024Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:02.795108Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:02.793821Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:03.042355Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:03.040488Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'air' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -178,18 +178,18 @@
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:44:18.777092Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:44:18.736587Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:04.574908Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:04.573224Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:04.683216Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:04.679329Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:03.049428Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:03.047969Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:03.095151Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:03.093249Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'air' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -219,18 +219,18 @@
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:44:52.607120Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:44:52.564674Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:04.696841Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:04.695288Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:04.793860Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:04.790067Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:03.101444Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:03.100267Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:03.143528Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:03.141649Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'air' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -252,18 +252,18 @@
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:44:54.334279Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:44:54.280022Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:04.807361Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:04.805745Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:04.907872Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:04.904062Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:03.150011Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:03.148626Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:03.191250Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:03.189343Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'air_weighted' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -294,18 +294,18 @@
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-03-17T14:45:08.877307Z",
│ │ │ │ │ │ "start_time": "2020-03-17T14:45:08.673383Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:04.921412Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:04.919880Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:05.026646Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:05.022790Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:03.197346Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:03.196232Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:03.241094Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:03.239149Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'weighted_mean' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb
│ │ │ │ ├── Pretty-printed
│ │ │ │ │┄ Similarity: 0.9991319444444444%
│ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:07.861247Z', "
│ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:07.860204Z', 'iopub.status.idle': "
│ │ │ │ │┄ "'2025-05-21T15:02:08.397729Z', 'shell.execute_reply': "
│ │ │ │ │┄ "'2025-05-21T15:02:08.395911Z'}}}}"}
│ │ │ │ │ @@ -12,18 +12,18 @@
│ │ │ │ │ },
│ │ │ │ │ {
│ │ │ │ │ "cell_type": "code",
│ │ │ │ │ "execution_count": 1,
│ │ │ │ │ "id": "41b90ede",
│ │ │ │ │ "metadata": {
│ │ │ │ │ "execution": {
│ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:16.345311Z",
│ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:16.341779Z",
│ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:17.794803Z",
│ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:17.790909Z"
│ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:07.861247Z",
│ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:07.860204Z",
│ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:08.397729Z",
│ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:08.395911Z"
│ │ │ │ │ }
│ │ │ │ │ },
│ │ │ │ │ "outputs": [
│ │ │ │ │ {
│ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz
│ │ │ │ ├── monthly-means.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.998721590909091%
│ │ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:12.077867Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:12.076812Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:14.780949Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:14.778969Z'}}}, 3: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:02:14.787915Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:14.786611Z', 'iopub.status.idle': '2025-05-21T15:02:1 […]
│ │ │ │ │ │ @@ -19,18 +19,18 @@
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:35.958210Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:35.936966Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:27.177933Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:27.175989Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.118865Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.109175Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:12.077867Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:12.076812Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:14.780949Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:14.778969Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -62,18 +62,18 @@
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:36.072316Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:36.016594Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.140966Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.135353Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.258217Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.250433Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:14.787915Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:14.786611Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:14.831427Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:14.829526Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -103,18 +103,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.271994Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.270409Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.378535Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.374796Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:14.837707Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:14.836525Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:14.879153Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:14.877263Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -136,18 +136,18 @@
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:36.132413Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:36.073708Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.391836Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.390269Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.519299Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.515494Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:14.885517Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:14.884136Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:14.933125Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:14.931297Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'month_length' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -177,18 +177,18 @@
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:36.152913Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:36.133997Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.532612Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.531032Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.631310Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.627396Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:14.939778Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:14.938251Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:14.980177Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:14.978303Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds_weighted' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -209,18 +209,18 @@
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:36.190765Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:36.154416Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.644650Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.643085Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.755688Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.751872Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:14.986615Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:14.985250Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:15.028558Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:15.026723Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -243,18 +243,18 @@
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:40.264871Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:36.192467Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.769082Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.767527Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:34.977384Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:34.973476Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:15.035252Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:15.033785Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:15.132946Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:15.131085Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds_unweighted' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -323,18 +323,18 @@
│ │ │ │ │ │ "execution_count": 8,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:51:40.284898Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:51:40.266406Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:34.992032Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:34.989231Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:35.020657Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:35.016906Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:15.139797Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:15.138292Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:15.149081Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:15.147332Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [],
│ │ │ │ │ │ "source": [
│ │ │ │ │ │ "# Wrap it into a simple function\n",
│ │ │ │ │ │ "def season_mean(ds, calendar=\"standard\"):\n",
│ │ │ │ │ │ " # Make a DataArray with the number of days in each month, size = len(time)\n",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz
│ │ │ │ ├── multidimensional-coords.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9992708333333333%
│ │ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:19.476823Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:19.475278Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:22.195270Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:22.193346Z'}}}, 3: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:02:22.202268Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:22.200829Z', 'iopub.status.idle': '2025-05-21T15:02:2 […]
│ │ │ │ │ │ @@ -16,18 +16,18 @@
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:49:56.068395Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:49:56.035349Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:46.706673Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:46.704698Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.112432Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.107869Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:19.476823Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:19.475278Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.195270Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.193346Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -60,18 +60,18 @@
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:13.629720Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:13.484542Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.135344Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.133426Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.244561Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.238085Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.202268Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.200829Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.245805Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.244040Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -100,18 +100,18 @@
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:15.836061Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:15.768376Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.260650Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.258972Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.370805Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.366502Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.252195Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.250933Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.294830Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.293050Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -142,18 +142,18 @@
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:17.928556Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:17.031211Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.385696Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.384059Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.504692Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.500112Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.301330Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.299953Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.346029Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.344252Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'plt' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -185,18 +185,18 @@
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:20.567749Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:19.999393Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.522956Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.521190Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.643684Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.638363Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.352587Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.351186Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.394027Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.392278Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -224,18 +224,18 @@
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:31.131708Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:30.444697Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.667744Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.665439Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:54.809555Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.805083Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.400618Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.399213Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.450175Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.448427Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'plt' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -272,18 +272,18 @@
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2018-11-28T20:50:43.670463Z",
│ │ │ │ │ │ "start_time": "2018-11-28T20:50:43.245501Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:02:54.831350Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:02:54.826343Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:02:55.000821Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:02:54.993809Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:22.456556Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:22.455400Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:22.504104Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:22.502244Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz
│ │ │ │ ├── visualization_gallery.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9984375%
│ │ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:27.141039Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:27.140365Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:29.214387Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:29.212535Z'}}}, 3: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:02:29.221227Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:29.219981Z', 'iopub.status.idle': '2025-05-21T15:02:2 […]
│ │ │ │ │ │ @@ -10,18 +10,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:07.426386Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:07.424662Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:12.980039Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:12.976208Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:27.141039Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:27.140365Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.214387Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.212535Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -49,18 +49,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:13.001514Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:12.999908Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:13.111537Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:13.104375Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:29.221227Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:29.219981Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.264686Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.262824Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'xr' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -91,18 +91,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:13.126675Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:13.124691Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:13.260703Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:13.256889Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:29.271405Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:29.270113Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.325608Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.323840Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -144,18 +144,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:13.274545Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:13.272886Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:13.434800Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:13.431037Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:29.331968Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:29.330677Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.393411Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.391605Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -208,18 +208,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:13.448618Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:13.447071Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:13.642707Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:13.638763Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:29.400066Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:29.398397Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.473622Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.471857Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -264,18 +264,18 @@
│ │ │ │ │ │ ]
│ │ │ │ │ │ },
│ │ │ │ │ │ {
│ │ │ │ │ │ "cell_type": "code",
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:13.656406Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:13.654856Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:13.787950Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:13.784050Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:29.480169Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:29.478874Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:29.534056Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:29.532320Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz
│ │ │ │ ├── weather-data.ipynb
│ │ │ │ │ ├── Pretty-printed
│ │ │ │ │ │┄ Similarity: 0.9992476851851853%
│ │ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-05-21T15:02:33.940488Z', "
│ │ │ │ │ │┄ "'iopub.status.busy': '2025-05-21T15:02:33.939064Z', 'iopub.status.idle': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:38.019414Z', 'shell.execute_reply': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:38.017338Z'}}}, 4: {'metadata': {'execution': "
│ │ │ │ │ │┄ "{'iopub.execute_input': '2025-05-21T15:02:38.026605Z', 'iopub.status.busy': "
│ │ │ │ │ │┄ "'2025-05-21T15:02:38.025116Z', 'iopub.status.idle': '2025-05-21T15:02:3 […]
│ │ │ │ │ │ @@ -15,18 +15,18 @@
│ │ │ │ │ │ "execution_count": 1,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:43:36.127628Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:43:36.081733Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:24.870798Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:24.867267Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:35.534303Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:35.530198Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:33.940488Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:33.939064Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.019414Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.017338Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "ModuleNotFoundError",
│ │ │ │ │ │ "evalue": "No module named 'xarray'",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -86,18 +86,18 @@
│ │ │ │ │ │ "execution_count": 2,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:47:14.160297Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:47:14.126738Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:35.548595Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:35.547001Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:35.653696Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:35.649959Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.026605Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.025116Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.070380Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.068541Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -119,18 +119,18 @@
│ │ │ │ │ │ "execution_count": 3,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:47:32.682065Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:47:32.652629Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:35.667409Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:35.665776Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:35.767657Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:35.763814Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.076752Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.075390Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.118335Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.116556Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'df' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -158,18 +158,18 @@
│ │ │ │ │ │ "execution_count": 4,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:47:34.617042Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:47:34.282605Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:35.781185Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:35.779642Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:35.886513Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:35.882733Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.124681Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.123286Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.167643Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.165782Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -197,18 +197,18 @@
│ │ │ │ │ │ "execution_count": 5,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:47:37.643175Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:47:37.202479Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:35.900052Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:35.898509Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.010625Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.006824Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.173942Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.172778Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.216436Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.214438Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'df' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -236,18 +236,18 @@
│ │ │ │ │ │ "execution_count": 6,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:48:11.241224Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:48:11.211156Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.024259Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.022710Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.132071Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.128211Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.223257Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.221593Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.266827Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.265068Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -269,18 +269,18 @@
│ │ │ │ │ │ "execution_count": 7,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:48:13.131247Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:48:12.924985Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.145246Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.143726Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.245758Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.242024Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.272983Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.271777Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.314200Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.312293Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'freeze' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -308,18 +308,18 @@
│ │ │ │ │ │ "execution_count": 8,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:48:08.498259Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:48:08.210890Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.259330Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.257741Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.369606Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.365806Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.320784Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.319413Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.365911Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.363987Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -364,18 +364,18 @@
│ │ │ │ │ │ "execution_count": 9,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:49:34.855086Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:49:34.406439Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.383753Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.382222Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.495733Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.491900Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.372578Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.371437Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.419263Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.417363Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -414,18 +414,18 @@
│ │ │ │ │ │ "execution_count": 10,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:50:09.144586Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:50:08.734682Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.509608Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.508104Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.693424Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.689517Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.426178Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.424662Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.495265Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.493332Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -474,18 +474,18 @@
│ │ │ │ │ │ "execution_count": 11,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:51:40.279299Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:51:40.220342Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.707242Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.705648Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.823865Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.820045Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.501905Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.500539Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.549927Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.548103Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'ds' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -510,18 +510,18 @@
│ │ │ │ │ │ "execution_count": 12,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:52:11.815769Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:52:11.770825Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.836977Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.835468Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:36.948837Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:36.945139Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.555724Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.554993Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.602108Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.600374Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'both' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ │ │ │ @@ -543,18 +543,18 @@
│ │ │ │ │ │ "execution_count": 13,
│ │ │ │ │ │ "metadata": {
│ │ │ │ │ │ "ExecuteTime": {
│ │ │ │ │ │ "end_time": "2020-01-27T15:52:14.867866Z",
│ │ │ │ │ │ "start_time": "2020-01-27T15:52:14.449684Z"
│ │ │ │ │ │ },
│ │ │ │ │ │ "execution": {
│ │ │ │ │ │ - "iopub.execute_input": "2025-05-21T13:03:36.961705Z",
│ │ │ │ │ │ - "iopub.status.busy": "2025-05-21T13:03:36.960197Z",
│ │ │ │ │ │ - "iopub.status.idle": "2025-05-21T13:03:37.064804Z",
│ │ │ │ │ │ - "shell.execute_reply": "2025-05-21T13:03:37.060995Z"
│ │ │ │ │ │ + "iopub.execute_input": "2025-05-21T15:02:38.607704Z",
│ │ │ │ │ │ + "iopub.status.busy": "2025-05-21T15:02:38.606974Z",
│ │ │ │ │ │ + "iopub.status.idle": "2025-05-21T15:02:38.650142Z",
│ │ │ │ │ │ + "shell.execute_reply": "2025-05-21T15:02:38.648389Z"
│ │ │ │ │ │ }
│ │ │ │ │ │ },
│ │ │ │ │ │ "outputs": [
│ │ │ │ │ │ {
│ │ │ │ │ │ "ename": "NameError",
│ │ │ │ │ │ "evalue": "name 'df' is not defined",
│ │ │ │ │ │ "output_type": "error",
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/getting-started-guide/quick-overview.html
│ │ │ │ @@ -324,15 +324,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Plotting
│ │ │ │ Visualizing your datasets is quick and convenient:
│ │ │ │ In [37]: data.plot()
│ │ │ │ -Out[37]: <matplotlib.collections.QuadMesh at 0xa86990e8>
│ │ │ │ +Out[37]: <matplotlib.collections.QuadMesh at 0xe93860e8>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Note the automatic labeling with names and units. Our effort in adding metadata attributes has paid off! Many aspects of these figures are customizable: see Plotting.
│ │ │ │
│ │ │ │
│ │ │ │ pandas
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -253,15 +253,15 @@
│ │ │ │ │ [0.37342613, 1.49497537, 1.33584385]])
│ │ │ │ │ Coordinates:
│ │ │ │ │ * x (x) int32 8B 10 20
│ │ │ │ │ Dimensions without coordinates: y
│ │ │ │ │ ********** PPlloottttiinngg_?¶ **********
│ │ │ │ │ Visualizing your datasets is quick and convenient:
│ │ │ │ │ In [37]: data.plot()
│ │ │ │ │ -Out[37]:
│ │ │ │ │ +Out[37]:
│ │ │ │ │ [../_images/plotting_quick_overview.png]
│ │ │ │ │ Note the automatic labeling with names and units. Our effort in adding metadata
│ │ │ │ │ attributes has paid off! Many aspects of these figures are customizable: see
│ │ │ │ │ _P_l_o_t_t_i_n_g.
│ │ │ │ │ ********** ppaannddaass_?¶ **********
│ │ │ │ │ Xarray objects can be easily converted to and from pandas objects using the
│ │ │ │ │ to_series(), to_dataframe() and _t_o___x_a_r_r_a_y_(_) methods:
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/internals/internal-design.html
│ │ │ │ @@ -225,15 +225,15 @@
│ │ │ │ 705 server_hostname: str = self.host
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in HTTPConnection._new_conn(self)
│ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ 206 except SocketTimeout as e:
│ │ │ │
│ │ │ │ -NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xa69e5c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │ +NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xe76d4c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │
│ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │
│ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
│ │ │ │ 666 try:
│ │ │ │ --> 667 resp = conn.urlopen(
│ │ │ │ @@ -259,15 +259,15 @@
│ │ │ │ 844 retries.sleep()
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/util/retry.py:519, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
│ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
│ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │
│ │ │ │ -MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa69e5c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe76d4c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │
│ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ Cell In[1], line 1
│ │ │ │ ----> 1 da = xr.tutorial.open_dataset("air_temperature")["air"]
│ │ │ │
│ │ │ │ @@ -345,15 +345,15 @@
│ │ │ │ 696 if isinstance(e.reason, _SSLError):
│ │ │ │ 697 # This branch is for urllib3 v1.22 and later.
│ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa69e5c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe76d4c90>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ In [2]: var = da.variable
│ │ │ │ ---------------------------------------------------------------------------
│ │ │ │ AttributeError Traceback (most recent call last)
│ │ │ │ Cell In[2], line 1
│ │ │ │ ----> 1 var = da.variable
│ │ │ │
│ │ │ │ @@ -462,15 +462,15 @@
│ │ │ │ 705 server_hostname: str = self.host
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in HTTPConnection._new_conn(self)
│ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ 206 except SocketTimeout as e:
│ │ │ │
│ │ │ │ -NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xa67f1be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │ +NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xe74e0be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │
│ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │
│ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
│ │ │ │ 666 try:
│ │ │ │ --> 667 resp = conn.urlopen(
│ │ │ │ @@ -496,15 +496,15 @@
│ │ │ │ 844 retries.sleep()
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/util/retry.py:519, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
│ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
│ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │
│ │ │ │ -MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa67f1be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe74e0be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │
│ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ Cell In[7], line 1
│ │ │ │ ----> 1 da = xr.tutorial.open_dataset("air_temperature")["air"]
│ │ │ │
│ │ │ │ @@ -582,15 +582,15 @@
│ │ │ │ 696 if isinstance(e.reason, _SSLError):
│ │ │ │ 697 # This branch is for urllib3 v1.22 and later.
│ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa67f1be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe74e0be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ In [8]: var = da.variable
│ │ │ │ ---------------------------------------------------------------------------
│ │ │ │ AttributeError Traceback (most recent call last)
│ │ │ │ Cell In[8], line 1
│ │ │ │ ----> 1 var = da.variable
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -184,15 +184,15 @@
│ │ │ │ │
│ │ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in
│ │ │ │ │ HTTPConnection._new_conn(self)
│ │ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ │ 206 except SocketTimeout as e:
│ │ │ │ │
│ │ │ │ │ -NameResolutionError: :
│ │ │ │ │ +NameResolutionError: :
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)
│ │ │ │ │
│ │ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │ │
│ │ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in
│ │ │ │ │ @@ -228,15 +228,15 @@
│ │ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore
│ │ │ │ │ [arg-type]
│ │ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │ │
│ │ │ │ │ MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │ │
│ │ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ │ Cell In[1], line 1
│ │ │ │ │ @@ -332,15 +332,15 @@
│ │ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │ │
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ In [2]: var = da.variable
│ │ │ │ │ ---------------------------------------------------------------------------
│ │ │ │ │ AttributeError Traceback (most recent call last)
│ │ │ │ │ Cell In[2], line 1
│ │ │ │ │ @@ -459,15 +459,15 @@
│ │ │ │ │
│ │ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in
│ │ │ │ │ HTTPConnection._new_conn(self)
│ │ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ │ 206 except SocketTimeout as e:
│ │ │ │ │
│ │ │ │ │ -NameResolutionError: :
│ │ │ │ │ +NameResolutionError: :
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)
│ │ │ │ │
│ │ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │ │
│ │ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in
│ │ │ │ │ @@ -503,15 +503,15 @@
│ │ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore
│ │ │ │ │ [arg-type]
│ │ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │ │
│ │ │ │ │ MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │ │
│ │ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ │ Cell In[7], line 1
│ │ │ │ │ @@ -607,15 +607,15 @@
│ │ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │ │
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ In [8]: var = da.variable
│ │ │ │ │ ---------------------------------------------------------------------------
│ │ │ │ │ AttributeError Traceback (most recent call last)
│ │ │ │ │ Cell In[8], line 1
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html
│ │ │ │ @@ -167,15 +167,15 @@
│ │ │ │ 705 server_hostname: str = self.host
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in HTTPConnection._new_conn(self)
│ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ 206 except SocketTimeout as e:
│ │ │ │
│ │ │ │ -NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xa5870190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │ +NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xe6563190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)
│ │ │ │
│ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │
│ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
│ │ │ │ 666 try:
│ │ │ │ --> 667 resp = conn.urlopen(
│ │ │ │ @@ -201,15 +201,15 @@
│ │ │ │ 844 retries.sleep()
│ │ │ │
│ │ │ │ File /usr/lib/python3/dist-packages/urllib3/util/retry.py:519, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
│ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
│ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │
│ │ │ │ -MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa5870190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe6563190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │
│ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ Cell In[4], line 1
│ │ │ │ ----> 1 ds = xr.tutorial.load_dataset("rasm")
│ │ │ │
│ │ │ │ @@ -298,18 +298,18 @@
│ │ │ │ 696 if isinstance(e.reason, _SSLError):
│ │ │ │ 697 # This branch is for urllib3 v1.22 and later.
│ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa5870190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe6563190>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │ In [5]: ds.to_zarr("rasm.zarr", mode="w")
│ │ │ │ -Out[5]: <xarray.backends.zarr.ZarrStore at 0xa86936e8>
│ │ │ │ +Out[5]: <xarray.backends.zarr.ZarrStore at 0xe937d6e8>
│ │ │ │
│ │ │ │ In [6]: zgroup = zarr.open("rasm.zarr")
│ │ │ │
│ │ │ │ In [7]: print(os.listdir("rasm.zarr"))
│ │ │ │ ['time', 'zarr.json']
│ │ │ │
│ │ │ │ In [8]: print(zgroup.tree())
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -123,15 +123,15 @@
│ │ │ │ │
│ │ │ │ │ File /usr/lib/python3/dist-packages/urllib3/connection.py:205, in
│ │ │ │ │ HTTPConnection._new_conn(self)
│ │ │ │ │ 204 except socket.gaierror as e:
│ │ │ │ │ --> 205 raise NameResolutionError(self.host, self, e) from e
│ │ │ │ │ 206 except SocketTimeout as e:
│ │ │ │ │
│ │ │ │ │ -NameResolutionError: :
│ │ │ │ │ +NameResolutionError: :
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)
│ │ │ │ │
│ │ │ │ │ The above exception was the direct cause of the following exception:
│ │ │ │ │
│ │ │ │ │ MaxRetryError Traceback (most recent call last)
│ │ │ │ │ File /usr/lib/python3/dist-packages/requests/adapters.py:667, in
│ │ │ │ │ @@ -167,15 +167,15 @@
│ │ │ │ │ 518 reason = error or ResponseError(cause)
│ │ │ │ │ --> 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore
│ │ │ │ │ [arg-type]
│ │ │ │ │ 521 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry)
│ │ │ │ │
│ │ │ │ │ MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ During handling of the above exception, another exception occurred:
│ │ │ │ │
│ │ │ │ │ ConnectionError Traceback (most recent call last)
│ │ │ │ │ Cell In[4], line 1
│ │ │ │ │ @@ -284,20 +284,20 @@
│ │ │ │ │ 698 raise SSLError(e, request=request)
│ │ │ │ │ --> 700 raise ConnectionError(e, request=request)
│ │ │ │ │ 702 except ClosedPoolError as e:
│ │ │ │ │ 703 raise ConnectionError(e, request=request)
│ │ │ │ │
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │ In [5]: ds.to_zarr("rasm.zarr", mode="w")
│ │ │ │ │ -Out[5]:
│ │ │ │ │ +Out[5]:
│ │ │ │ │
│ │ │ │ │ In [6]: zgroup = zarr.open("rasm.zarr")
│ │ │ │ │
│ │ │ │ │ In [7]: print(os.listdir("rasm.zarr"))
│ │ │ │ │ ['time', 'zarr.json']
│ │ │ │ │
│ │ │ │ │ In [8]: print(zgroup.tree())
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/searchindex.js
│ │ │ │ ├── js-beautify {}
│ │ │ │ │ @@ -2436,54 +2436,53 @@
│ │ │ │ │ "00010301": 54,
│ │ │ │ │ "0002": [32, 54],
│ │ │ │ │ "00021001": 54,
│ │ │ │ │ "00021101": 54,
│ │ │ │ │ "00021201": 54,
│ │ │ │ │ "000e": [49, 52],
│ │ │ │ │ "000j": 52,
│ │ │ │ │ - "001": [32, 52],
│ │ │ │ │ + "001": 32,
│ │ │ │ │ "001901901": 32,
│ │ │ │ │ "001e": 38,
│ │ │ │ │ "001j": 52,
│ │ │ │ │ "003000": 32,
│ │ │ │ │ - "005": 52,
│ │ │ │ │ "005036": 41,
│ │ │ │ │ "005e": 38,
│ │ │ │ │ + "005j": 52,
│ │ │ │ │ "00688889": 37,
│ │ │ │ │ "006e": 38,
│ │ │ │ │ "007": 52,
│ │ │ │ │ "007e": 52,
│ │ │ │ │ "00914929": 37,
│ │ │ │ │ "00941742": 37,
│ │ │ │ │ "00968205": 37,
│ │ │ │ │ "00973567": 37,
│ │ │ │ │ + "00j": 52,
│ │ │ │ │ "01": [14, 16, 20, 32, 38, 39, 42, 44, 45, 46, 48, 49, 53, 54],
│ │ │ │ │ "01082401": 37,
│ │ │ │ │ "01183847": 37,
│ │ │ │ │ - "012": 52,
│ │ │ │ │ - "015": 52,
│ │ │ │ │ "016": 52,
│ │ │ │ │ "01636376": 37,
│ │ │ │ │ "01652688": 37,
│ │ │ │ │ "01652764": 37,
│ │ │ │ │ "0165891": 37,
│ │ │ │ │ "01670071": 37,
│ │ │ │ │ "01670121": 37,
│ │ │ │ │ "01671269": 37,
│ │ │ │ │ "01671847": 37,
│ │ │ │ │ "01672": 37,
│ │ │ │ │ - "016j": 52,
│ │ │ │ │ "017": 44,
│ │ │ │ │ "01806694": 37,
│ │ │ │ │ "01814439": 37,
│ │ │ │ │ "0182217": 37,
│ │ │ │ │ "018e": 38,
│ │ │ │ │ "019": 41,
│ │ │ │ │ "01906": 49,
│ │ │ │ │ "019e": 38,
│ │ │ │ │ + "01j": 52,
│ │ │ │ │ "01t00": [32, 38, 39, 53, 55],
│ │ │ │ │ "01t01": 32,
│ │ │ │ │ "01t03": [32, 53],
│ │ │ │ │ "01t04": 32,
│ │ │ │ │ "01t06": 32,
│ │ │ │ │ "01t12": [32, 53],
│ │ │ │ │ "01t18": 32,
│ │ │ │ │ @@ -2491,14 +2490,15 @@
│ │ │ │ │ "020e": 38,
│ │ │ │ │ "021e": [38, 46],
│ │ │ │ │ "023e": 38,
│ │ │ │ │ "024e": [38, 46],
│ │ │ │ │ "026e": 38,
│ │ │ │ │ "02756784": 19,
│ │ │ │ │ "029e": 49,
│ │ │ │ │ + "02j": 52,
│ │ │ │ │ "02t00": [32, 38, 39],
│ │ │ │ │ "03": [6, 26, 30, 32, 33, 38, 44, 45, 46, 49, 53, 54],
│ │ │ │ │ "03047": 49,
│ │ │ │ │ "031": 42,
│ │ │ │ │ "03333": 45,
│ │ │ │ │ "03343807": 37,
│ │ │ │ │ "03343845": 37,
│ │ │ │ │ @@ -2507,71 +2507,74 @@
│ │ │ │ │ "035e": 38,
│ │ │ │ │ "03611368": 37,
│ │ │ │ │ "03626848": 37,
│ │ │ │ │ "03642301": 37,
│ │ │ │ │ "036e": 49,
│ │ │ │ │ "0379266750948": 46,
│ │ │ │ │ "037e": 38,
│ │ │ │ │ - "038": [44, 52],
│ │ │ │ │ + "038": 44,
│ │ │ │ │ "03835": 42,
│ │ │ │ │ "038j": 52,
│ │ │ │ │ "03957499": 19,
│ │ │ │ │ "03t00": [32, 38, 39],
│ │ │ │ │ "04": [19, 32, 37, 38, 39, 42, 44, 48, 53],
│ │ │ │ │ "04096206": 37,
│ │ │ │ │ "04097352": 37,
│ │ │ │ │ "040e": 49,
│ │ │ │ │ "0417827": 46,
│ │ │ │ │ "042e": 38,
│ │ │ │ │ "044": [36, 48],
│ │ │ │ │ "04423597": 19,
│ │ │ │ │ "044236": 48,
│ │ │ │ │ + "044e": 52,
│ │ │ │ │ "04569531": 37,
│ │ │ │ │ "04703446": 37,
│ │ │ │ │ "047e": [38, 49],
│ │ │ │ │ "04835611": 37,
│ │ │ │ │ "04862391": 37,
│ │ │ │ │ - "048e": 38,
│ │ │ │ │ + "048e": [38, 52],
│ │ │ │ │ "04t00": [38, 39],
│ │ │ │ │ "05": [32, 37, 39, 46, 49, 52, 53, 54],
│ │ │ │ │ + "053e": 52,
│ │ │ │ │ "05405954": 37,
│ │ │ │ │ "05556": 45,
│ │ │ │ │ "056": 45,
│ │ │ │ │ "057e": 38,
│ │ │ │ │ - "058e": [38, 52],
│ │ │ │ │ + "058e": 38,
│ │ │ │ │ "05912615": 37,
│ │ │ │ │ "05j": 52,
│ │ │ │ │ "05t00": 38,
│ │ │ │ │ "06": [28, 32, 37, 39, 46, 53],
│ │ │ │ │ - "060": 52,
│ │ │ │ │ + "060e": 52,
│ │ │ │ │ "061": 44,
│ │ │ │ │ "06141": 42,
│ │ │ │ │ "062": 42,
│ │ │ │ │ "063": 39,
│ │ │ │ │ "06683875": 37,
│ │ │ │ │ "06683951": 37,
│ │ │ │ │ "06683976": 37,
│ │ │ │ │ "06689": 37,
│ │ │ │ │ "066e": [38, 49],
│ │ │ │ │ + "066j": 52,
│ │ │ │ │ "06732": 42,
│ │ │ │ │ "067e": 49,
│ │ │ │ │ "069": 45,
│ │ │ │ │ "06957": 41,
│ │ │ │ │ "06t00": 38,
│ │ │ │ │ "07": [32, 39, 52, 53, 54],
│ │ │ │ │ "070e": 38,
│ │ │ │ │ "07180381": 19,
│ │ │ │ │ "071804": 48,
│ │ │ │ │ "072": 48,
│ │ │ │ │ "072e": 49,
│ │ │ │ │ - "073e": 52,
│ │ │ │ │ "074e": 38,
│ │ │ │ │ "078": 42,
│ │ │ │ │ + "07j": 52,
│ │ │ │ │ "07t00": 38,
│ │ │ │ │ - "08": [32, 39, 53],
│ │ │ │ │ + "08": [32, 39, 52, 53],
│ │ │ │ │ "08002": 41,
│ │ │ │ │ "08172729": 37,
│ │ │ │ │ "08203696": 37,
│ │ │ │ │ "08285275": 37,
│ │ │ │ │ "08299933": 37,
│ │ │ │ │ "08305695": 37,
│ │ │ │ │ "08341016": 37,
│ │ │ │ │ @@ -2601,89 +2604,90 @@
│ │ │ │ │ "099": 42,
│ │ │ │ │ "09t00": 38,
│ │ │ │ │ "0alpha10": 55,
│ │ │ │ │ "0d": 55,
│ │ │ │ │ "0dev": 55,
│ │ │ │ │ "0th": [38, 44],
│ │ │ │ │ "0x0l": 55,
│ │ │ │ │ - "0xa0d4f030": 49,
│ │ │ │ │ - "0xa0d4fbe0": 49,
│ │ │ │ │ - "0xa0d4fc90": 49,
│ │ │ │ │ - "0xa0d4fd40": 49,
│ │ │ │ │ - "0xa0d64d40": 49,
│ │ │ │ │ - "0xa0db2030": 49,
│ │ │ │ │ - "0xa0e03d40": 49,
│ │ │ │ │ - "0xa0e03df0": 49,
│ │ │ │ │ - "0xa0e03ea0": 49,
│ │ │ │ │ - "0xa0e03f50": 49,
│ │ │ │ │ - "0xa0e11870": 49,
│ │ │ │ │ - "0xa0e11920": 49,
│ │ │ │ │ - "0xa0e119d0": 49,
│ │ │ │ │ - "0xa0e19d40": 50,
│ │ │ │ │ - "0xa0f04870": 49,
│ │ │ │ │ - "0xa0f04920": 49,
│ │ │ │ │ - "0xa0f049d0": 49,
│ │ │ │ │ - "0xa0f04a80": 49,
│ │ │ │ │ - "0xa0f04df0": 49,
│ │ │ │ │ - "0xa11165b0": 49,
│ │ │ │ │ - "0xa1671660": 49,
│ │ │ │ │ - "0xa1799be0": 49,
│ │ │ │ │ - "0xa17ad500": 49,
│ │ │ │ │ - "0xa185e9d0": 49,
│ │ │ │ │ - "0xa18ddc90": 49,
│ │ │ │ │ - "0xa1bdc190": 49,
│ │ │ │ │ - "0xa1c79ea0": 49,
│ │ │ │ │ - "0xa1cdf500": 49,
│ │ │ │ │ - "0xa1d25240": 49,
│ │ │ │ │ - "0xa1eb6710": 49,
│ │ │ │ │ - "0xa1ec4500": 49,
│ │ │ │ │ - "0xa2087710": 49,
│ │ │ │ │ - "0xa21fe2f0": 49,
│ │ │ │ │ - "0xa22980e0": 49,
│ │ │ │ │ - "0xa3869f58": 46,
│ │ │ │ │ - "0xa3879580": 46,
│ │ │ │ │ - "0xa3885dd8": 49,
│ │ │ │ │ - "0xa38988b8": 49,
│ │ │ │ │ - "0xa3a383a0": 39,
│ │ │ │ │ - "0xa3a38450": 39,
│ │ │ │ │ - "0xa3bc5030": 46,
│ │ │ │ │ - "0xa3c552f8": 46,
│ │ │ │ │ - "0xa3c5bad8": 46,
│ │ │ │ │ - "0xa3c8cf50": 46,
│ │ │ │ │ - "0xa3e7cb30": 55,
│ │ │ │ │ - "0xa3ea9618": 49,
│ │ │ │ │ - "0xa419a538": 49,
│ │ │ │ │ - "0xa419a760": 49,
│ │ │ │ │ - "0xa41c3d60": 46,
│ │ │ │ │ - "0xa41dc1d8": 46,
│ │ │ │ │ - "0xa41fa9d0": 44,
│ │ │ │ │ - "0xa41faea0": 44,
│ │ │ │ │ - "0xa426a710": 44,
│ │ │ │ │ - "0xa426abe0": 42,
│ │ │ │ │ - "0xa5870190": 33,
│ │ │ │ │ - "0xa67f1be0": 30,
│ │ │ │ │ - "0xa69e5c90": 30,
│ │ │ │ │ - "0xa85e6bb0": 46,
│ │ │ │ │ - "0xa8687480": 49,
│ │ │ │ │ - "0xa8687f48": 49,
│ │ │ │ │ - "0xa86936e8": 33,
│ │ │ │ │ - "0xa8696920": 45,
│ │ │ │ │ - "0xa86990e8": 19,
│ │ │ │ │ - "0xa8699258": 45,
│ │ │ │ │ - "0xa86bdb30": 45,
│ │ │ │ │ - "0xa86bdbe0": 45,
│ │ │ │ │ - "0xa86bdc90": 45,
│ │ │ │ │ + "0xe19efd40": 49,
│ │ │ │ │ + "0xe1a34f50": 50,
│ │ │ │ │ + "0xe1a60030": 49,
│ │ │ │ │ + "0xe1a60be0": 49,
│ │ │ │ │ + "0xe1a60c90": 49,
│ │ │ │ │ + "0xe1a60d40": 49,
│ │ │ │ │ + "0xe1aee870": 49,
│ │ │ │ │ + "0xe1aee920": 49,
│ │ │ │ │ + "0xe1aee9d0": 49,
│ │ │ │ │ + "0xe1b10030": 49,
│ │ │ │ │ + "0xe1b20030": 49,
│ │ │ │ │ + "0xe1b200e0": 49,
│ │ │ │ │ + "0xe1b20190": 49,
│ │ │ │ │ + "0xe1b20240": 49,
│ │ │ │ │ + "0xe1bf6870": 49,
│ │ │ │ │ + "0xe1bf6920": 49,
│ │ │ │ │ + "0xe1bf69d0": 49,
│ │ │ │ │ + "0xe1bf6a80": 49,
│ │ │ │ │ + "0xe1bf6df0": 49,
│ │ │ │ │ + "0xe1e095b0": 49,
│ │ │ │ │ + "0xe2360660": 49,
│ │ │ │ │ + "0xe248abe0": 49,
│ │ │ │ │ + "0xe249d500": 49,
│ │ │ │ │ + "0xe254d9d0": 49,
│ │ │ │ │ + "0xe25cec90": 49,
│ │ │ │ │ + "0xe28ca190": 49,
│ │ │ │ │ + "0xe2969ea0": 49,
│ │ │ │ │ + "0xe29cf500": 49,
│ │ │ │ │ + "0xe2a10030": 49,
│ │ │ │ │ + "0xe2ba6710": 49,
│ │ │ │ │ + "0xe2bb6500": 49,
│ │ │ │ │ + "0xe2d78710": 49,
│ │ │ │ │ + "0xe2ee5b30": 55,
│ │ │ │ │ + "0xe2eed2f0": 49,
│ │ │ │ │ + "0xe2f870e0": 49,
│ │ │ │ │ + "0xe455af10": 46,
│ │ │ │ │ + "0xe4574dd8": 49,
│ │ │ │ │ + "0xe45858b8": 49,
│ │ │ │ │ + "0xe45a2418": 46,
│ │ │ │ │ + "0xe47263a0": 39,
│ │ │ │ │ + "0xe4726450": 39,
│ │ │ │ │ + "0xe48b6030": 46,
│ │ │ │ │ + "0xe49462f8": 46,
│ │ │ │ │ + "0xe4946c88": 46,
│ │ │ │ │ + "0xe497ef50": 46,
│ │ │ │ │ + "0xe4d7d618": 49,
│ │ │ │ │ + "0xe4e8d538": 49,
│ │ │ │ │ + "0xe4e8d760": 49,
│ │ │ │ │ + "0xe4ecc388": 46,
│ │ │ │ │ + "0xe4ee99d0": 44,
│ │ │ │ │ + "0xe4ee9ea0": 44,
│ │ │ │ │ + "0xe4f44ec8": 46,
│ │ │ │ │ + "0xe4f51710": 44,
│ │ │ │ │ + "0xe4f51be0": 42,
│ │ │ │ │ + "0xe6563190": 33,
│ │ │ │ │ + "0xe74e0be0": 30,
│ │ │ │ │ + "0xe76d4c90": 30,
│ │ │ │ │ + "0xe9376480": 49,
│ │ │ │ │ + "0xe9376f48": 49,
│ │ │ │ │ + "0xe937d6e8": 33,
│ │ │ │ │ + "0xe9384920": 45,
│ │ │ │ │ + "0xe93860e8": 19,
│ │ │ │ │ + "0xe9386258": 45,
│ │ │ │ │ + "0xe93acb30": 45,
│ │ │ │ │ + "0xe93acbe0": 45,
│ │ │ │ │ + "0xe93acc90": 45,
│ │ │ │ │ + "0xe93b93d0": 46,
│ │ │ │ │ "1": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "10": [3, 6, 7, 8, 12, 13, 14, 16, 18, 19, 24, 25, 26, 27, 28, 30, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "100": [3, 7, 8, 27, 28, 32, 36, 37, 38, 39, 42, 44, 45, 46, 49, 50, 51, 55],
│ │ │ │ │ "1000": [27, 32, 38, 55],
│ │ │ │ │ "10000": [32, 37],
│ │ │ │ │ "100000": 38,
│ │ │ │ │ "1000x1000": 38,
│ │ │ │ │ "1003": 37,
│ │ │ │ │ + "100e": 52,
│ │ │ │ │ "101": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "1016": 30,
│ │ │ │ │ "1017": 30,
│ │ │ │ │ "1018": 30,
│ │ │ │ │ "101985": 46,
│ │ │ │ │ "101e": 38,
│ │ │ │ │ "102": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ @@ -2699,15 +2703,14 @@
│ │ │ │ │ "104e": 52,
│ │ │ │ │ "105": [32, 36, 37, 39, 42, 44, 48, 49, 55],
│ │ │ │ │ "105e": 38,
│ │ │ │ │ "106": [32, 37, 39, 42, 44, 49],
│ │ │ │ │ "10614938": 37,
│ │ │ │ │ "106751": 32,
│ │ │ │ │ "106752": 32,
│ │ │ │ │ - "106e": 52,
│ │ │ │ │ "107": [32, 37, 39, 42, 44, 49],
│ │ │ │ │ "107e": 49,
│ │ │ │ │ "108": [32, 37, 39, 42, 44, 49, 53],
│ │ │ │ │ "1080": 26,
│ │ │ │ │ "1087": 42,
│ │ │ │ │ "109": [32, 37, 39, 42, 44, 49],
│ │ │ │ │ "1092": [30, 33],
│ │ │ │ │ @@ -2723,60 +2726,59 @@
│ │ │ │ │ "110": [32, 37, 39, 44, 49],
│ │ │ │ │ "111": [32, 37, 39, 44, 49],
│ │ │ │ │ "11111111": 37,
│ │ │ │ │ "112": [32, 37, 39, 44, 49],
│ │ │ │ │ "1126": 42,
│ │ │ │ │ "112b": [19, 41],
│ │ │ │ │ "113": [32, 37, 39, 44, 49],
│ │ │ │ │ - "113e": 52,
│ │ │ │ │ "114": [32, 33, 37, 39, 44, 49],
│ │ │ │ │ "115": [33, 37, 39, 44, 49],
│ │ │ │ │ "116": [33, 37, 39, 44, 49],
│ │ │ │ │ "116b": 36,
│ │ │ │ │ "116e": 38,
│ │ │ │ │ "117": [33, 37, 39, 44, 49, 53],
│ │ │ │ │ + "117j": 52,
│ │ │ │ │ "118": [33, 37, 39, 44, 49, 53],
│ │ │ │ │ "119": [32, 33, 37, 39, 44, 45, 49, 53],
│ │ │ │ │ "1192": [36, 48],
│ │ │ │ │ "11920871": 19,
│ │ │ │ │ "119209": 48,
│ │ │ │ │ "119e": 38,
│ │ │ │ │ "11t00": 38,
│ │ │ │ │ "12": [8, 11, 14, 18, 19, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "120": [33, 37, 39, 44, 46, 49, 51, 53],
│ │ │ │ │ "1209": 37,
│ │ │ │ │ - "120b": [37, 42, 46],
│ │ │ │ │ + "120b": [37, 42, 46, 52],
│ │ │ │ │ "121": [32, 33, 37, 39, 44, 49, 53],
│ │ │ │ │ "1212": 37,
│ │ │ │ │ "122": [37, 39, 44, 49, 53],
│ │ │ │ │ - "12260": 52,
│ │ │ │ │ "123": [14, 19, 37, 39, 44, 48, 49, 50, 53, 55],
│ │ │ │ │ "1231": 41,
│ │ │ │ │ "12310214428849964": 55,
│ │ │ │ │ "1234": 3,
│ │ │ │ │ "124": [37, 44, 46, 49, 53],
│ │ │ │ │ "12428": 54,
│ │ │ │ │ "124b": 51,
│ │ │ │ │ "125": [37, 44, 46, 49],
│ │ │ │ │ "126": [37, 44, 49, 55],
│ │ │ │ │ "12696983303810094": 55,
│ │ │ │ │ "127": [37, 39, 41, 44, 49, 55],
│ │ │ │ │ "128": [37, 44, 49, 55],
│ │ │ │ │ "128b": [41, 44],
│ │ │ │ │ "129": [37, 44, 49, 55],
│ │ │ │ │ - "12902": 52,
│ │ │ │ │ "1294": 44,
│ │ │ │ │ "12944067971751294": 55,
│ │ │ │ │ "12b": [19, 36, 37, 39, 41, 42, 44, 45, 48, 49, 50, 51, 55],
│ │ │ │ │ "12kb": 53,
│ │ │ │ │ "12t00": 38,
│ │ │ │ │ "13": [8, 14, 19, 30, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "130": [37, 44, 49],
│ │ │ │ │ "131": [37, 44, 49],
│ │ │ │ │ "132": [37, 49, 53],
│ │ │ │ │ + "1324572465": 52,
│ │ │ │ │ "132e": 38,
│ │ │ │ │ "133": [37, 49],
│ │ │ │ │ "134": [37, 44, 49],
│ │ │ │ │ "135": [37, 49],
│ │ │ │ │ "135632": [19, 48],
│ │ │ │ │ "13563237": [19, 36],
│ │ │ │ │ "136": [19, 36, 37, 48, 49, 50],
│ │ │ │ │ @@ -2788,15 +2790,14 @@
│ │ │ │ │ "1388": 46,
│ │ │ │ │ "139": [37, 44, 49],
│ │ │ │ │ "13t00": 38,
│ │ │ │ │ "14": [8, 11, 12, 13, 19, 32, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "140": [37, 49],
│ │ │ │ │ "1402938": 19,
│ │ │ │ │ "1405": 46,
│ │ │ │ │ - "14053": 52,
│ │ │ │ │ "140b": [36, 39, 48],
│ │ │ │ │ "140kb": 53,
│ │ │ │ │ "141": [37, 45, 49],
│ │ │ │ │ "141e": [38, 49],
│ │ │ │ │ "142": [19, 37, 49],
│ │ │ │ │ "1422": 46,
│ │ │ │ │ "143": [37, 49],
│ │ │ │ │ @@ -2806,15 +2807,14 @@
│ │ │ │ │ "144b": [19, 39, 44],
│ │ │ │ │ "145": [37, 49],
│ │ │ │ │ "145224193": 32,
│ │ │ │ │ "145e": 38,
│ │ │ │ │ "146": [37, 49],
│ │ │ │ │ "1460": 53,
│ │ │ │ │ "14672529": 37,
│ │ │ │ │ - "146e": 52,
│ │ │ │ │ "147": [37, 49],
│ │ │ │ │ "148": [16, 37, 49],
│ │ │ │ │ "14874584": 37,
│ │ │ │ │ "14880519": 19,
│ │ │ │ │ "149": 49,
│ │ │ │ │ "14974655": 37,
│ │ │ │ │ "14975103": 37,
│ │ │ │ │ @@ -2844,57 +2844,60 @@
│ │ │ │ │ "1552": 33,
│ │ │ │ │ "1553": 33,
│ │ │ │ │ "156b": 37,
│ │ │ │ │ "158": [42, 45],
│ │ │ │ │ "1582": [32, 53, 54],
│ │ │ │ │ "158e": 38,
│ │ │ │ │ "15b": 37,
│ │ │ │ │ + "15j": 52,
│ │ │ │ │ "15t00": 38,
│ │ │ │ │ "15t11": 32,
│ │ │ │ │ "15th": 51,
│ │ │ │ │ "16": [8, 11, 19, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "160": [13, 33],
│ │ │ │ │ - "160b": [25, 46, 52, 55],
│ │ │ │ │ + "160b": [25, 46, 55],
│ │ │ │ │ "162": 33,
│ │ │ │ │ "162e": 49,
│ │ │ │ │ "163": 33,
│ │ │ │ │ "163e": 38,
│ │ │ │ │ "164": [30, 33],
│ │ │ │ │ "165": 33,
│ │ │ │ │ "166": [30, 33, 42],
│ │ │ │ │ "1667": 45,
│ │ │ │ │ "167": [7, 30, 33, 39],
│ │ │ │ │ "1677": 32,
│ │ │ │ │ "1678": [18, 53],
│ │ │ │ │ "168": [30, 33],
│ │ │ │ │ + "1683379421": 52,
│ │ │ │ │ "169": [30, 33, 42],
│ │ │ │ │ "16959064": 37,
│ │ │ │ │ "16b": [19, 32, 36, 37, 39, 41, 44, 45, 46, 48, 49, 50, 51, 54, 55],
│ │ │ │ │ "16j": 52,
│ │ │ │ │ "16t00": 38,
│ │ │ │ │ "17": [8, 19, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "170": [30, 33],
│ │ │ │ │ "1703814": 46,
│ │ │ │ │ "171": [30, 33, 44],
│ │ │ │ │ "171e": [38, 49],
│ │ │ │ │ "17234978": 19,
│ │ │ │ │ "172800000": 32,
│ │ │ │ │ + "172e": 52,
│ │ │ │ │ "173": [48, 50],
│ │ │ │ │ "1732": [19, 36, 48],
│ │ │ │ │ "17321465": [19, 36],
│ │ │ │ │ "173215": [19, 48],
│ │ │ │ │ "173e": 38,
│ │ │ │ │ "174": [38, 39],
│ │ │ │ │ "175": 38,
│ │ │ │ │ "17522856": 32,
│ │ │ │ │ "17540423": 32,
│ │ │ │ │ "175e": 52,
│ │ │ │ │ "176": 38,
│ │ │ │ │ - "17639": 52,
│ │ │ │ │ "177": 38,
│ │ │ │ │ + "1774236840": 52,
│ │ │ │ │ "1779": 37,
│ │ │ │ │ "177e": 38,
│ │ │ │ │ "178": [33, 38],
│ │ │ │ │ "179": [33, 38, 42],
│ │ │ │ │ "17t00": 38,
│ │ │ │ │ "18": [3, 8, 18, 19, 27, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "180": [33, 38, 45],
│ │ │ │ │ @@ -2915,15 +2918,14 @@
│ │ │ │ │ "18kb": 53,
│ │ │ │ │ "18t00": 38,
│ │ │ │ │ "19": [8, 19, 32, 33, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "1900": 46,
│ │ │ │ │ "1901901901901": 32,
│ │ │ │ │ "191": [41, 42],
│ │ │ │ │ "19101252": 19,
│ │ │ │ │ - "19110": 52,
│ │ │ │ │ "191e": 49,
│ │ │ │ │ "1926": 41,
│ │ │ │ │ "192b": [37, 39, 54],
│ │ │ │ │ "192e": [38, 52],
│ │ │ │ │ "193000": 32,
│ │ │ │ │ "1969": 32,
│ │ │ │ │ "197": [30, 33],
│ │ │ │ │ @@ -2932,30 +2934,28 @@
│ │ │ │ │ "1972": 32,
│ │ │ │ │ "198": [30, 33],
│ │ │ │ │ "199": [30, 33],
│ │ │ │ │ "1991": 55,
│ │ │ │ │ "1992": 32,
│ │ │ │ │ "1999": [32, 37],
│ │ │ │ │ "19t00": 38,
│ │ │ │ │ - "1c72ec39": 46,
│ │ │ │ │ "1d": [8, 24, 37, 39, 45, 48, 49, 50, 51, 55],
│ │ │ │ │ "1e": 55,
│ │ │ │ │ "1e6": 37,
│ │ │ │ │ "1h": 53,
│ │ │ │ │ "1kb": [37, 38, 53],
│ │ │ │ │ "1m": 14,
│ │ │ │ │ "1st": [44, 51],
│ │ │ │ │ "1ye": 55,
│ │ │ │ │ "2": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "20": [8, 13, 16, 19, 24, 25, 26, 28, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "200": [30, 33, 37, 44, 49, 50],
│ │ │ │ │ "2000": [14, 16, 27, 32, 37, 39, 44, 45, 46, 48, 53, 55],
│ │ │ │ │ "2001": [7, 14, 46, 54, 55],
│ │ │ │ │ "2002": 32,
│ │ │ │ │ - "200b": 52,
│ │ │ │ │ "201": [30, 33, 39, 44],
│ │ │ │ │ "2014": [20, 39],
│ │ │ │ │ "2015": [35, 38],
│ │ │ │ │ "2016": 16,
│ │ │ │ │ "2017": [16, 46],
│ │ │ │ │ "2018": 34,
│ │ │ │ │ "2019": 6,
│ │ │ │ │ @@ -2964,14 +2964,15 @@
│ │ │ │ │ "2021": [34, 35],
│ │ │ │ │ "2022": [35, 39],
│ │ │ │ │ "2023": 39,
│ │ │ │ │ "2025": [26, 30, 33, 46, 53, 54],
│ │ │ │ │ "202e": 38,
│ │ │ │ │ "203": [30, 33],
│ │ │ │ │ "2030": 32,
│ │ │ │ │ + "203j": 52,
│ │ │ │ │ "204": [30, 33],
│ │ │ │ │ "205": [30, 33, 44],
│ │ │ │ │ "206": [30, 33],
│ │ │ │ │ "206e": 38,
│ │ │ │ │ "207": [33, 46],
│ │ │ │ │ "208": 33,
│ │ │ │ │ "208e": 38,
│ │ │ │ │ @@ -2984,15 +2985,22 @@
│ │ │ │ │ "210e": 38,
│ │ │ │ │ "211": 33,
│ │ │ │ │ "212": [19, 36, 48, 50],
│ │ │ │ │ "212112": [19, 48],
│ │ │ │ │ "21211203": [19, 36],
│ │ │ │ │ "213": 33,
│ │ │ │ │ "214": [33, 41],
│ │ │ │ │ - "2147": 52,
│ │ │ │ │ + "2147420302": 52,
│ │ │ │ │ + "2147460609": 52,
│ │ │ │ │ + "2147483419": 52,
│ │ │ │ │ + "2147483516": 52,
│ │ │ │ │ + "2147483563": 52,
│ │ │ │ │ + "2147483582": 52,
│ │ │ │ │ + "2147483626": 52,
│ │ │ │ │ + "214e": 52,
│ │ │ │ │ "215": 33,
│ │ │ │ │ "216": 33,
│ │ │ │ │ "2174": 37,
│ │ │ │ │ "218": [30, 33],
│ │ │ │ │ "219": [30, 33],
│ │ │ │ │ "21t00": 38,
│ │ │ │ │ "22": [19, 30, 32, 33, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54],
│ │ │ │ │ @@ -3013,23 +3021,26 @@
│ │ │ │ │ "2282": 33,
│ │ │ │ │ "2283": 33,
│ │ │ │ │ "2284": 33,
│ │ │ │ │ "2288873043216132": 55,
│ │ │ │ │ "229": [39, 55],
│ │ │ │ │ "2298": 33,
│ │ │ │ │ "2299": 33,
│ │ │ │ │ + "22e": 52,
│ │ │ │ │ "22t00": 38,
│ │ │ │ │ "23": [18, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54],
│ │ │ │ │ "2300": 33,
│ │ │ │ │ "23207067": 37,
│ │ │ │ │ "232b": 46,
│ │ │ │ │ "234e": 38,
│ │ │ │ │ "2355": 44,
│ │ │ │ │ "236": [30, 33],
│ │ │ │ │ "237": [30, 33],
│ │ │ │ │ + "237e": 52,
│ │ │ │ │ + "238": 52,
│ │ │ │ │ "2380": 55,
│ │ │ │ │ "23859177": 37,
│ │ │ │ │ "239": [30, 33],
│ │ │ │ │ "23991312": 37,
│ │ │ │ │ "23kb": 53,
│ │ │ │ │ "23t00": 38,
│ │ │ │ │ "23t12": 37,
│ │ │ │ │ @@ -3048,15 +3059,15 @@
│ │ │ │ │ "245e": 49,
│ │ │ │ │ "2467": 38,
│ │ │ │ │ "247": [30, 33],
│ │ │ │ │ "248": [30, 33, 37],
│ │ │ │ │ "2483": 37,
│ │ │ │ │ "248e": 38,
│ │ │ │ │ "2493": 46,
│ │ │ │ │ - "24b": [19, 36, 37, 39, 41, 42, 44, 45, 48, 50, 52, 55],
│ │ │ │ │ + "24b": [19, 36, 37, 39, 41, 42, 44, 45, 48, 50, 55],
│ │ │ │ │ "24h": 55,
│ │ │ │ │ "24t00": 38,
│ │ │ │ │ "25": [7, 8, 14, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "250": [13, 49],
│ │ │ │ │ "2509": 37,
│ │ │ │ │ "251": 37,
│ │ │ │ │ "2515": 37,
│ │ │ │ │ @@ -3067,28 +3078,30 @@
│ │ │ │ │ "25828142": 37,
│ │ │ │ │ "259": [42, 45],
│ │ │ │ │ "25t00": 38,
│ │ │ │ │ "26": [19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54],
│ │ │ │ │ "260": [13, 44],
│ │ │ │ │ "26047600586578334": 55,
│ │ │ │ │ "2605": [39, 41],
│ │ │ │ │ + "260j": 52,
│ │ │ │ │ "261e": 49,
│ │ │ │ │ "26297658": 37,
│ │ │ │ │ "262e": 37,
│ │ │ │ │ "263e": 49,
│ │ │ │ │ "264": 45,
│ │ │ │ │ "26410385": 37,
│ │ │ │ │ "264b": 39,
│ │ │ │ │ "265": 13,
│ │ │ │ │ "26522911": 37,
│ │ │ │ │ "26585059": 37,
│ │ │ │ │ "266": 50,
│ │ │ │ │ "26652587": 37,
│ │ │ │ │ "26673283": 37,
│ │ │ │ │ "26978671": 37,
│ │ │ │ │ + "269e": 52,
│ │ │ │ │ "26t00": 38,
│ │ │ │ │ "27": [3, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 52, 53, 54],
│ │ │ │ │ "270": [13, 45],
│ │ │ │ │ "27185989": 19,
│ │ │ │ │ "2719": 19,
│ │ │ │ │ "272b": 39,
│ │ │ │ │ "273": [6, 9, 13, 49],
│ │ │ │ │ @@ -3133,14 +3146,15 @@
│ │ │ │ │ "292277022657": 32,
│ │ │ │ │ "292277026596": 32,
│ │ │ │ │ "292278994": 32,
│ │ │ │ │ "2931": 41,
│ │ │ │ │ "29393586": 37,
│ │ │ │ │ "294247": 32,
│ │ │ │ │ "29519584": 37,
│ │ │ │ │ + "296": 52,
│ │ │ │ │ "29645358": 37,
│ │ │ │ │ "296e": 38,
│ │ │ │ │ "297e": 49,
│ │ │ │ │ "29844148": 37,
│ │ │ │ │ "2999": 32,
│ │ │ │ │ "29t00": 38,
│ │ │ │ │ "29t12": 37,
│ │ │ │ │ @@ -3155,70 +3169,64 @@
│ │ │ │ │ "30": [11, 13, 18, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "300": [7, 37, 42, 45, 46],
│ │ │ │ │ "302": 41,
│ │ │ │ │ "302e": 38,
│ │ │ │ │ "304": 26,
│ │ │ │ │ "305": [26, 54],
│ │ │ │ │ "30555813": 37,
│ │ │ │ │ - "30561": 52,
│ │ │ │ │ "305e": 38,
│ │ │ │ │ "306": 26,
│ │ │ │ │ "30682759": 37,
│ │ │ │ │ "306e": 38,
│ │ │ │ │ "307": 26,
│ │ │ │ │ "307e": 38,
│ │ │ │ │ "308": [26, 52],
│ │ │ │ │ "30852683": 37,
│ │ │ │ │ - "308j": 52,
│ │ │ │ │ "309": [45, 52],
│ │ │ │ │ "30b": 37,
│ │ │ │ │ "30t00": [38, 53],
│ │ │ │ │ "30t1": 53,
│ │ │ │ │ "30t12": 53,
│ │ │ │ │ "30t18": 53,
│ │ │ │ │ "30t21": 53,
│ │ │ │ │ "31": [14, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 52, 53, 54],
│ │ │ │ │ "310": 13,
│ │ │ │ │ + "311": 52,
│ │ │ │ │ "315e": 38,
│ │ │ │ │ "316": 45,
│ │ │ │ │ "3179": 42,
│ │ │ │ │ - "319e": 38,
│ │ │ │ │ + "319e": [38, 52],
│ │ │ │ │ "31t00": 32,
│ │ │ │ │ "31t18": 53,
│ │ │ │ │ "31t23": [32, 53],
│ │ │ │ │ "32": [19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 52, 53, 54, 55],
│ │ │ │ │ "320b": 46,
│ │ │ │ │ - "320e": 38,
│ │ │ │ │ + "320e": [38, 52],
│ │ │ │ │ "321": 45,
│ │ │ │ │ "3226808": 19,
│ │ │ │ │ "322e": 38,
│ │ │ │ │ - "324": 52,
│ │ │ │ │ - "324j": 52,
│ │ │ │ │ "3261": 41,
│ │ │ │ │ "32618": 46,
│ │ │ │ │ "326e": 38,
│ │ │ │ │ - "32768": 52,
│ │ │ │ │ "3297": 42,
│ │ │ │ │ "32b": [19, 32, 36, 37, 39, 41, 44, 45, 50, 51, 53, 55],
│ │ │ │ │ "33": [19, 32, 36, 37, 39, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55],
│ │ │ │ │ "331e": 38,
│ │ │ │ │ "333": 50,
│ │ │ │ │ "33326004": 19,
│ │ │ │ │ "333e": [38, 52],
│ │ │ │ │ - "333j": 52,
│ │ │ │ │ "33419587": 37,
│ │ │ │ │ "335": [41, 54],
│ │ │ │ │ "3356": 42,
│ │ │ │ │ "33584385": 19,
│ │ │ │ │ "336": [39, 44, 55],
│ │ │ │ │ "3362": 41,
│ │ │ │ │ "33622174433445307": 55,
│ │ │ │ │ "337e": 38,
│ │ │ │ │ "339": 41,
│ │ │ │ │ - "3397777411": 52,
│ │ │ │ │ "34": [6, 7, 8, 9, 11, 12, 13, 14, 19, 32, 36, 37, 39, 42, 44, 45, 46, 49, 50, 52, 53, 54, 55],
│ │ │ │ │ "340": 13,
│ │ │ │ │ "340921626611": 46,
│ │ │ │ │ "341e": [38, 49],
│ │ │ │ │ "342": 44,
│ │ │ │ │ "342e": 49,
│ │ │ │ │ "34301681": 37,
│ │ │ │ │ @@ -3238,14 +3246,15 @@
│ │ │ │ │ "35793963": 37,
│ │ │ │ │ "357e": 38,
│ │ │ │ │ "358": [37, 53],
│ │ │ │ │ "358e": 38,
│ │ │ │ │ "359": [39, 53],
│ │ │ │ │ "36": [3, 19, 32, 36, 37, 39, 42, 44, 45, 46, 49, 50, 52, 53, 55],
│ │ │ │ │ "360": [46, 53],
│ │ │ │ │ + "360387578": 52,
│ │ │ │ │ "360_dai": [46, 54, 55],
│ │ │ │ │ "361": 53,
│ │ │ │ │ "361e": 38,
│ │ │ │ │ "362": 53,
│ │ │ │ │ "362e": 49,
│ │ │ │ │ "363": 53,
│ │ │ │ │ "36303831": 37,
│ │ │ │ │ @@ -3263,14 +3272,15 @@
│ │ │ │ │ "366_dai": 46,
│ │ │ │ │ "3684": 41,
│ │ │ │ │ "368e": 38,
│ │ │ │ │ "369": 49,
│ │ │ │ │ "37": [19, 32, 36, 37, 39, 41, 42, 44, 45, 46, 49, 50, 52, 53, 55],
│ │ │ │ │ "371": 37,
│ │ │ │ │ "372b": 46,
│ │ │ │ │ + "372e": 52,
│ │ │ │ │ "373": [39, 41, 44, 50, 55],
│ │ │ │ │ "37301222522143085": 55,
│ │ │ │ │ "37342613": 19,
│ │ │ │ │ "373e": 49,
│ │ │ │ │ "375": 46,
│ │ │ │ │ "37516528": 37,
│ │ │ │ │ "37572056": 19,
│ │ │ │ │ @@ -3293,17 +3303,17 @@
│ │ │ │ │ "38j": 52,
│ │ │ │ │ "39": [6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 32, 36, 37, 39, 42, 44, 45, 46, 49, 50, 53, 55],
│ │ │ │ │ "391e": 38,
│ │ │ │ │ "392e": 46,
│ │ │ │ │ "395": [42, 44],
│ │ │ │ │ "396": 42,
│ │ │ │ │ "3963": 37,
│ │ │ │ │ - "3983055198": 52,
│ │ │ │ │ "3989": 37,
│ │ │ │ │ - "3b": [37, 52],
│ │ │ │ │ + "399e": 52,
│ │ │ │ │ + "3b": 37,
│ │ │ │ │ "3d": [5, 7, 8, 48, 49, 54, 55],
│ │ │ │ │ "3h": 55,
│ │ │ │ │ "3kb": [37, 53],
│ │ │ │ │ "3min": 54,
│ │ │ │ │ "3rd": 28,
│ │ │ │ │ "4": [3, 6, 7, 8, 9, 11, 12, 13, 14, 16, 19, 25, 27, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 50, 51, 52, 53, 54],
│ │ │ │ │ "40": [19, 28, 32, 36, 37, 39, 41, 42, 44, 45, 46, 49, 50, 51, 55],
│ │ │ │ │ @@ -3338,36 +3348,40 @@
│ │ │ │ │ "4167": 46,
│ │ │ │ │ "416b": 37,
│ │ │ │ │ "418e": 38,
│ │ │ │ │ "419": 42,
│ │ │ │ │ "41954454": 19,
│ │ │ │ │ "419e": 38,
│ │ │ │ │ "42": [19, 32, 36, 37, 39, 41, 42, 44, 45, 46, 49, 50, 51, 55],
│ │ │ │ │ + "420e": 52,
│ │ │ │ │ "423": 49,
│ │ │ │ │ "424": 39,
│ │ │ │ │ "42497233": 19,
│ │ │ │ │ "425": [19, 42],
│ │ │ │ │ "427": 45,
│ │ │ │ │ "428": 49,
│ │ │ │ │ "4281": 37,
│ │ │ │ │ "43": [19, 32, 36, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "4326": 46,
│ │ │ │ │ + "432b": 52,
│ │ │ │ │ "4333": 45,
│ │ │ │ │ "439e": 38,
│ │ │ │ │ + "43j": 52,
│ │ │ │ │ "44": [19, 32, 36, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "440e": 49,
│ │ │ │ │ "441e": 38,
│ │ │ │ │ "443": [30, 33, 42, 44, 45, 46, 49, 50],
│ │ │ │ │ + "443e": 46,
│ │ │ │ │ "445e": [38, 49],
│ │ │ │ │ "4479968246859435": 55,
│ │ │ │ │ "448": [39, 41, 44, 50, 55],
│ │ │ │ │ "448e": 49,
│ │ │ │ │ "449": 37,
│ │ │ │ │ "44b": [36, 50],
│ │ │ │ │ - "45": [3, 9, 13, 19, 32, 37, 39, 41, 42, 44, 45, 46, 49, 50, 52, 55],
│ │ │ │ │ + "45": [3, 9, 13, 19, 32, 37, 39, 41, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "451": [39, 44, 55],
│ │ │ │ │ "45137647047539964": 55,
│ │ │ │ │ "4514": 41,
│ │ │ │ │ "452": 54,
│ │ │ │ │ "45209466": 19,
│ │ │ │ │ "4521": 38,
│ │ │ │ │ "453": [41, 44],
│ │ │ │ │ @@ -3390,15 +3404,14 @@
│ │ │ │ │ "466": [39, 45],
│ │ │ │ │ "467e": [37, 38],
│ │ │ │ │ "46830462": 37,
│ │ │ │ │ "469": [46, 48, 50],
│ │ │ │ │ "4691": [19, 36, 38, 48],
│ │ │ │ │ "469112": [19, 48],
│ │ │ │ │ "4691123": [19, 36],
│ │ │ │ │ - "46e": 52,
│ │ │ │ │ "47": [7, 19, 32, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "471": 44,
│ │ │ │ │ "47145519": 37,
│ │ │ │ │ "47146929": 37,
│ │ │ │ │ "4715": 46,
│ │ │ │ │ "47179359": 37,
│ │ │ │ │ "47195655": 37,
│ │ │ │ │ @@ -3413,32 +3426,30 @@
│ │ │ │ │ "4867138": 37,
│ │ │ │ │ "48671934": 37,
│ │ │ │ │ "48672119": 37,
│ │ │ │ │ "487": [30, 33],
│ │ │ │ │ "4875": 37,
│ │ │ │ │ "487e": 38,
│ │ │ │ │ "488": [30, 33],
│ │ │ │ │ - "48b": [19, 36, 37, 39, 41, 44, 45, 48, 50, 51, 54],
│ │ │ │ │ + "48b": [19, 36, 37, 39, 41, 44, 45, 48, 50, 51, 52, 54],
│ │ │ │ │ "49": [19, 32, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "490": [30, 33],
│ │ │ │ │ "4909415": 19,
│ │ │ │ │ "491": [30, 33],
│ │ │ │ │ "494929": 48,
│ │ │ │ │ "49492927": 19,
│ │ │ │ │ "49497537": 19,
│ │ │ │ │ "495": 48,
│ │ │ │ │ "495e": 49,
│ │ │ │ │ "496b": 53,
│ │ │ │ │ "497": [44, 45],
│ │ │ │ │ "499e": 38,
│ │ │ │ │ - "4a61": 46,
│ │ │ │ │ "4b": [16, 19, 36, 37, 39, 42, 44, 45, 48, 50, 55],
│ │ │ │ │ "4d": 49,
│ │ │ │ │ "4kb": [49, 53, 55],
│ │ │ │ │ - "4x": 52,
│ │ │ │ │ "5": [6, 7, 8, 9, 11, 12, 13, 14, 16, 19, 25, 27, 30, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "50": [7, 19, 28, 32, 36, 37, 39, 41, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "500": [13, 46, 49, 55],
│ │ │ │ │ "500000": 32,
│ │ │ │ │ "5001": 32,
│ │ │ │ │ "500100": 32,
│ │ │ │ │ "500e": 52,
│ │ │ │ │ @@ -3449,14 +3460,15 @@
│ │ │ │ │ "508": 45,
│ │ │ │ │ "5081": 30,
│ │ │ │ │ "509": [19, 36, 48, 50],
│ │ │ │ │ "5090585": [19, 36],
│ │ │ │ │ "509059": [19, 48],
│ │ │ │ │ "5093": 37,
│ │ │ │ │ "509e": 38,
│ │ │ │ │ + "50e": 52,
│ │ │ │ │ "50kb": 54,
│ │ │ │ │ "51": [6, 19, 32, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "511e": 38,
│ │ │ │ │ "512e": 49,
│ │ │ │ │ "5137": 41,
│ │ │ │ │ "51565169": 37,
│ │ │ │ │ "51565756": 37,
│ │ │ │ │ @@ -3501,15 +3513,14 @@
│ │ │ │ │ "55": [19, 30, 32, 33, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "550e": 38,
│ │ │ │ │ "551": 39,
│ │ │ │ │ "552": 42,
│ │ │ │ │ "552b": 39,
│ │ │ │ │ "552e": 38,
│ │ │ │ │ "553": 42,
│ │ │ │ │ - "555e": 52,
│ │ │ │ │ "556": 45,
│ │ │ │ │ "556e": [37, 49],
│ │ │ │ │ "56": [3, 19, 30, 32, 33, 37, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "5607": 46,
│ │ │ │ │ "561": 44,
│ │ │ │ │ "562": 39,
│ │ │ │ │ "567": 19,
│ │ │ │ │ @@ -3532,15 +3543,14 @@
│ │ │ │ │ "586": [30, 33],
│ │ │ │ │ "587": [30, 33],
│ │ │ │ │ "588": [30, 33],
│ │ │ │ │ "589": [30, 33],
│ │ │ │ │ "589e": 38,
│ │ │ │ │ "59": [19, 30, 32, 33, 37, 38, 39, 42, 44, 45, 46, 49, 50, 55],
│ │ │ │ │ "591": [30, 33],
│ │ │ │ │ - "5910": 52,
│ │ │ │ │ "594": 42,
│ │ │ │ │ "59475567": 37,
│ │ │ │ │ "5948": 44,
│ │ │ │ │ "59499": 16,
│ │ │ │ │ "595e": 38,
│ │ │ │ │ "596": 44,
│ │ │ │ │ "596e": 38,
│ │ │ │ │ @@ -3580,17 +3590,18 @@
│ │ │ │ │ "634e": 38,
│ │ │ │ │ "635": 45,
│ │ │ │ │ "635000": 32,
│ │ │ │ │ "63696169": 37,
│ │ │ │ │ "638e": 49,
│ │ │ │ │ "64": [19, 30, 32, 33, 37, 39, 42, 44, 45, 46, 49, 55],
│ │ │ │ │ "642": 44,
│ │ │ │ │ + "644e": 52,
│ │ │ │ │ "645e": 38,
│ │ │ │ │ "648b": 39,
│ │ │ │ │ - "64b": [36, 37, 41, 44, 52, 53],
│ │ │ │ │ + "64b": [36, 37, 41, 44, 53],
│ │ │ │ │ "65": [19, 30, 32, 33, 37, 39, 42, 44, 46, 49, 55],
│ │ │ │ │ "650e": 38,
│ │ │ │ │ "651e": 38,
│ │ │ │ │ "6525": 37,
│ │ │ │ │ "652e": 38,
│ │ │ │ │ "653": 39,
│ │ │ │ │ "65348932": 37,
│ │ │ │ │ @@ -3671,14 +3682,15 @@
│ │ │ │ │ "726": [33, 41],
│ │ │ │ │ "72653812": 37,
│ │ │ │ │ "726e": 38,
│ │ │ │ │ "727": 33,
│ │ │ │ │ "728": [33, 53],
│ │ │ │ │ "729": [33, 53],
│ │ │ │ │ "72b": [19, 36, 44, 45],
│ │ │ │ │ + "72e": 52,
│ │ │ │ │ "73": [30, 32, 33, 37, 39, 42, 44, 46, 49, 55],
│ │ │ │ │ "730": [33, 53],
│ │ │ │ │ "730119": 32,
│ │ │ │ │ "73021329": 37,
│ │ │ │ │ "730851": 32,
│ │ │ │ │ "731": [33, 53],
│ │ │ │ │ "732": 33,
│ │ │ │ │ @@ -3698,14 +3710,15 @@
│ │ │ │ │ "741": 53,
│ │ │ │ │ "74165739": 37,
│ │ │ │ │ "742": 53,
│ │ │ │ │ "742e": 38,
│ │ │ │ │ "743": 53,
│ │ │ │ │ "744": 53,
│ │ │ │ │ "746": 38,
│ │ │ │ │ + "748595230": 52,
│ │ │ │ │ "75": [8, 13, 32, 37, 39, 42, 44, 46, 49, 55],
│ │ │ │ │ "752": 42,
│ │ │ │ │ "7523": 37,
│ │ │ │ │ "753e": 38,
│ │ │ │ │ "754": 44,
│ │ │ │ │ "7544": 37,
│ │ │ │ │ "754e": [38, 49],
│ │ │ │ │ @@ -3714,14 +3727,15 @@
│ │ │ │ │ "758e": 38,
│ │ │ │ │ "759": 44,
│ │ │ │ │ "76": [32, 37, 39, 42, 44, 46, 49, 55],
│ │ │ │ │ "762e": 38,
│ │ │ │ │ "765e": 38,
│ │ │ │ │ "766e": 38,
│ │ │ │ │ "767e": 38,
│ │ │ │ │ + "768b": 52,
│ │ │ │ │ "76b": [19, 36, 44],
│ │ │ │ │ "77": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "771": 46,
│ │ │ │ │ "772": 46,
│ │ │ │ │ "773": [45, 46],
│ │ │ │ │ "7733": 37,
│ │ │ │ │ "774": 46,
│ │ │ │ │ @@ -3735,15 +3749,14 @@
│ │ │ │ │ "78": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "782": 55,
│ │ │ │ │ "782e": 38,
│ │ │ │ │ "7848": 25,
│ │ │ │ │ "786": [30, 33],
│ │ │ │ │ "787": [30, 33, 45],
│ │ │ │ │ "788": [30, 33],
│ │ │ │ │ - "788e": 52,
│ │ │ │ │ "789": [30, 33, 39, 45],
│ │ │ │ │ "79": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "790": [30, 33],
│ │ │ │ │ "790e": 49,
│ │ │ │ │ "791": [30, 33, 46],
│ │ │ │ │ "79119196": 37,
│ │ │ │ │ "7917": 46,
│ │ │ │ │ @@ -3756,15 +3769,15 @@
│ │ │ │ │ "797e": 54,
│ │ │ │ │ "798": [30, 33],
│ │ │ │ │ "798e": [38, 52],
│ │ │ │ │ "799": [30, 33],
│ │ │ │ │ "8": [3, 7, 8, 11, 12, 13, 14, 16, 18, 19, 25, 27, 30, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "80": [32, 37, 39, 42, 44, 49, 50, 55],
│ │ │ │ │ "800": [30, 33],
│ │ │ │ │ - "800b": [25, 37],
│ │ │ │ │ + "800b": [25, 37, 52],
│ │ │ │ │ "800e": 38,
│ │ │ │ │ "800mb": 38,
│ │ │ │ │ "802": [30, 33],
│ │ │ │ │ "803": [30, 33],
│ │ │ │ │ "804": [30, 33],
│ │ │ │ │ "805": [30, 33, 45],
│ │ │ │ │ "806": [30, 33],
│ │ │ │ │ @@ -3776,19 +3789,17 @@
│ │ │ │ │ "809": [30, 33],
│ │ │ │ │ "80b": [27, 30, 37, 42, 45, 49, 51, 55],
│ │ │ │ │ "81": [3, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "811": 45,
│ │ │ │ │ "812e": 38,
│ │ │ │ │ "81327024": 37,
│ │ │ │ │ "814": 45,
│ │ │ │ │ - "8140": 52,
│ │ │ │ │ "814e": 38,
│ │ │ │ │ "81649658": 16,
│ │ │ │ │ "816497": 16,
│ │ │ │ │ - "819e": 52,
│ │ │ │ │ "81min": 54,
│ │ │ │ │ "82": [19, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "8204": 44,
│ │ │ │ │ "821e": 38,
│ │ │ │ │ "825e": 37,
│ │ │ │ │ "82678535": [19, 36],
│ │ │ │ │ "826e": 46,
│ │ │ │ │ @@ -3796,28 +3807,30 @@
│ │ │ │ │ "829e": 38,
│ │ │ │ │ "83": [3, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "830e": 38,
│ │ │ │ │ "833": 46,
│ │ │ │ │ "8331": 42,
│ │ │ │ │ "8333": 46,
│ │ │ │ │ "837e": 38,
│ │ │ │ │ + "838e": 52,
│ │ │ │ │ "839": [30, 33, 44],
│ │ │ │ │ "84": [32, 37, 38, 39, 42, 44, 49, 53, 55],
│ │ │ │ │ "8403": 41,
│ │ │ │ │ "84076387": 19,
│ │ │ │ │ "840b": 39,
│ │ │ │ │ "841": [30, 33],
│ │ │ │ │ "84113658": 19,
│ │ │ │ │ "8415": 55,
│ │ │ │ │ "842": [30, 33],
│ │ │ │ │ "843": [30, 33],
│ │ │ │ │ "843e": 38,
│ │ │ │ │ "844": [30, 33],
│ │ │ │ │ "845": 30,
│ │ │ │ │ "846": 30,
│ │ │ │ │ + "846e": 52,
│ │ │ │ │ "848": 30,
│ │ │ │ │ "849": 37,
│ │ │ │ │ "849e": 38,
│ │ │ │ │ "85": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "850": 30,
│ │ │ │ │ "851": 30,
│ │ │ │ │ "851e": 38,
│ │ │ │ │ @@ -3855,15 +3868,14 @@
│ │ │ │ │ "875": 46,
│ │ │ │ │ "8755": 53,
│ │ │ │ │ "8760": 32,
│ │ │ │ │ "8784": 32,
│ │ │ │ │ "878e": 38,
│ │ │ │ │ "879": 37,
│ │ │ │ │ "88": [32, 37, 38, 39, 42, 44, 49, 55],
│ │ │ │ │ - "8815": 52,
│ │ │ │ │ "884": 37,
│ │ │ │ │ "886e": 38,
│ │ │ │ │ "887": 42,
│ │ │ │ │ "888": 45,
│ │ │ │ │ "88b": [39, 48, 49],
│ │ │ │ │ "89": [32, 37, 38, 39, 42, 44, 49, 55],
│ │ │ │ │ "893": 45,
│ │ │ │ │ @@ -3873,68 +3885,67 @@
│ │ │ │ │ "897e": 49,
│ │ │ │ │ "8987": 42,
│ │ │ │ │ "8b": [16, 19, 36, 37, 39, 41, 42, 44, 45, 48, 50, 52, 53, 54, 55],
│ │ │ │ │ "8mb": 38,
│ │ │ │ │ "8x": 55,
│ │ │ │ │ "9": [3, 7, 8, 12, 14, 19, 25, 27, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],
│ │ │ │ │ "90": [3, 12, 32, 36, 37, 39, 42, 44, 49, 50, 55],
│ │ │ │ │ - "900e": [49, 52],
│ │ │ │ │ + "900e": 49,
│ │ │ │ │ "901000": 32,
│ │ │ │ │ "901901": 32,
│ │ │ │ │ "901901901": 32,
│ │ │ │ │ "904e": 49,
│ │ │ │ │ "905e": 49,
│ │ │ │ │ "90680094": 19,
│ │ │ │ │ "906e": 49,
│ │ │ │ │ + "9089": 46,
│ │ │ │ │ "91": [12, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "911": 45,
│ │ │ │ │ "912": 45,
│ │ │ │ │ "91275558": 37,
│ │ │ │ │ "912e": 38,
│ │ │ │ │ "913e": 38,
│ │ │ │ │ "915": 39,
│ │ │ │ │ "915e": 49,
│ │ │ │ │ "916": 37,
│ │ │ │ │ "9167": 46,
│ │ │ │ │ + "916e": 52,
│ │ │ │ │ "917": 46,
│ │ │ │ │ "92": [7, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "921e": 38,
│ │ │ │ │ - "9223372036854773590": 52,
│ │ │ │ │ "9223372036854775807": 32,
│ │ │ │ │ "927": 39,
│ │ │ │ │ "929e": 38,
│ │ │ │ │ "93": [32, 37, 39, 42, 44, 45, 49, 55],
│ │ │ │ │ "933": 37,
│ │ │ │ │ "933e": 49,
│ │ │ │ │ - "9346": 52,
│ │ │ │ │ "9363595": 19,
│ │ │ │ │ "937": 41,
│ │ │ │ │ "9399": 37,
│ │ │ │ │ "94": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ - "941e": 52,
│ │ │ │ │ "942": 44,
│ │ │ │ │ "944e": [49, 54],
│ │ │ │ │ "947726688477": 46,
│ │ │ │ │ "95": [9, 13, 32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "953": 39,
│ │ │ │ │ "9537291": 37,
│ │ │ │ │ "953e": 49,
│ │ │ │ │ "958": 46,
│ │ │ │ │ "95902648": 37,
│ │ │ │ │ "95a5a6": 49,
│ │ │ │ │ "96": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "960b": [25, 53],
│ │ │ │ │ + "960e": 52,
│ │ │ │ │ "961e": 38,
│ │ │ │ │ - "9648": 52,
│ │ │ │ │ "96641818": 19,
│ │ │ │ │ "9667": [39, 41],
│ │ │ │ │ "967": [37, 39, 44],
│ │ │ │ │ "967e": 38,
│ │ │ │ │ "968e": 38,
│ │ │ │ │ - "96b": [19, 36, 37, 39, 41, 44, 48, 49, 51, 54],
│ │ │ │ │ + "96b": [19, 36, 37, 39, 41, 44, 48, 49, 51, 52, 54],
│ │ │ │ │ "97": [32, 37, 39, 42, 44, 49, 55],
│ │ │ │ │ "970": 32,
│ │ │ │ │ "971e": 49,
│ │ │ │ │ "973": 39,
│ │ │ │ │ "974": 45,
│ │ │ │ │ "97498828": 37,
│ │ │ │ │ "976": [30, 33],
│ │ │ │ │ @@ -3949,15 +3960,14 @@
│ │ │ │ │ "985": 44,
│ │ │ │ │ "98536051": 19,
│ │ │ │ │ "98th": 49,
│ │ │ │ │ "99": [32, 37, 39, 42, 44, 45, 49, 50, 55],
│ │ │ │ │ "991": 45,
│ │ │ │ │ "992b": 53,
│ │ │ │ │ "992e": 38,
│ │ │ │ │ - "993e": 52,
│ │ │ │ │ "994": 37,
│ │ │ │ │ "995e": 49,
│ │ │ │ │ "996": 30,
│ │ │ │ │ "997": 30,
│ │ │ │ │ "998": 30,
│ │ │ │ │ "99809483": 19,
│ │ │ │ │ "9986": 37,
│ │ │ │ │ @@ -4068,14 +4078,15 @@
│ │ │ │ │ "_unsign": 55,
│ │ │ │ │ "_validate_conn": [30, 33],
│ │ │ │ │ "_variabl": 55,
│ │ │ │ │ "_wrap_proxy_error": [30, 33],
│ │ │ │ │ "_xy_index": 28,
│ │ │ │ │ "a0": [37, 49],
│ │ │ │ │ "a2": [37, 55],
│ │ │ │ │ + "a5cf5e5ab508": 46,
│ │ │ │ │ "aaron": 55,
│ │ │ │ │ "ab": [37, 42, 44, 48],
│ │ │ │ │ "abandon": 55,
│ │ │ │ │ "abba": 41,
│ │ │ │ │ "abbrevi": 19,
│ │ │ │ │ "abc": [19, 39, 44, 55],
│ │ │ │ │ "abcd": [36, 46],
│ │ │ │ │ @@ -4154,14 +4165,15 @@
│ │ │ │ │ "aggregate_func": 24,
│ │ │ │ │ "agnost": [20, 31, 34],
│ │ │ │ │ "ago": 55,
│ │ │ │ │ "agre": [36, 55],
│ │ │ │ │ "agreement": 19,
│ │ │ │ │ "ahead": [3, 51],
│ │ │ │ │ "ahmad": 55,
│ │ │ │ │ + "ai": 52,
│ │ │ │ │ "aicher": 55,
│ │ │ │ │ "aid": 55,
│ │ │ │ │ "aim": [3, 16, 17, 20, 25, 46, 52, 55],
│ │ │ │ │ "aimilio": 55,
│ │ │ │ │ "air": [6, 8, 9, 10, 11, 13, 30, 44, 45, 49, 50],
│ │ │ │ │ "air1d": 49,
│ │ │ │ │ "air1d_multi": 49,
│ │ │ │ │ @@ -4321,15 +4333,14 @@
│ │ │ │ │ "arm": 55,
│ │ │ │ │ "aron": 55,
│ │ │ │ │ "around": [3, 5, 8, 13, 28, 32, 39, 46, 48, 49, 55],
│ │ │ │ │ "arr": [16, 24, 36, 37, 41, 44, 48, 50, 51, 55],
│ │ │ │ │ "arr1": [37, 51],
│ │ │ │ │ "arr2": 51,
│ │ │ │ │ "arr_window": 37,
│ │ │ │ │ - "arra": 52,
│ │ │ │ │ "arrai": [1, 3, 8, 15, 16, 18, 19, 20, 22, 23, 27, 28, 29, 31, 32, 33, 36, 39, 41, 42, 44, 46, 48, 49, 51, 53, 54, 55],
│ │ │ │ │ "arrang": 51,
│ │ │ │ │ "array1": 38,
│ │ │ │ │ "array2": 38,
│ │ │ │ │ "array_api": [24, 52],
│ │ │ │ │ "array_cl": 24,
│ │ │ │ │ "array_lik": [24, 39],
│ │ │ │ │ @@ -4431,16 +4442,14 @@
│ │ │ │ │ "ax4": 13,
│ │ │ │ │ "axi": [11, 16, 18, 19, 20, 22, 24, 30, 37, 38, 39, 40, 41, 42, 46, 48, 51, 52, 55],
│ │ │ │ │ "axisarrai": 5,
│ │ │ │ │ "ayrton": 55,
│ │ │ │ │ "azur": 55,
│ │ │ │ │ "b": [3, 19, 25, 36, 37, 38, 39, 41, 42, 44, 45, 48, 49, 50, 51, 52, 53, 55],
│ │ │ │ │ "b2": [37, 55],
│ │ │ │ │ - "b37c": 46,
│ │ │ │ │ - "b665": 46,
│ │ │ │ │ "ba": 55,
│ │ │ │ │ "back": [1, 8, 16, 19, 20, 26, 30, 31, 33, 37, 38, 39, 40, 41, 42, 44, 46, 49, 50, 52, 55],
│ │ │ │ │ "backend": [1, 5, 16, 24, 29, 30, 31, 33, 34, 38, 39, 44, 46, 54, 55],
│ │ │ │ │ "backend_arrai": 27,
│ │ │ │ │ "backend_kwarg": [27, 46, 55],
│ │ │ │ │ "backendentrypoint": [1, 16, 31, 55],
│ │ │ │ │ "backfil": 44,
│ │ │ │ │ @@ -4636,16 +4645,14 @@
│ │ │ │ │ "by_coord": [36, 55],
│ │ │ │ │ "byte": [24, 46, 55],
│ │ │ │ │ "bytes_": 55,
│ │ │ │ │ "bytesbytescodec": 46,
│ │ │ │ │ "bytestr": 55,
│ │ │ │ │ "bzip2": 46,
│ │ │ │ │ "c": [3, 5, 7, 13, 16, 18, 19, 24, 29, 36, 37, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 54, 55],
│ │ │ │ │ - "c16": 52,
│ │ │ │ │ - "c8afb4b44923": 46,
│ │ │ │ │ "ca": [44, 46],
│ │ │ │ │ "cabl": 55,
│ │ │ │ │ "cach": [26, 27, 30, 33, 34, 55],
│ │ │ │ │ "cache_dir": [30, 33],
│ │ │ │ │ "cachedir": 3,
│ │ │ │ │ "cachingfilemanag": [27, 55],
│ │ │ │ │ "calcul": [5, 9, 12, 15, 16, 37, 38, 42, 49, 51, 53, 55],
│ │ │ │ │ @@ -5063,16 +5070,15 @@
│ │ │ │ │ "customari": 19,
│ │ │ │ │ "customis": 52,
│ │ │ │ │ "customiz": 19,
│ │ │ │ │ "cut": [32, 41, 55],
│ │ │ │ │ "cycl": [3, 14, 39, 55],
│ │ │ │ │ "cyordereddict": 55,
│ │ │ │ │ "cython": 29,
│ │ │ │ │ - "c\u00ea\u017a\u00fa": 52,
│ │ │ │ │ - "d": [3, 6, 7, 9, 10, 11, 12, 13, 14, 16, 19, 20, 26, 27, 28, 30, 32, 33, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54, 55],
│ │ │ │ │ + "d": [3, 6, 7, 9, 10, 11, 12, 13, 14, 16, 19, 20, 26, 27, 28, 30, 32, 33, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 53, 54, 55],
│ │ │ │ │ "d2": 7,
│ │ │ │ │ "d8990": 55,
│ │ │ │ │ "d_ylog": 49,
│ │ │ │ │ "da": [10, 25, 28, 30, 36, 37, 38, 41, 44, 45, 46, 49, 50, 51, 54, 55],
│ │ │ │ │ "da_cub": 46,
│ │ │ │ │ "da_dt64": 45,
│ │ │ │ │ "da_nl": 54,
│ │ │ │ │ @@ -5432,15 +5438,14 @@
│ │ │ │ │ "duplic": [25, 28, 39, 55],
│ │ │ │ │ "durant": [35, 55],
│ │ │ │ │ "dure": [3, 22, 24, 30, 31, 33, 41, 42, 47, 55],
│ │ │ │ │ "dussin": 55,
│ │ │ │ │ "dwesl": 55,
│ │ │ │ │ "dynam": [49, 52, 55],
│ │ │ │ │ "d\u00edez": 55,
│ │ │ │ │ - "d\u017en9\u00be": 52,
│ │ │ │ │ "e": [1, 3, 5, 8, 16, 19, 20, 22, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55],
│ │ │ │ │ "e74c3c": 49,
│ │ │ │ │ "each": [3, 8, 11, 12, 16, 19, 21, 24, 27, 30, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 46, 48, 49, 50, 51, 52, 53, 55],
│ │ │ │ │ "eager": [24, 38, 55],
│ │ │ │ │ "eagerli": [38, 55],
│ │ │ │ │ "eagerly_compute_group": 55,
│ │ │ │ │ "earli": 38,
│ │ │ │ │ @@ -5558,15 +5563,14 @@
│ │ │ │ │ "especi": [3, 16, 20, 37, 38, 40, 46, 55],
│ │ │ │ │ "essenti": [8, 20, 30, 31, 34, 53, 55],
│ │ │ │ │ "establish": 34,
│ │ │ │ │ "estuarin": 7,
│ │ │ │ │ "eta_rho": 7,
│ │ │ │ │ "etc": [3, 5, 16, 18, 19, 20, 24, 28, 32, 34, 37, 38, 40, 55],
│ │ │ │ │ "etienn": 55,
│ │ │ │ │ - "et\u017cj\u00f1": 52,
│ │ │ │ │ "eval": 55,
│ │ │ │ │ "evalu": [7, 8, 30, 51, 55],
│ │ │ │ │ "even": [3, 8, 19, 24, 26, 30, 32, 34, 37, 39, 42, 46, 48, 49, 50, 52, 55],
│ │ │ │ │ "evenli": [42, 49, 50],
│ │ │ │ │ "event": [3, 55],
│ │ │ │ │ "eventu": [3, 19, 27, 34, 55],
│ │ │ │ │ "ever": [39, 55],
│ │ │ │ │ @@ -5631,14 +5635,16 @@
│ │ │ │ │ "extract": [22, 32, 38, 39, 42, 44, 46, 50, 55],
│ │ │ │ │ "extractal": 55,
│ │ │ │ │ "extrapol": [45, 55],
│ │ │ │ │ "extrem": [31, 44, 46, 49, 52],
│ │ │ │ │ "ey": [25, 40],
│ │ │ │ │ "ezequiel": 55,
│ │ │ │ │ "f": [3, 8, 9, 13, 19, 26, 30, 32, 33, 37, 39, 42, 46, 49, 55],
│ │ │ │ │ + "f37e47b2": 46,
│ │ │ │ │ + "f3f2": 46,
│ │ │ │ │ "fabian": 55,
│ │ │ │ │ "fabien": 55,
│ │ │ │ │ "face": [20, 30, 34],
│ │ │ │ │ "facecolor": [7, 49, 55],
│ │ │ │ │ "facet": [50, 55],
│ │ │ │ │ "facetgrid": 55,
│ │ │ │ │ "facilit": [3, 8, 16, 20, 34, 37, 41, 46, 54, 55],
│ │ │ │ │ @@ -5738,15 +5744,15 @@
│ │ │ │ │ "flavor": 3,
│ │ │ │ │ "fleischmann": 55,
│ │ │ │ │ "fletcher32": 46,
│ │ │ │ │ "flexibl": [8, 16, 30, 31, 40, 41, 44, 45, 46, 49, 55],
│ │ │ │ │ "flip": 55,
│ │ │ │ │ "float": [8, 16, 26, 32, 36, 37, 38, 41, 46, 51, 55],
│ │ │ │ │ "float16": [52, 55],
│ │ │ │ │ - "float32": [3, 46, 52, 55],
│ │ │ │ │ + "float32": [3, 46, 55],
│ │ │ │ │ "float64": [8, 16, 19, 25, 27, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55],
│ │ │ │ │ "float_to_top": 55,
│ │ │ │ │ "floor": [22, 32, 53, 54, 55],
│ │ │ │ │ "florian": 55,
│ │ │ │ │ "flow": [21, 39, 55],
│ │ │ │ │ "flox": [18, 38, 41, 55],
│ │ │ │ │ "fluent": 16,
│ │ │ │ │ @@ -5836,14 +5842,15 @@
│ │ │ │ │ "furo": 55,
│ │ │ │ │ "further": [3, 26, 34, 38, 39, 54, 55],
│ │ │ │ │ "furthermor": [24, 26, 44],
│ │ │ │ │ "futur": [3, 24, 32, 33, 39, 42, 46],
│ │ │ │ │ "futurama": 42,
│ │ │ │ │ "futurewarn": 55,
│ │ │ │ │ "fvcom": 55,
│ │ │ │ │ + "f\u00be\u017f\u017f\u017f": 52,
│ │ │ │ │ "g": [1, 3, 5, 16, 20, 22, 24, 25, 26, 28, 29, 30, 31, 32, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55],
│ │ │ │ │ "g015daca": 3,
│ │ │ │ │ "g_simpl": 49,
│ │ │ │ │ "g_simple_lin": 49,
│ │ │ │ │ "gabriel": 55,
│ │ │ │ │ "gaierror": [30, 33],
│ │ │ │ │ "gain": 55,
│ │ │ │ │ @@ -7000,18 +7007,17 @@
│ │ │ │ │ "guido": 55,
│ │ │ │ │ "guillaum": 55,
│ │ │ │ │ "gundersen": 55,
│ │ │ │ │ "gunyh\u00f3": 55,
│ │ │ │ │ "gupta": 55,
│ │ │ │ │ "guvector": 37,
│ │ │ │ │ "gzip": [46, 55],
│ │ │ │ │ - "g\u00ee\u016d\u0105v": 52,
│ │ │ │ │ "g\u00f3rny": 55,
│ │ │ │ │ "g\u00f6bel": 55,
│ │ │ │ │ - "h": [7, 32, 52, 53, 55],
│ │ │ │ │ + "h": [7, 32, 53, 55],
│ │ │ │ │ "h5": [16, 38, 46],
│ │ │ │ │ "h5netcdf": [16, 18, 22, 38, 46, 55],
│ │ │ │ │ "h5netcdfstor": 55,
│ │ │ │ │ "h5py": [16, 46, 55],
│ │ │ │ │ "h_c": 7,
│ │ │ │ │ "ha": [3, 7, 8, 9, 11, 12, 16, 19, 20, 24, 26, 28, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55],
│ │ │ │ │ "haacker": 55,
│ │ │ │ │ @@ -7172,16 +7178,14 @@
│ │ │ │ │ "hypercub": 55,
│ │ │ │ │ "hypothesi": [3, 5, 18, 55],
│ │ │ │ │ "hyrax": 46,
│ │ │ │ │ "h\u00e4fner": 55,
│ │ │ │ │ "h\u00f6chenberg": 55,
│ │ │ │ │ "h\u00f6rsch": 55,
│ │ │ │ │ "h\u00f8xbro": 55,
│ │ │ │ │ - "h\u0119": 52,
│ │ │ │ │ - "h\u0127m\u016f\u017f": 52,
│ │ │ │ │ "i": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 17, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55],
│ │ │ │ │ "ia": [14, 39, 44],
│ │ │ │ │ "ian": 55,
│ │ │ │ │ "ical": 4,
│ │ │ │ │ "idea": [3, 19, 24, 31, 34, 37, 38, 41, 45, 46, 52, 55],
│ │ │ │ │ "ideal": [3, 24, 27, 38],
│ │ │ │ │ "ident": [16, 19, 24, 38, 40, 41, 42, 55],
│ │ │ │ │ @@ -7293,15 +7297,15 @@
│ │ │ │ │ "instanti": [27, 55],
│ │ │ │ │ "instead": [3, 8, 12, 19, 20, 24, 29, 30, 31, 32, 34, 36, 37, 38, 39, 40, 41, 42, 44, 46, 48, 49, 51, 52, 55],
│ │ │ │ │ "institut": 35,
│ │ │ │ │ "instruct": [3, 46, 55],
│ │ │ │ │ "instrument": 39,
│ │ │ │ │ "insuffici": 37,
│ │ │ │ │ "int": [24, 33, 37, 51, 52, 55],
│ │ │ │ │ - "int16": [3, 46, 52],
│ │ │ │ │ + "int16": [3, 46],
│ │ │ │ │ "int32": [3, 19, 32, 36, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55],
│ │ │ │ │ "int64": [3, 19, 32, 36, 39, 41, 44, 46, 48, 50, 53, 54, 55],
│ │ │ │ │ "int64_max": 32,
│ │ │ │ │ "int64_min": 32,
│ │ │ │ │ "int8": 3,
│ │ │ │ │ "intact": 55,
│ │ │ │ │ "intarr": 37,
│ │ │ │ │ @@ -7453,16 +7457,16 @@
│ │ │ │ │ "junip": 55,
│ │ │ │ │ "jupyt": 55,
│ │ │ │ │ "jupyterbook": 46,
│ │ │ │ │ "just": [3, 7, 11, 19, 20, 24, 25, 28, 30, 34, 39, 40, 42, 44, 46, 49, 50, 51, 52, 54, 55],
│ │ │ │ │ "justu": 55,
│ │ │ │ │ "jwen": 55,
│ │ │ │ │ "j\u00f6rdene": 55,
│ │ │ │ │ - "j\u00f6\u00fc\u00e3\u00fd": 52,
│ │ │ │ │ - "k": [3, 7, 13, 20, 24, 28, 45, 52, 55],
│ │ │ │ │ + "j\u0142\u0153": 52,
│ │ │ │ │ + "k": [3, 7, 13, 20, 24, 28, 45, 55],
│ │ │ │ │ "kai": 55,
│ │ │ │ │ "kanma": 55,
│ │ │ │ │ "karasiak": 55,
│ │ │ │ │ "karel": 55,
│ │ │ │ │ "karl": 55,
│ │ │ │ │ "katelyn": 55,
│ │ │ │ │ "kd": 28,
│ │ │ │ │ @@ -7967,15 +7971,15 @@
│ │ │ │ │ "nanosecond": [32, 54, 55],
│ │ │ │ │ "nanquantil": 55,
│ │ │ │ │ "nansum": 37,
│ │ │ │ │ "narr": 55,
│ │ │ │ │ "narrai": 16,
│ │ │ │ │ "nasa": 46,
│ │ │ │ │ "nascent": [50, 55],
│ │ │ │ │ - "nat": [32, 52, 55],
│ │ │ │ │ + "nat": [32, 55],
│ │ │ │ │ "nathan": 55,
│ │ │ │ │ "nation": 38,
│ │ │ │ │ "nativ": [16, 26, 32, 37, 46, 49, 53, 55],
│ │ │ │ │ "nattino": 55,
│ │ │ │ │ "natur": [16, 20, 24, 30, 38, 39, 44, 50, 55],
│ │ │ │ │ "naturalearthfeatur": 7,
│ │ │ │ │ "navig": [1, 3, 21, 55],
│ │ │ │ │ @@ -8050,16 +8054,14 @@
│ │ │ │ │ "nicla": 55,
│ │ │ │ │ "nicola": [35, 55],
│ │ │ │ │ "nielsen": 55,
│ │ │ │ │ "niggl": 55,
│ │ │ │ │ "nightli": 55,
│ │ │ │ │ "nijhara": 55,
│ │ │ │ │ "nikla": 55,
│ │ │ │ │ - "nil": 52,
│ │ │ │ │ - "nim": 52,
│ │ │ │ │ "nirupam": 55,
│ │ │ │ │ "nishtha": 55,
│ │ │ │ │ "nishtha981": 55,
│ │ │ │ │ "no_conflict": 55,
│ │ │ │ │ "noaa": [38, 55],
│ │ │ │ │ "noah": 55,
│ │ │ │ │ "nodatav": 55,
│ │ │ │ │ @@ -8113,15 +8115,15 @@
│ │ │ │ │ "numfocu": 55,
│ │ │ │ │ "numpi": [1, 3, 7, 8, 9, 10, 11, 12, 14, 16, 18, 19, 20, 22, 24, 25, 27, 28, 29, 30, 31, 32, 34, 36, 37, 38, 39, 44, 45, 46, 48, 49, 50, 51, 52, 53, 55],
│ │ │ │ │ "numpy_experimental_array_funct": 55,
│ │ │ │ │ "numpyindexingadapt": 55,
│ │ │ │ │ "nx": 41,
│ │ │ │ │ "nxarrai": 5,
│ │ │ │ │ "ny": 41,
│ │ │ │ │ - "o": [18, 24, 27, 33, 45, 48, 49, 52, 55],
│ │ │ │ │ + "o": [18, 24, 27, 33, 45, 48, 49, 55],
│ │ │ │ │ "obei": 25,
│ │ │ │ │ "obj": [22, 24, 33, 38],
│ │ │ │ │ "object": [3, 5, 8, 14, 16, 18, 19, 20, 22, 24, 25, 26, 27, 28, 31, 32, 33, 34, 36, 37, 38, 39, 42, 44, 45, 46, 48, 50, 51, 52, 53, 54, 55],
│ │ │ │ │ "oblivi": 55,
│ │ │ │ │ "observ": [5, 14, 31, 34, 37, 42, 48, 49, 55],
│ │ │ │ │ "obsolet": 55,
│ │ │ │ │ "obtain": [33, 45, 55],
│ │ │ │ │ @@ -8440,15 +8442,14 @@
│ │ │ │ │ "possibli": [22, 32, 34, 46, 55],
│ │ │ │ │ "post": [3, 46, 48, 49, 55],
│ │ │ │ │ "potenti": [3, 26, 27, 42, 55],
│ │ │ │ │ "poux": 55,
│ │ │ │ │ "power": [5, 16, 20, 28, 30, 34, 37, 42, 52, 53, 55],
│ │ │ │ │ "pp": 46,
│ │ │ │ │ "ppt": 46,
│ │ │ │ │ - "pq\u00e2\u017e": 52,
│ │ │ │ │ "pr": 55,
│ │ │ │ │ "pr10000": 55,
│ │ │ │ │ "pr10008": 55,
│ │ │ │ │ "pr10012": 55,
│ │ │ │ │ "pr10017": 55,
│ │ │ │ │ "pr10020": 55,
│ │ │ │ │ "pr10024": 55,
│ │ │ │ │ @@ -9339,15 +9340,14 @@
│ │ │ │ │ "pytorch": 34,
│ │ │ │ │ "pytz": 18,
│ │ │ │ │ "pyupgrad": 55,
│ │ │ │ │ "pyvista": 5,
│ │ │ │ │ "pyxpcm": 5,
│ │ │ │ │ "pyyaml": 18,
│ │ │ │ │ "q": [37, 55],
│ │ │ │ │ - "q0": 52,
│ │ │ │ │ "qe": 55,
│ │ │ │ │ "quack": 40,
│ │ │ │ │ "quadmesh": [19, 49, 55],
│ │ │ │ │ "quadrat": [45, 55],
│ │ │ │ │ "qualifi": 42,
│ │ │ │ │ "qualiti": 3,
│ │ │ │ │ "quantil": [37, 55],
│ │ │ │ │ @@ -9364,15 +9364,14 @@
│ │ │ │ │ "quickbird": 5,
│ │ │ │ │ "quicker": 46,
│ │ │ │ │ "quickli": [16, 17, 38, 42, 52, 53],
│ │ │ │ │ "quickstart": 34,
│ │ │ │ │ "quit": [3, 46, 52, 55],
│ │ │ │ │ "quiver": 55,
│ │ │ │ │ "quoc": 55,
│ │ │ │ │ - "q\u00f0\u016bu\u0157": 52,
│ │ │ │ │ "r": [26, 30, 32, 33, 37, 38, 39, 46, 55],
│ │ │ │ │ "rabbit": 42,
│ │ │ │ │ "race": 55,
│ │ │ │ │ "rachel": 55,
│ │ │ │ │ "radar": 5,
│ │ │ │ │ "rafael": 55,
│ │ │ │ │ "rag": 44,
│ │ │ │ │ @@ -9656,16 +9655,15 @@
│ │ │ │ │ "runner": 55,
│ │ │ │ │ "runtim": [24, 55],
│ │ │ │ │ "runtimewarn": [46, 55],
│ │ │ │ │ "russel": 55,
│ │ │ │ │ "russotto": 55,
│ │ │ │ │ "rutger": 55,
│ │ │ │ │ "ryan": [12, 35, 55],
│ │ │ │ │ - "r\u00e5": 52,
│ │ │ │ │ - "s1": [46, 52, 55],
│ │ │ │ │ + "s1": [46, 55],
│ │ │ │ │ "s2": 40,
│ │ │ │ │ "s3": [46, 55],
│ │ │ │ │ "s_da": 40,
│ │ │ │ │ "s_rho": 7,
│ │ │ │ │ "sa": [30, 33],
│ │ │ │ │ "saboo": 55,
│ │ │ │ │ "safe": [27, 30, 32, 33, 45, 46, 55],
│ │ │ │ │ @@ -10306,15 +10304,14 @@
│ │ │ │ │ "timeseri": [15, 22, 38, 42, 55],
│ │ │ │ │ "timestamp": [39, 46, 54, 55],
│ │ │ │ │ "timestep": [9, 19],
│ │ │ │ │ "timezon": [32, 55],
│ │ │ │ │ "timothycera": 55,
│ │ │ │ │ "tip": [3, 8, 38, 55],
│ │ │ │ │ "titl": [3, 6, 16, 39, 49, 55],
│ │ │ │ │ - "tj": 52,
│ │ │ │ │ "tmax": [14, 46],
│ │ │ │ │ "tmax_valu": 14,
│ │ │ │ │ "tmin": [14, 46, 55],
│ │ │ │ │ "tmin_valu": 14,
│ │ │ │ │ "tmp": [30, 33],
│ │ │ │ │ "to_arrai": 55,
│ │ │ │ │ "to_base_vari": 55,
│ │ │ │ │ @@ -10433,26 +10430,24 @@
│ │ │ │ │ "typeerror": [27, 46, 55],
│ │ │ │ │ "typehint": 55,
│ │ │ │ │ "typic": [3, 7, 14, 16, 30, 34, 38, 46, 51],
│ │ │ │ │ "typing_extens": 55,
│ │ │ │ │ "typo": [3, 23, 55],
│ │ │ │ │ "tyre": 55,
│ │ │ │ │ "u": [3, 8, 12, 19, 21, 24, 26, 31, 32, 33, 34, 42, 44, 45, 46, 49, 50, 53, 54, 55],
│ │ │ │ │ - "u0001e37d": 52,
│ │ │ │ │ "u1": [19, 36, 37, 39, 41, 44, 45, 46, 48, 50, 55],
│ │ │ │ │ "u2": [37, 39, 44],
│ │ │ │ │ - "u3": [52, 53, 54, 55],
│ │ │ │ │ + "u3": [53, 54, 55],
│ │ │ │ │ "u4": 55,
│ │ │ │ │ "u5": [19, 49],
│ │ │ │ │ "u6": [39, 42],
│ │ │ │ │ "u7": [37, 39],
│ │ │ │ │ "u8": [37, 39],
│ │ │ │ │ "ubiqu": 16,
│ │ │ │ │ "ufunc": [1, 8, 24, 37, 38, 40, 55],
│ │ │ │ │ - "uint32": 52,
│ │ │ │ │ "uint64_max": 32,
│ │ │ │ │ "uint8": [40, 46],
│ │ │ │ │ "uk": [6, 16, 46],
│ │ │ │ │ "ulrich": 55,
│ │ │ │ │ "ultim": 24,
│ │ │ │ │ "unabl": [16, 38],
│ │ │ │ │ "unaddress": 55,
│ │ │ │ │ @@ -10659,15 +10654,15 @@
│ │ │ │ │ "voltag": 42,
│ │ │ │ │ "volum": [5, 16, 55],
│ │ │ │ │ "volunt": 20,
│ │ │ │ │ "voluntari": 55,
│ │ │ │ │ "vrt": 55,
│ │ │ │ │ "vtk": 5,
│ │ │ │ │ "vtransform": 7,
│ │ │ │ │ - "w": [7, 32, 33, 42, 46, 49, 50, 52],
│ │ │ │ │ + "w": [7, 32, 33, 42, 46, 49, 50],
│ │ │ │ │ "wa": [3, 7, 8, 16, 20, 24, 30, 31, 33, 34, 36, 39, 40, 42, 46, 48, 49, 52, 53, 54, 55],
│ │ │ │ │ "wai": [3, 7, 8, 12, 16, 18, 19, 21, 24, 26, 30, 31, 34, 38, 39, 40, 42, 44, 45, 46, 48, 51, 52, 55],
│ │ │ │ │ "wait": 3,
│ │ │ │ │ "wale": 55,
│ │ │ │ │ "walk": 40,
│ │ │ │ │ "wall": 38,
│ │ │ │ │ "wang": 55,
│ │ │ │ │ @@ -10779,71 +10774,53 @@
│ │ │ │ │ "write_empty_chunk": 55,
│ │ │ │ │ "write_inherited_coord": 55,
│ │ │ │ │ "written": [3, 18, 24, 29, 37, 38, 39, 46, 52, 55],
│ │ │ │ │ "wrong": [3, 32, 55],
│ │ │ │ │ "wrongli": 55,
│ │ │ │ │ "wrote": 36,
│ │ │ │ │ "www": [7, 18],
│ │ │ │ │ + "w\u00e9\u0148": 52,
│ │ │ │ │ "x": [3, 5, 7, 8, 12, 13, 14, 18, 19, 20, 24, 25, 27, 28, 30, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 50, 51, 52, 54, 55],
│ │ │ │ │ - "x01": 52,
│ │ │ │ │ - "x0b": 52,
│ │ │ │ │ "x0pahjgysxk": 18,
│ │ │ │ │ "x1": 36,
│ │ │ │ │ - "x13": 52,
│ │ │ │ │ + "x1ax": 52,
│ │ │ │ │ "x2": [36, 40],
│ │ │ │ │ "x64": 55,
│ │ │ │ │ "x82": 52,
│ │ │ │ │ - "x82k": 52,
│ │ │ │ │ - "x87": 52,
│ │ │ │ │ - "x89": 52,
│ │ │ │ │ - "x8b": 52,
│ │ │ │ │ - "x91": 52,
│ │ │ │ │ - "x92e": 52,
│ │ │ │ │ - "x9a": 52,
│ │ │ │ │ - "x9c": 52,
│ │ │ │ │ "x_and_i": 37,
│ │ │ │ │ "x_bin": 41,
│ │ │ │ │ "x_bin_label": 41,
│ │ │ │ │ "x_chunk": 24,
│ │ │ │ │ "x_coars": 50,
│ │ │ │ │ "x_fine": 50,
│ │ │ │ │ "x_matrix_rank": 37,
│ │ │ │ │ "x_onli": 37,
│ │ │ │ │ "x_rank": 38,
│ │ │ │ │ "x_singular_valu": 37,
│ │ │ │ │ "x_win": 37,
│ │ │ │ │ - "xa5": 52,
│ │ │ │ │ - "xac": 52,
│ │ │ │ │ - "xae": 52,
│ │ │ │ │ - "xaf": 52,
│ │ │ │ │ "xalpha": 37,
│ │ │ │ │ "xalpha1": 37,
│ │ │ │ │ "xarrai": [1, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 22, 24, 25, 27, 28, 30, 32, 33, 34, 35, 36, 37, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55],
│ │ │ │ │ "xarray_einstat": 5,
│ │ │ │ │ "xarray_extra": [5, 46],
│ │ │ │ │ "xarray_obj": 26,
│ │ │ │ │ "xarray_object": 8,
│ │ │ │ │ "xarray_v0_8_0": 16,
│ │ │ │ │ - "xb2": 52,
│ │ │ │ │ "xbatcher": 5,
│ │ │ │ │ "xbpch": 5,
│ │ │ │ │ "xc": [12, 37, 46],
│ │ │ │ │ "xc0": 37,
│ │ │ │ │ - "xc2": 52,
│ │ │ │ │ + "xc5": 52,
│ │ │ │ │ + "xc8": 52,
│ │ │ │ │ "xcdat": [5, 55],
│ │ │ │ │ "xclim": 5,
│ │ │ │ │ "xd": 38,
│ │ │ │ │ - "xd7": 52,
│ │ │ │ │ - "xdb": 52,
│ │ │ │ │ - "xdd": 52,
│ │ │ │ │ "xdev": 35,
│ │ │ │ │ "xdist": [3, 18, 55],
│ │ │ │ │ - "xe3": 52,
│ │ │ │ │ - "xec": 52,
│ │ │ │ │ - "xed": 52,
│ │ │ │ │ + "xeb": 52,
│ │ │ │ │ "xenomorph": 42,
│ │ │ │ │ "xeof": 5,
│ │ │ │ │ "xesmf": [5, 12],
│ │ │ │ │ "xfail": [3, 55],
│ │ │ │ │ "xframe": 5,
│ │ │ │ │ "xgcm": [5, 7],
│ │ │ │ │ "xi": 8,
│ │ │ │ │ @@ -10947,81 +10924,51 @@
│ │ │ │ │ "zo_rho": 7,
│ │ │ │ │ "zonal": [5, 38, 49],
│ │ │ │ │ "zone": 32,
│ │ │ │ │ "zoom": 4,
│ │ │ │ │ "zstd": 46,
│ │ │ │ │ "zuckerberg": 55,
│ │ │ │ │ "z\u00fchlke": 55,
│ │ │ │ │ - "\u00b2\u017c\u010bk\u016d": 52,
│ │ │ │ │ - "\u00b2\u017ea\u017eg": 52,
│ │ │ │ │ - "\u00e1\u0159": 52,
│ │ │ │ │ - "\u00e3\u00fbe\u017e\u0107": 52,
│ │ │ │ │ - "\u00e6": 52,
│ │ │ │ │ - "\u00ec": 52,
│ │ │ │ │ - "\u00f0": 52,
│ │ │ │ │ - "\u00f1": 52,
│ │ │ │ │ - "\u00f1\u017c\u00eb": 52,
│ │ │ │ │ - "\u00f2": 52,
│ │ │ │ │ - "\u00f25s\u017f\u015f": 52,
│ │ │ │ │ - "\u00f2\u0171": 52,
│ │ │ │ │ - "\u00f3\u0109x": 52,
│ │ │ │ │ - "\u00f4": 52,
│ │ │ │ │ - "\u00f4\u00ff": 52,
│ │ │ │ │ - "\u00f5\u00f0d": 52,
│ │ │ │ │ - "\u00f6\u0115": 52,
│ │ │ │ │ - "\u00f9\u017c0\u017e\u00e3": 52,
│ │ │ │ │ - "\u00fb\u017f\u017e\u015d\u00e1": 52,
│ │ │ │ │ - "\u00fd\u00bac\u0173\u0115": 52,
│ │ │ │ │ - "\u00ffc\u017eg": 52,
│ │ │ │ │ - "\u0101\u00fc\u0119\u017f": 52,
│ │ │ │ │ - "\u010b\u0101": 52,
│ │ │ │ │ - "\u0117\u0142\u017c\u0161\u00fb": 52,
│ │ │ │ │ - "\u0119": 52,
│ │ │ │ │ - "\u0121\u017f": 52,
│ │ │ │ │ - "\u0123\u016b": 52,
│ │ │ │ │ - "\u0138\u0137\u017e\u00f8": 52,
│ │ │ │ │ + "\u00dfh\u017f\u017f": 52,
│ │ │ │ │ + "\u00df\u017e\u015d\u00f3\u00f2": 52,
│ │ │ │ │ + "\u00e17": 52,
│ │ │ │ │ + "\u00e4\u00e3\u00f8\u017e": 52,
│ │ │ │ │ + "\u00e5": 52,
│ │ │ │ │ + "\u00eb\u00ef\u017a7\u0127": 52,
│ │ │ │ │ + "\u00ed\u0117": 52,
│ │ │ │ │ + "\u00eeh4\u0140i": 52,
│ │ │ │ │ + "\u00f0\u017f\u00ff\u011f\u011d": 52,
│ │ │ │ │ + "\u00f8\u017e\u0127": 52,
│ │ │ │ │ + "\u00f9\u0163": 52,
│ │ │ │ │ + "\u0103": 52,
│ │ │ │ │ + "\u0113\u017cj3": 52,
│ │ │ │ │ + "\u0115\u0109": 52,
│ │ │ │ │ + "\u011d": 52,
│ │ │ │ │ + "\u011d\u00e8\u0177\u00b3": 52,
│ │ │ │ │ + "\u0121\u0165\u017c": 52,
│ │ │ │ │ + "\u0123k\u017e": 52,
│ │ │ │ │ + "\u0135\u0149\u00ff\u0117\u016f": 52,
│ │ │ │ │ "\u013c": 52,
│ │ │ │ │ - "\u0142\u010f": 52,
│ │ │ │ │ - "\u0142\u017f\u017f\u0159o": 52,
│ │ │ │ │ - "\u0144": 52,
│ │ │ │ │ - "\u0144\u00fe": 52,
│ │ │ │ │ - "\u0146": 52,
│ │ │ │ │ - "\u0148\u017e\u011b0\u014b": 52,
│ │ │ │ │ - "\u0157": 52,
│ │ │ │ │ - "\u015d\u00f9u": 52,
│ │ │ │ │ - "\u015f\u00fd\u00fe\u0175": 52,
│ │ │ │ │ - "\u015f\u0119": 52,
│ │ │ │ │ - "\u0167\u0157\u0103\u0151\u00fc": 52,
│ │ │ │ │ - "\u016b\u0129\u0133\u0140\u013e": 52,
│ │ │ │ │ - "\u016b\u0169": 52,
│ │ │ │ │ - "\u016d\u0121\u0146\u017e\u017e": 52,
│ │ │ │ │ - "\u0171": 52,
│ │ │ │ │ - "\u0173b\u0129en": 52,
│ │ │ │ │ - "\u017a\u0127\u014b\u017c": 52,
│ │ │ │ │ + "\u0151\u0138": 52,
│ │ │ │ │ + "\u0151\u017e\u016d\u017c\u0157": 52,
│ │ │ │ │ + "\u0153": 52,
│ │ │ │ │ + "\u0159\u00e6\u0117": 52,
│ │ │ │ │ + "\u015f\u0123": 52,
│ │ │ │ │ + "\u0167": 52,
│ │ │ │ │ + "\u0167\u0167\u0129\u00e7j": 52,
│ │ │ │ │ + "\u0173y": 52,
│ │ │ │ │ + "\u0175\u012d\u0151": 52,
│ │ │ │ │ + "\u0177": 52,
│ │ │ │ │ "\u017c": 52,
│ │ │ │ │ - "\u017c5": 52,
│ │ │ │ │ - "\u017c\u00e0\u00fcf\u00df": 52,
│ │ │ │ │ - "\u017c\u00f2": 52,
│ │ │ │ │ - "\u017c\u0119\u011f\u0129\u017f": 52,
│ │ │ │ │ - "\u017c\u011f\u00e2\u017e\u015b": 52,
│ │ │ │ │ - "\u017c\u0167\u0111\u0151r": 52,
│ │ │ │ │ - "\u017c\u017e": 52,
│ │ │ │ │ + "\u017c\u00eb\u00f5\u00f0\u00e4": 52,
│ │ │ │ │ + "\u017c\u012d\u014f": 52,
│ │ │ │ │ + "\u017c\u014dv\u015b\u017c": 52,
│ │ │ │ │ "\u017e": 52,
│ │ │ │ │ - "\u017e0\u0105": 52,
│ │ │ │ │ - "\u017e\u00be\u017f\u017e\u017f": 52,
│ │ │ │ │ - "\u017e\u00f5\u010b": 52,
│ │ │ │ │ - "\u017e\u0131\u0155": 52,
│ │ │ │ │ - "\u017e\u017er": 52,
│ │ │ │ │ - "\u017e\u017e\u017f\u013c\u00fe": 52,
│ │ │ │ │ - "\u017e\u017fn\u010by": 52,
│ │ │ │ │ - "\u017fsc0": 52,
│ │ │ │ │ - "\u017f\u01371": 52,
│ │ │ │ │ - "\u017f\u015d\u014fl": 52,
│ │ │ │ │ - "\u017f\u016f\u00bd\u00e8f": 52,
│ │ │ │ │ - "\ud854\ude4b": 52
│ │ │ │ │ + "\u017e\u014b\u00f1\u00fe": 52,
│ │ │ │ │ + "\u017f\u00aa\u0127\u0144\u014b": 52
│ │ │ │ │ },
│ │ │ │ │ "titles": ["xarray", "API reference", "<no title>", "Contributing to xarray", "Developers meeting", "Xarray related projects", "GRIB Data Example", "ROMS Ocean Model Example", "Applying unvectorized functions with apply_ufunc
", "Compare weighted and unweighted mean temperature", "Blank template", "Calculating Seasonal Averages from Time Series of Monthly Means", "Working with Multidimensional Coordinates", "Visualization Gallery", "Toy weather data", "Gallery", "Frequently Asked Questions", "Getting Started", "Installation", "Quick overview", "Overview: Why xarray?", "Getting Help", "How do I \u2026", "Xarray documentation", "Alternative chunked array types", "Integrating with duck arrays", "Extending xarray using accessors", "How to add a new backend", "How to create a custom index", "Xarray Internals", "Internal Design", "Interoperability of Xarray", "Time Coding", "Zarr Encoding Specification", "Development roadmap", "Tutorials and Videos", "Combining data", "Computation", "Parallel Computing with Dask", "Data Structures", "Working with numpy-like arrays", "GroupBy: Group and Bin Data", "Hierarchical data", "User Guide", "Indexing and selecting data", "Interpolating data", "Reading and writing files", "Configuration", "Working with pandas", "Plotting", "Reshaping and reorganizing data", "Terminology", "Testing your code", "Time series data", "Weather and climate data", "What\u2019s New"],
│ │ │ │ │ "titleterms": {
│ │ │ │ │ "": [13, 16, 55],
│ │ │ │ │ "0": 55,
│ │ │ │ │ "01": 55,
│ │ │ │ │ "02": 55,
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/data-structures.html
│ │ │ │ @@ -731,18 +731,18 @@
│ │ │ │ a method call with an external function (e.g., ds.pipe(func)
) instead of
│ │ │ │ simply calling it (e.g., func(ds)
). This allows you to write pipelines for
│ │ │ │ transforming your data (using “method chaining”) instead of writing hard to
│ │ │ │ follow nested function calls:
│ │ │ │ # these lines are equivalent, but with pipe we can make the logic flow
│ │ │ │ # entirely from left to right
│ │ │ │ In [64]: plt.plot((2 * ds.temperature.sel(loc=0)).mean("instrument"))
│ │ │ │ -Out[64]: [<matplotlib.lines.Line2D at 0xa3a38450>]
│ │ │ │ +Out[64]: [<matplotlib.lines.Line2D at 0xe4726450>]
│ │ │ │
│ │ │ │ In [65]: (ds.temperature.sel(loc=0).pipe(lambda x: 2 * x).mean("instrument").pipe(plt.plot))
│ │ │ │ -Out[65]: [<matplotlib.lines.Line2D at 0xa3a383a0>]
│ │ │ │ +Out[65]: [<matplotlib.lines.Line2D at 0xe47263a0>]
│ │ │ │
│ │ │ │
│ │ │ │ Both pipe
and assign
replicate the pandas methods of the same names
│ │ │ │ (DataFrame.pipe
and
│ │ │ │ DataFrame.assign
).
│ │ │ │ With xarray, there is no performance penalty for creating new datasets, even if
│ │ │ │ variables are lazily loaded from a file on disk. Creating new objects instead
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -585,19 +585,19 @@
│ │ │ │ │ There is also the pipe() method that allows you to use a method call with an
│ │ │ │ │ external function (e.g., ds.pipe(func)) instead of simply calling it (e.g.,
│ │ │ │ │ func(ds)). This allows you to write pipelines for transforming your data (using
│ │ │ │ │ “method chaining”) instead of writing hard to follow nested function calls:
│ │ │ │ │ # these lines are equivalent, but with pipe we can make the logic flow
│ │ │ │ │ # entirely from left to right
│ │ │ │ │ In [64]: plt.plot((2 * ds.temperature.sel(loc=0)).mean("instrument"))
│ │ │ │ │ -Out[64]: []
│ │ │ │ │ +Out[64]: []
│ │ │ │ │
│ │ │ │ │ In [65]: (ds.temperature.sel(loc=0).pipe(lambda x: 2 * x).mean
│ │ │ │ │ ("instrument").pipe(plt.plot))
│ │ │ │ │ -Out[65]: []
│ │ │ │ │ +Out[65]: []
│ │ │ │ │ Both pipe and assign replicate the pandas methods of the same names
│ │ │ │ │ (_D_a_t_a_F_r_a_m_e_._p_i_p_e and _D_a_t_a_F_r_a_m_e_._a_s_s_i_g_n).
│ │ │ │ │ With xarray, there is no performance penalty for creating new datasets, even if
│ │ │ │ │ variables are lazily loaded from a file on disk. Creating new objects instead
│ │ │ │ │ of mutating existing objects often results in easier to understand code, so we
│ │ │ │ │ encourage using this approach.
│ │ │ │ │ ******** RReennaammiinngg vvaarriiaabblleess_?¶ ********
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/hierarchical-data.html
│ │ │ │ @@ -983,15 +983,15 @@
│ │ │ │ If you were a previous user of the prototype xarray-contrib/datatree package, this is different from what you’re used to!
│ │ │ │ In that package the data model was that the data stored in each node actually was completely unrelated. The data model is now slightly stricter.
│ │ │ │ This allows us to provide features like Coordinate Inheritance.
│ │ │ │
│ │ │ │ To demonstrate, let’s first generate some example datasets which are not aligned with one another:
│ │ │ │ # (drop the attributes just to make the printed representation shorter)
│ │ │ │ In [89]: ds = xr.tutorial.open_dataset("air_temperature").drop_attrs()
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa426abe0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe4f51be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [90]: ds_daily = ds.resample(time="D").mean("time")
│ │ │ │ KeyError: "No variable named 'time'. Variables on the dataset include ['foo', 'x', 'letters']"
│ │ │ │
│ │ │ │
│ │ │ │ In [91]: ds_weekly = ds.resample(time="W").mean("time")
│ │ │ │ @@ -1055,15 +1055,15 @@
│ │ │ │ └── Group: /b/B
│ │ │ │
│ │ │ │
│ │ │ │ Now we have a valid DataTree
structure which contains all the data at each different time frequency, stored in a separate group.
│ │ │ │ This is a useful way to organise our data because we can still operate on all the groups at once.
│ │ │ │ For example we can extract all three timeseries at a specific lat-lon location:
│ │ │ │ In [100]: dt.sel(lat=75, lon=300)
│ │ │ │ -ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set()
│ │ │ │ +ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set()
│ │ │ │
│ │ │ │
│ │ │ │ or compute the standard deviation of each timeseries to find out how it varies with sampling frequency:
│ │ │ │ In [101]: dt.std(dim="time")
│ │ │ │ ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()
│ │ │ │
│ │ │ │
│ │ │ │ @@ -1129,15 +1129,15 @@
│ │ │ │ In [107]: print(dt["/daily"])
│ │ │ │ KeyError: 'Could not find node at /daily'
│ │ │ │
│ │ │ │
│ │ │ │ This helps to differentiate which variables are defined on the datatree node that you are currently looking at, and which were defined somewhere above it.
│ │ │ │ We can also still perform all the same operations on the whole tree:
│ │ │ │ In [108]: dt.sel(lat=[75], lon=[300])
│ │ │ │ -ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set()
│ │ │ │ +ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set()
│ │ │ │
│ │ │ │
│ │ │ │ In [109]: dt.std(dim="time")
│ │ │ │ ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -870,15 +870,15 @@
│ │ │ │ │ _C_o_o_r_d_i_n_a_t_e_ _I_n_h_e_r_i_t_a_n_c_e.
│ │ │ │ │ To demonstrate, let’s first generate some example datasets which are not
│ │ │ │ │ aligned with one another:
│ │ │ │ │ # (drop the attributes just to make the printed representation shorter)
│ │ │ │ │ In [89]: ds = xr.tutorial.open_dataset("air_temperature").drop_attrs()
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [90]: ds_daily = ds.resample(time="D").mean("time")
│ │ │ │ │ KeyError: "No variable named 'time'. Variables on the dataset include ['foo',
│ │ │ │ │ 'x', 'letters']"
│ │ │ │ │ @@ -947,15 +947,15 @@
│ │ │ │ │ └── Group: /b/B
│ │ │ │ │ Now we have a valid DataTree structure which contains all the data at each
│ │ │ │ │ different time frequency, stored in a separate group.
│ │ │ │ │ This is a useful way to organise our data because we can still operate on all
│ │ │ │ │ the groups at once. For example we can extract all three timeseries at a
│ │ │ │ │ specific lat-lon location:
│ │ │ │ │ In [100]: dt.sel(lat=75, lon=300)
│ │ │ │ │ -ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set
│ │ │ │ │ +ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set
│ │ │ │ │ ()
│ │ │ │ │ or compute the standard deviation of each timeseries to find out how it varies
│ │ │ │ │ with sampling frequency:
│ │ │ │ │ In [101]: dt.std(dim="time")
│ │ │ │ │ ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()
│ │ │ │ │ ******** CCoooorrddiinnaattee IInnhheerriittaannccee_?¶ ********
│ │ │ │ │ Notice that in the trees we constructed above there is some redundancy - the
│ │ │ │ │ @@ -1019,15 +1019,15 @@
│ │ │ │ │ coordinates, but explicitly mark them as such:
│ │ │ │ │ In [107]: print(dt["/daily"])
│ │ │ │ │ KeyError: 'Could not find node at /daily'
│ │ │ │ │ This helps to differentiate which variables are defined on the datatree node
│ │ │ │ │ that you are currently looking at, and which were defined somewhere above it.
│ │ │ │ │ We can also still perform all the same operations on the whole tree:
│ │ │ │ │ In [108]: dt.sel(lat=[75], lon=[300])
│ │ │ │ │ -ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set
│ │ │ │ │ +ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set
│ │ │ │ │ ()
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [109]: dt.std(dim="time")
│ │ │ │ │ ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()
│ │ │ │ │ _[_L_o_g_o_ _o_f_ _x_a_r_r_a_y_]
│ │ │ │ │ ************ _xx_aa_rr_rr_aa_yy ************
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html
│ │ │ │ @@ -653,15 +653,15 @@
│ │ │ │ to a collection specified weather station latitudes and longitudes.
│ │ │ │ To trigger vectorized indexing behavior
│ │ │ │ you will need to provide the selection dimensions with a new
│ │ │ │ shared output dimension name. In the example below, the selections
│ │ │ │ of the closest latitude and longitude are renamed to an output
│ │ │ │ dimension named “points”:
│ │ │ │ In [52]: ds = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa426a710>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe4f51710>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ # Define target latitude and longitude (where weather stations might be)
│ │ │ │ In [53]: target_lon = xr.DataArray([200, 201, 202, 205], dims="points")
│ │ │ │
│ │ │ │ In [54]: target_lat = xr.DataArray([31, 41, 42, 42], dims="points")
│ │ │ │
│ │ │ │ @@ -697,15 +697,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Assigning values with indexing
│ │ │ │ To select and assign values to a portion of a DataArray()
you
│ │ │ │ can use indexing with .loc
:
│ │ │ │ In [57]: ds = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa41fa9d0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe4ee99d0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ # add an empty 2D dataarray
│ │ │ │ In [58]: ds["empty"] = xr.full_like(ds.air.mean("time"), fill_value=0)
│ │ │ │ AttributeError: 'Dataset' object has no attribute 'air'
│ │ │ │
│ │ │ │
│ │ │ │ @@ -869,15 +869,15 @@
│ │ │ │
│ │ │ │
│ │ │ │ You can also assign values to all variables of a Dataset
at once:
│ │ │ │ In [83]: ds_org = xr.tutorial.open_dataset("eraint_uvz").isel(
│ │ │ │ ....: latitude=slice(56, 59), longitude=slice(255, 258), level=0
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/eraint_uvz.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa41faea0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/eraint_uvz.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe4ee9ea0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ # set all values to 0
│ │ │ │ In [84]: ds = xr.zeros_like(ds_org)
│ │ │ │ NameError: name 'ds_org' is not defined
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -475,15 +475,15 @@
│ │ │ │ │ vectorized indexing behavior you will need to provide the selection dimensions
│ │ │ │ │ with a new shared output dimension name. In the example below, the selections
│ │ │ │ │ of the closest latitude and longitude are renamed to an output dimension named
│ │ │ │ │ “points”:
│ │ │ │ │ In [52]: ds = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ # Define target latitude and longitude (where weather stations might be)
│ │ │ │ │ In [53]: target_lon = xr.DataArray([200, 201, 202, 205], dims="points")
│ │ │ │ │
│ │ │ │ │ @@ -515,15 +515,15 @@
│ │ │ │ │ dimensions with .loc/.sel). Otherwise, IndexError will be raised.
│ │ │ │ │ ********** AAssssiiggnniinngg vvaalluueess wwiitthh iinnddeexxiinngg_?¶ **********
│ │ │ │ │ To select and assign values to a portion of a DataArray() you can use indexing
│ │ │ │ │ with .loc :
│ │ │ │ │ In [57]: ds = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ # add an empty 2D dataarray
│ │ │ │ │ In [58]: ds["empty"] = xr.full_like(ds.air.mean("time"), fill_value=0)
│ │ │ │ │ AttributeError: 'Dataset' object has no attribute 'air'
│ │ │ │ │ @@ -677,15 +677,15 @@
│ │ │ │ │ You can also assign values to all variables of a Dataset at once:
│ │ │ │ │ In [83]: ds_org = xr.tutorial.open_dataset("eraint_uvz").isel(
│ │ │ │ │ ....: latitude=slice(56, 59), longitude=slice(255, 258), level=0
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/eraint_uvz.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ # set all values to 0
│ │ │ │ │ In [84]: ds = xr.zeros_like(ds_org)
│ │ │ │ │ NameError: name 'ds_org' is not defined
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html
│ │ │ │ @@ -237,24 +237,24 @@
│ │ │ │ ....: np.sin(np.linspace(0, 2 * np.pi, 10)),
│ │ │ │ ....: dims="x",
│ │ │ │ ....: coords={"x": np.linspace(0, 1, 10)},
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [17]: da.plot.line("o", label="original")
│ │ │ │ -Out[17]: [<matplotlib.lines.Line2D at 0xa86bdc90>]
│ │ │ │ +Out[17]: [<matplotlib.lines.Line2D at 0xe93acc90>]
│ │ │ │
│ │ │ │ In [18]: da.interp(x=np.linspace(0, 1, 100)).plot.line(label="linear (default)")
│ │ │ │ -Out[18]: [<matplotlib.lines.Line2D at 0xa86bdbe0>]
│ │ │ │ +Out[18]: [<matplotlib.lines.Line2D at 0xe93acbe0>]
│ │ │ │
│ │ │ │ In [19]: da.interp(x=np.linspace(0, 1, 100), method="cubic").plot.line(label="cubic")
│ │ │ │ -Out[19]: [<matplotlib.lines.Line2D at 0xa86bdb30>]
│ │ │ │ +Out[19]: [<matplotlib.lines.Line2D at 0xe93acb30>]
│ │ │ │
│ │ │ │ In [20]: plt.legend()
│ │ │ │ -Out[20]: <matplotlib.legend.Legend at 0xa8699258>
│ │ │ │ +Out[20]: <matplotlib.legend.Legend at 0xe9386258>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Additional keyword arguments can be passed to scipy’s functions.
│ │ │ │ # fill 0 for the outside of the original coordinates.
│ │ │ │ In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={"fill_value": 0.0})
│ │ │ │ @@ -439,15 +439,15 @@
│ │ │ │ see Missing values.
│ │ │ │
│ │ │ │
│ │ │ │ Example
│ │ │ │ Let’s see how interp()
works on real data.
│ │ │ │ # Raw data
│ │ │ │ In [44]: ds = xr.tutorial.open_dataset("air_temperature").isel(time=0)
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa8696920>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe9384920>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [45]: fig, axes = plt.subplots(ncols=2, figsize=(10, 4))
│ │ │ │
│ │ │ │ In [46]: ds.air.plot(ax=axes[0])
│ │ │ │ AttributeError: 'Dataset' object has no attribute 'air'
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -153,26 +153,26 @@
│ │ │ │ │ ....: np.sin(np.linspace(0, 2 * np.pi, 10)),
│ │ │ │ │ ....: dims="x",
│ │ │ │ │ ....: coords={"x": np.linspace(0, 1, 10)},
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [17]: da.plot.line("o", label="original")
│ │ │ │ │ -Out[17]: []
│ │ │ │ │ +Out[17]: []
│ │ │ │ │
│ │ │ │ │ In [18]: da.interp(x=np.linspace(0, 1, 100)).plot.line(label="linear
│ │ │ │ │ (default)")
│ │ │ │ │ -Out[18]: []
│ │ │ │ │ +Out[18]: []
│ │ │ │ │
│ │ │ │ │ In [19]: da.interp(x=np.linspace(0, 1, 100), method="cubic").plot.line
│ │ │ │ │ (label="cubic")
│ │ │ │ │ -Out[19]: []
│ │ │ │ │ +Out[19]: []
│ │ │ │ │
│ │ │ │ │ In [20]: plt.legend()
│ │ │ │ │ -Out[20]:
│ │ │ │ │ +Out[20]:
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_i_n_t_e_r_p_o_l_a_t_i_o_n___s_a_m_p_l_e_1_._p_n_g_]
│ │ │ │ │ Additional keyword arguments can be passed to scipy’s functions.
│ │ │ │ │ # fill 0 for the outside of the original coordinates.
│ │ │ │ │ In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={"fill_value": 0.0})
│ │ │ │ │ Out[21]:
│ │ │ │ │ Size: 80B
│ │ │ │ │ array([ 0. , 0. , 0. , 0.814, 0.604, -0.604, -0.814, 0. , 0. ,
│ │ │ │ │ @@ -337,15 +337,15 @@
│ │ │ │ │ For the details of interpolate_na(), see _M_i_s_s_i_n_g_ _v_a_l_u_e_s.
│ │ │ │ │ ********** EExxaammppllee_?¶ **********
│ │ │ │ │ Let’s see how interp() works on real data.
│ │ │ │ │ # Raw data
│ │ │ │ │ In [44]: ds = xr.tutorial.open_dataset("air_temperature").isel(time=0)
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [45]: fig, axes = plt.subplots(ncols=2, figsize=(10, 4))
│ │ │ │ │
│ │ │ │ │ In [46]: ds.air.plot(ax=axes[0])
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/io.html
│ │ │ │ @@ -630,15 +630,15 @@
│ │ │ │ ....: "y": pd.date_range("2000-01-01", periods=5),
│ │ │ │ ....: "z": ("x", list("abcd")),
│ │ │ │ ....: },
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [13]: ds.to_zarr("path/to/directory.zarr")
│ │ │ │ -Out[13]: <xarray.backends.zarr.ZarrStore at 0xa41dc1d8>
│ │ │ │ +Out[13]: <xarray.backends.zarr.ZarrStore at 0xe4ecc388>
│ │ │ │
│ │ │ │
│ │ │ │ (The suffix .zarr
is optional–just a reminder that a zarr store lives
│ │ │ │ there.) If the directory does not exist, it will be created. If a zarr
│ │ │ │ store is already present at that path, an error will be raised, preventing it
│ │ │ │ from being overwritten. To override this behavior and overwrite an existing
│ │ │ │ store, add mode='w'
when invoking to_zarr()
.
│ │ │ │ @@ -658,19 +658,19 @@
│ │ │ │ To read back a zarr dataset that has been created this way, we use the
│ │ │ │ open_zarr()
method:
│ │ │ │ In [14]: ds_zarr = xr.open_zarr("path/to/directory.zarr")
│ │ │ │
│ │ │ │ In [15]: ds_zarr
│ │ │ │ Out[15]:
│ │ │ │ <xarray.Dataset> Size: 232B
│ │ │ │ -Dimensions: (x: 4, y: 5)
│ │ │ │ +Dimensions: (y: 5, x: 4)
│ │ │ │ Coordinates:
│ │ │ │ + * y (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05
│ │ │ │ z (x) object 16B dask.array<chunksize=(4,), meta=np.ndarray>
│ │ │ │ * x (x) int32 16B 10 20 30 40
│ │ │ │ - * y (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05
│ │ │ │ Data variables:
│ │ │ │ foo (x, y) float64 160B dask.array<chunksize=(4, 5), meta=np.ndarray>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Cloud Storage Buckets
│ │ │ │ It is possible to read and write xarray datasets directly from / to cloud
│ │ │ │ @@ -724,36 +724,36 @@
│ │ │ │
│ │ │ │ In [18]: ds = xr.Dataset({"foo": ("x", dummies)}, coords={"x": np.arange(30)})
│ │ │ │
│ │ │ │ In [19]: path = "path/to/directory.zarr"
│ │ │ │
│ │ │ │ # Now we write the metadata without computing any array values
│ │ │ │ In [20]: ds.to_zarr(path, compute=False)
│ │ │ │ -Out[20]: Delayed('_finalize_store-1c72ec39-b37c-4a61-b665-c8afb4b44923')
│ │ │ │ +Out[20]: Delayed('_finalize_store-f37e47b2-f3f2-443e-9089-a5cf5e5ab508')
│ │ │ │
│ │ │ │
│ │ │ │ Now, a Zarr store with the correct variable shapes and attributes exists that
│ │ │ │ can be filled out by subsequent calls to to_zarr
.
│ │ │ │ Setting region="auto"
will open the existing store and determine the
│ │ │ │ correct alignment of the new data with the existing dimensions, or as an
│ │ │ │ explicit mapping from dimension names to Python slice
objects indicating
│ │ │ │ where the data should be written (in index space, not label space), e.g.,
│ │ │ │ # For convenience, we'll slice a single dataset, but in the real use-case
│ │ │ │ # we would create them separately possibly even from separate processes.
│ │ │ │ In [21]: ds = xr.Dataset({"foo": ("x", np.arange(30))}, coords={"x": np.arange(30)})
│ │ │ │
│ │ │ │ # Any of the following region specifications are valid
│ │ │ │ In [22]: ds.isel(x=slice(0, 10)).to_zarr(path, region="auto")
│ │ │ │ -Out[22]: <xarray.backends.zarr.ZarrStore at 0xa3c552f8>
│ │ │ │ +Out[22]: <xarray.backends.zarr.ZarrStore at 0xe49462f8>
│ │ │ │
│ │ │ │ In [23]: ds.isel(x=slice(10, 20)).to_zarr(path, region={"x": "auto"})
│ │ │ │ -Out[23]: <xarray.backends.zarr.ZarrStore at 0xa85e6bb0>
│ │ │ │ +Out[23]: <xarray.backends.zarr.ZarrStore at 0xe4946c88>
│ │ │ │
│ │ │ │ In [24]: ds.isel(x=slice(20, 30)).to_zarr(path, region={"x": slice(20, 30)})
│ │ │ │ -Out[24]: <xarray.backends.zarr.ZarrStore at 0xa41c3d60>
│ │ │ │ +Out[24]: <xarray.backends.zarr.ZarrStore at 0xe4f44ec8>
│ │ │ │
│ │ │ │
│ │ │ │ Concurrent writes with region
are safe as long as they modify distinct
│ │ │ │ chunks in the underlying Zarr arrays (or use an appropriate lock
).
│ │ │ │ As a safety check to make it harder to inadvertently override existing values,
│ │ │ │ if you set region
then all variables included in a Dataset must have
│ │ │ │ dimensions included in region
. Other variables (typically coordinates)
│ │ │ │ @@ -816,28 +816,28 @@
│ │ │ │ ....: "y": [1, 2, 3, 4, 5],
│ │ │ │ ....: "t": pd.date_range("2001-01-01", periods=2),
│ │ │ │ ....: },
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [30]: ds1.to_zarr("path/to/directory.zarr")
│ │ │ │ -Out[30]: <xarray.backends.zarr.ZarrStore at 0xa3869f58>
│ │ │ │ +Out[30]: <xarray.backends.zarr.ZarrStore at 0xe455af10>
│ │ │ │
│ │ │ │ In [31]: ds2 = xr.Dataset(
│ │ │ │ ....: {"foo": (("x", "y", "t"), np.random.rand(4, 5, 2))},
│ │ │ │ ....: coords={
│ │ │ │ ....: "x": [10, 20, 30, 40],
│ │ │ │ ....: "y": [1, 2, 3, 4, 5],
│ │ │ │ ....: "t": pd.date_range("2001-01-03", periods=2),
│ │ │ │ ....: },
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [32]: ds2.to_zarr("path/to/directory.zarr", append_dim="t")
│ │ │ │ -Out[32]: <xarray.backends.zarr.ZarrStore at 0xa3879580>
│ │ │ │ +Out[32]: <xarray.backends.zarr.ZarrStore at 0xe93b93d0>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Specifying chunks in a zarr store
│ │ │ │ Chunk sizes may be specified in one of three ways when writing to a zarr store:
│ │ │ │
│ │ │ │ @@ -861,15 +861,15 @@
│ │ │ │ positional ordering of the dimensions in each array. Watch out for arrays with
│ │ │ │ differently-ordered dimensions within a single Dataset.
│ │ │ │
│ │ │ │ For example, let’s say we’re working with a dataset with dimensions
│ │ │ │ ('time', 'x', 'y')
, a variable Tair
which is chunked in x
and y
,
│ │ │ │ and two multi-dimensional coordinates xc
and yc
:
│ │ │ │ In [33]: ds = xr.tutorial.open_dataset("rasm")
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa3c8cf50>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe497ef50>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [34]: ds["Tair"] = ds["Tair"].chunk({"x": 100, "y": 100})
│ │ │ │ KeyError: "No variable named 'Tair'. Variables on the dataset include ['foo', 'x']"
│ │ │ │
│ │ │ │
│ │ │ │ In [35]: ds
│ │ │ │ @@ -882,15 +882,15 @@
│ │ │ │ foo (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29
│ │ │ │
│ │ │ │
│ │ │ │ These multi-dimensional coordinates are only two-dimensional and take up very little
│ │ │ │ space on disk or in memory, yet when writing to disk the default zarr behavior is to
│ │ │ │ split them into chunks:
│ │ │ │ In [36]: ds.to_zarr("path/to/directory.zarr", mode="w")
│ │ │ │ -Out[36]: <xarray.backends.zarr.ZarrStore at 0xa3c5bad8>
│ │ │ │ +Out[36]: <xarray.backends.zarr.ZarrStore at 0xe45a2418>
│ │ │ │
│ │ │ │ In [37]: ! ls -R path/to/directory.zarr
│ │ │ │ path/to/directory.zarr:
│ │ │ │ foo x zarr.json
│ │ │ │
│ │ │ │ path/to/directory.zarr/foo:
│ │ │ │ c zarr.json
│ │ │ │ @@ -1081,15 +1081,15 @@
│ │ │ │ Ncdata
│ │ │ │ Ncdata provides more sophisticated means of transferring data, including entire
│ │ │ │ datasets. It uses the file saving and loading functions in both projects to provide a
│ │ │ │ more “correct” translation between them, but still with very low overhead and not
│ │ │ │ using actual disk files.
│ │ │ │ For example:
│ │ │ │ In [48]: ds = xr.tutorial.open_dataset("air_temperature_gradient")
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature_gradient.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa3bc5030>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature_gradient.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe48b6030>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [49]: cubes = ncdata.iris_xarray.cubes_from_xarray(ds)
│ │ │ │ NameError: name 'ncdata' is not defined
│ │ │ │
│ │ │ │
│ │ │ │ In [50]: print(cubes)
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -481,15 +481,15 @@
│ │ │ │ │ ....: "y": pd.date_range("2000-01-01", periods=5),
│ │ │ │ │ ....: "z": ("x", list("abcd")),
│ │ │ │ │ ....: },
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [13]: ds.to_zarr("path/to/directory.zarr")
│ │ │ │ │ -Out[13]:
│ │ │ │ │ +Out[13]:
│ │ │ │ │ (The suffix .zarr is optional–just a reminder that a zarr store lives there.)
│ │ │ │ │ If the directory does not exist, it will be created. If a zarr store is already
│ │ │ │ │ present at that path, an error will be raised, preventing it from being
│ │ │ │ │ overwritten. To override this behavior and overwrite an existing store, add
│ │ │ │ │ mode='w' when invoking to_zarr().
│ │ │ │ │ DataArrays can also be saved to disk using the DataArray.to_zarr() method, and
│ │ │ │ │ loaded from disk using the open_dataarray() function with engine='zarr'.
│ │ │ │ │ @@ -505,19 +505,19 @@
│ │ │ │ │ To read back a zarr dataset that has been created this way, we use the
│ │ │ │ │ open_zarr() method:
│ │ │ │ │ In [14]: ds_zarr = xr.open_zarr("path/to/directory.zarr")
│ │ │ │ │
│ │ │ │ │ In [15]: ds_zarr
│ │ │ │ │ Out[15]:
│ │ │ │ │ Size: 232B
│ │ │ │ │ -Dimensions: (x: 4, y: 5)
│ │ │ │ │ +Dimensions: (y: 5, x: 4)
│ │ │ │ │ Coordinates:
│ │ │ │ │ + * y (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05
│ │ │ │ │ z (x) object 16B dask.array
│ │ │ │ │ * x (x) int32 16B 10 20 30 40
│ │ │ │ │ - * y (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05
│ │ │ │ │ Data variables:
│ │ │ │ │ foo (x, y) float64 160B dask.array
│ │ │ │ │ ******** CClloouudd SSttoorraaggee BBuucckkeettss_?¶ ********
│ │ │ │ │ It is possible to read and write xarray datasets directly from / to cloud
│ │ │ │ │ storage buckets using zarr. This example uses the _g_c_s_f_s package to provide an
│ │ │ │ │ interface to _G_o_o_g_l_e_ _C_l_o_u_d_ _S_t_o_r_a_g_e.
│ │ │ │ │ General _f_s_s_p_e_c URLs, those that begin with s3:// or gcs:// for example, are
│ │ │ │ │ @@ -562,35 +562,35 @@
│ │ │ │ │
│ │ │ │ │ In [18]: ds = xr.Dataset({"foo": ("x", dummies)}, coords={"x": np.arange(30)})
│ │ │ │ │
│ │ │ │ │ In [19]: path = "path/to/directory.zarr"
│ │ │ │ │
│ │ │ │ │ # Now we write the metadata without computing any array values
│ │ │ │ │ In [20]: ds.to_zarr(path, compute=False)
│ │ │ │ │ -Out[20]: Delayed('_finalize_store-1c72ec39-b37c-4a61-b665-c8afb4b44923')
│ │ │ │ │ +Out[20]: Delayed('_finalize_store-f37e47b2-f3f2-443e-9089-a5cf5e5ab508')
│ │ │ │ │ Now, a Zarr store with the correct variable shapes and attributes exists that
│ │ │ │ │ can be filled out by subsequent calls to to_zarr. Setting region="auto" will
│ │ │ │ │ open the existing store and determine the correct alignment of the new data
│ │ │ │ │ with the existing dimensions, or as an explicit mapping from dimension names to
│ │ │ │ │ Python slice objects indicating where the data should be written (in index
│ │ │ │ │ space, not label space), e.g.,
│ │ │ │ │ # For convenience, we'll slice a single dataset, but in the real use-case
│ │ │ │ │ # we would create them separately possibly even from separate processes.
│ │ │ │ │ In [21]: ds = xr.Dataset({"foo": ("x", np.arange(30))}, coords={"x": np.arange
│ │ │ │ │ (30)})
│ │ │ │ │
│ │ │ │ │ # Any of the following region specifications are valid
│ │ │ │ │ In [22]: ds.isel(x=slice(0, 10)).to_zarr(path, region="auto")
│ │ │ │ │ -Out[22]:
│ │ │ │ │ +Out[22]:
│ │ │ │ │
│ │ │ │ │ In [23]: ds.isel(x=slice(10, 20)).to_zarr(path, region={"x": "auto"})
│ │ │ │ │ -Out[23]:
│ │ │ │ │ +Out[23]:
│ │ │ │ │
│ │ │ │ │ In [24]: ds.isel(x=slice(20, 30)).to_zarr(path, region={"x": slice(20, 30)})
│ │ │ │ │ -Out[24]:
│ │ │ │ │ +Out[24]:
│ │ │ │ │ Concurrent writes with region are safe as long as they modify distinct chunks
│ │ │ │ │ in the underlying Zarr arrays (or use an appropriate lock).
│ │ │ │ │ As a safety check to make it harder to inadvertently override existing values,
│ │ │ │ │ if you set region then aallll variables included in a Dataset must have dimensions
│ │ │ │ │ included in region. Other variables (typically coordinates) need to be
│ │ │ │ │ explicitly dropped and/or written in a separate calls to to_zarr with mode='a'.
│ │ │ │ │ ******** ZZaarrrr CCoommpprreessssoorrss aanndd FFiilltteerrss_?¶ ********
│ │ │ │ │ @@ -636,28 +636,28 @@
│ │ │ │ │ ....: "y": [1, 2, 3, 4, 5],
│ │ │ │ │ ....: "t": pd.date_range("2001-01-01", periods=2),
│ │ │ │ │ ....: },
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [30]: ds1.to_zarr("path/to/directory.zarr")
│ │ │ │ │ -Out[30]:
│ │ │ │ │ +Out[30]:
│ │ │ │ │
│ │ │ │ │ In [31]: ds2 = xr.Dataset(
│ │ │ │ │ ....: {"foo": (("x", "y", "t"), np.random.rand(4, 5, 2))},
│ │ │ │ │ ....: coords={
│ │ │ │ │ ....: "x": [10, 20, 30, 40],
│ │ │ │ │ ....: "y": [1, 2, 3, 4, 5],
│ │ │ │ │ ....: "t": pd.date_range("2001-01-03", periods=2),
│ │ │ │ │ ....: },
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [32]: ds2.to_zarr("path/to/directory.zarr", append_dim="t")
│ │ │ │ │ -Out[32]:
│ │ │ │ │ +Out[32]:
│ │ │ │ │ ******** SSppeecciiffyyiinngg cchhuunnkkss iinn aa zzaarrrr ssttoorree_?¶ ********
│ │ │ │ │ Chunk sizes may be specified in one of three ways when writing to a zarr store:
│ │ │ │ │ 1. Manual chunk sizing through the use of the encoding argument in
│ │ │ │ │ Dataset.to_zarr():
│ │ │ │ │ 2. Automatic chunking based on chunks in dask arrays
│ │ │ │ │ 3. Default chunk behavior determined by the zarr library
│ │ │ │ │ The resulting chunks will be determined based on the order of the above list;
│ │ │ │ │ @@ -677,15 +677,15 @@
│ │ │ │ │ differently-ordered dimensions within a single Dataset.
│ │ │ │ │ For example, let’s say we’re working with a dataset with dimensions ('time',
│ │ │ │ │ 'x', 'y'), a variable Tair which is chunked in x and y, and two multi-
│ │ │ │ │ dimensional coordinates xc and yc:
│ │ │ │ │ In [33]: ds = xr.tutorial.open_dataset("rasm")
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/rasm.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [34]: ds["Tair"] = ds["Tair"].chunk({"x": 100, "y": 100})
│ │ │ │ │ KeyError: "No variable named 'Tair'. Variables on the dataset include ['foo',
│ │ │ │ │ 'x']"
│ │ │ │ │ @@ -699,15 +699,15 @@
│ │ │ │ │ * x (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29
│ │ │ │ │ Data variables:
│ │ │ │ │ foo (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29
│ │ │ │ │ These multi-dimensional coordinates are only two-dimensional and take up very
│ │ │ │ │ little space on disk or in memory, yet when writing to disk the default zarr
│ │ │ │ │ behavior is to split them into chunks:
│ │ │ │ │ In [36]: ds.to_zarr("path/to/directory.zarr", mode="w")
│ │ │ │ │ -Out[36]:
│ │ │ │ │ +Out[36]:
│ │ │ │ │
│ │ │ │ │ In [37]: ! ls -R path/to/directory.zarr
│ │ │ │ │ path/to/directory.zarr:
│ │ │ │ │ foo x zarr.json
│ │ │ │ │
│ │ │ │ │ path/to/directory.zarr/foo:
│ │ │ │ │ c zarr.json
│ │ │ │ │ @@ -874,15 +874,15 @@
│ │ │ │ │ provide a more “correct” translation between them, but still with very low
│ │ │ │ │ overhead and not using actual disk files.
│ │ │ │ │ For example:
│ │ │ │ │ In [48]: ds = xr.tutorial.open_dataset("air_temperature_gradient")
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature_gradient.nc
│ │ │ │ │ (Caused by NameResolutionError(": Failed to resolve 'github.com' ([Errno -3] Temporary failure in
│ │ │ │ │ +0xe48b6030>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in
│ │ │ │ │ name resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [49]: cubes = ncdata.iris_xarray.cubes_from_xarray(ds)
│ │ │ │ │ NameError: name 'ncdata' is not defined
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html
│ │ │ │ @@ -100,15 +100,15 @@
│ │ │ │ In [3]: import matplotlib.pyplot as plt
│ │ │ │
│ │ │ │ In [4]: import xarray as xr
│ │ │ │
│ │ │ │
│ │ │ │ For these examples we’ll use the North American air temperature dataset.
│ │ │ │ In [5]: airtemps = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa22980e0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe2f870e0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [6]: airtemps
│ │ │ │ NameError: name 'airtemps' is not defined
│ │ │ │
│ │ │ │
│ │ │ │ # Convert to celsius
│ │ │ │ @@ -445,15 +445,15 @@
│ │ │ │
│ │ │ │ # Apply a nonlinear transformation to one of the coords
│ │ │ │ In [50]: b.coords["lat"] = np.log(b.coords["lat"])
│ │ │ │ KeyError: 'lat'
│ │ │ │
│ │ │ │
│ │ │ │ In [51]: b.plot()
│ │ │ │ -Out[51]: [<matplotlib.lines.Line2D at 0xa2087710>]
│ │ │ │ +Out[51]: [<matplotlib.lines.Line2D at 0xe2d78710>]
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Other types of plot
│ │ │ │ @@ -857,117 +857,117 @@
│ │ │ │ * y (y) float64 88B 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
│ │ │ │ * z (z) int32 16B 0 1 2 3
│ │ │ │ * w (w) <U5 80B 'one' 'two' 'three' 'five'
│ │ │ │ Attributes:
│ │ │ │ units: Aunits
│ │ │ │
│ │ │ │ In [99]: ds.A.plot.scatter(x="y")
│ │ │ │ -Out[99]: <matplotlib.collections.PathCollection at 0xa419a760>
│ │ │ │ +Out[99]: <matplotlib.collections.PathCollection at 0xe4e8d760>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Same plot can be displayed using the dataset:
│ │ │ │ In [100]: ds.plot.scatter(x="y", y="A")
│ │ │ │ -Out[100]: <matplotlib.collections.PathCollection at 0xa1ec4500>
│ │ │ │ +Out[100]: <matplotlib.collections.PathCollection at 0xe2bb6500>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Now suppose we want to scatter the A
DataArray against the B
DataArray
│ │ │ │ In [101]: ds.plot.scatter(x="A", y="B")
│ │ │ │ -Out[101]: <matplotlib.collections.PathCollection at 0xa21fe2f0>
│ │ │ │ +Out[101]: <matplotlib.collections.PathCollection at 0xe2eed2f0>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ The hue
kwarg lets you vary the color by variable value
│ │ │ │ In [102]: ds.plot.scatter(x="A", y="B", hue="w")
│ │ │ │ -Out[102]: <matplotlib.collections.PathCollection at 0xa1eb6710>
│ │ │ │ +Out[102]: <matplotlib.collections.PathCollection at 0xe2ba6710>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ You can force a legend instead of a colorbar by setting add_legend=True, add_colorbar=False
.
│ │ │ │ In [103]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=True, add_colorbar=False)
│ │ │ │ -Out[103]: <matplotlib.collections.PathCollection at 0xa1d25240>
│ │ │ │ +Out[103]: <matplotlib.collections.PathCollection at 0xe2a10030>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ In [104]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=False, add_colorbar=True)
│ │ │ │ -Out[104]: <matplotlib.collections.PathCollection at 0xa1cdf500>
│ │ │ │ +Out[104]: <matplotlib.collections.PathCollection at 0xe29cf500>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ The markersize
kwarg lets you vary the point’s size by variable value.
│ │ │ │ You can additionally pass size_norm
to control how the variable’s values are mapped to point sizes.
│ │ │ │ In [105]: ds.plot.scatter(x="A", y="B", hue="y", markersize="z")
│ │ │ │ -Out[105]: <matplotlib.collections.PathCollection at 0xa1c79ea0>
│ │ │ │ +Out[105]: <matplotlib.collections.PathCollection at 0xe2969ea0>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ The z
kwarg lets you plot the data along the z-axis as well.
│ │ │ │ In [106]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x")
│ │ │ │ -Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0xa1bdc190>
│ │ │ │ +Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0xe28ca190>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Faceting is also possible
│ │ │ │ In [107]: ds.plot.scatter(x="A", y="B", hue="y", markersize="x", row="x", col="w")
│ │ │ │ -Out[107]: <xarray.plot.facetgrid.FacetGrid at 0xa3885dd8>
│ │ │ │ +Out[107]: <xarray.plot.facetgrid.FacetGrid at 0xe4574dd8>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ And adding the z-axis
│ │ │ │ In [108]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x", row="x", col="w")
│ │ │ │ -Out[108]: <xarray.plot.facetgrid.FacetGrid at 0xa1671660>
│ │ │ │ +Out[108]: <xarray.plot.facetgrid.FacetGrid at 0xe2360660>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ For more advanced scatter plots, we recommend converting the relevant data variables
│ │ │ │ to a pandas DataFrame and using the extensive plotting capabilities of seaborn
.
│ │ │ │
│ │ │ │
│ │ │ │ Quiver
│ │ │ │ Visualizing vector fields is supported with quiver plots:
│ │ │ │ In [109]: ds.isel(w=1, z=1).plot.quiver(x="x", y="y", u="A", v="B")
│ │ │ │ -Out[109]: <matplotlib.quiver.Quiver at 0xa419a538>
│ │ │ │ +Out[109]: <matplotlib.quiver.Quiver at 0xe4e8d538>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ where u
and v
denote the x and y direction components of the arrow vectors. Again, faceting is also possible:
│ │ │ │ In [110]: ds.plot.quiver(x="x", y="y", u="A", v="B", col="w", row="z", scale=4)
│ │ │ │ -Out[110]: <xarray.plot.facetgrid.FacetGrid at 0xa3ea9618>
│ │ │ │ +Out[110]: <xarray.plot.facetgrid.FacetGrid at 0xe4d7d618>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ scale
is required for faceted quiver plots.
│ │ │ │ The scale determines the number of data units per arrow length unit, i.e. a smaller scale parameter makes the arrow longer.
│ │ │ │
│ │ │ │
│ │ │ │ Streamplot
│ │ │ │ Visualizing vector fields is also supported with streamline plots:
│ │ │ │ In [111]: ds.isel(w=1, z=1).plot.streamplot(x="x", y="y", u="A", v="B")
│ │ │ │ -Out[111]: <matplotlib.collections.LineCollection at 0xa185e9d0>
│ │ │ │ +Out[111]: <matplotlib.collections.LineCollection at 0xe254d9d0>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ where u
and v
denote the x and y direction components of the vectors tangent to the streamlines.
│ │ │ │ Again, faceting is also possible:
│ │ │ │ In [112]: ds.plot.streamplot(x="x", y="y", u="A", v="B", col="w", row="z")
│ │ │ │ -Out[112]: <xarray.plot.facetgrid.FacetGrid at 0xa38988b8>
│ │ │ │ +Out[112]: <xarray.plot.facetgrid.FacetGrid at 0xe45858b8>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Maps
│ │ │ │ To follow this section you’ll need to have Cartopy installed and working.
│ │ │ │ This script will plot the air temperature on a map.
│ │ │ │ In [113]: import cartopy.crs as ccrs
│ │ │ │
│ │ │ │ In [114]: air = xr.tutorial.open_dataset("air_temperature").air
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa1799be0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe248abe0>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [115]: p = air.isel(time=0).plot(
│ │ │ │ .....: subplot_kws=dict(projection=ccrs.Orthographic(-80, 35), facecolor="gray"),
│ │ │ │ .....: transform=ccrs.PlateCarree(),
│ │ │ │ .....: )
│ │ │ │ .....:
│ │ │ │ @@ -1024,24 +1024,24 @@
│ │ │ │ In [121]: import xarray.plot as xplt
│ │ │ │
│ │ │ │ In [122]: da = xr.DataArray(range(5))
│ │ │ │
│ │ │ │ In [123]: fig, axs = plt.subplots(ncols=2, nrows=2)
│ │ │ │
│ │ │ │ In [124]: da.plot(ax=axs[0, 0])
│ │ │ │ -Out[124]: [<matplotlib.lines.Line2D at 0xa0f04870>]
│ │ │ │ +Out[124]: [<matplotlib.lines.Line2D at 0xe1bf6870>]
│ │ │ │
│ │ │ │ In [125]: da.plot.line(ax=axs[0, 1])
│ │ │ │ -Out[125]: [<matplotlib.lines.Line2D at 0xa0f04920>]
│ │ │ │ +Out[125]: [<matplotlib.lines.Line2D at 0xe1bf6920>]
│ │ │ │
│ │ │ │ In [126]: xplt.plot(da, ax=axs[1, 0])
│ │ │ │ -Out[126]: [<matplotlib.lines.Line2D at 0xa0f049d0>]
│ │ │ │ +Out[126]: [<matplotlib.lines.Line2D at 0xe1bf69d0>]
│ │ │ │
│ │ │ │ In [127]: xplt.line(da, ax=axs[1, 1])
│ │ │ │ -Out[127]: [<matplotlib.lines.Line2D at 0xa0f04a80>]
│ │ │ │ +Out[127]: [<matplotlib.lines.Line2D at 0xe1bf6a80>]
│ │ │ │
│ │ │ │ In [128]: plt.tight_layout()
│ │ │ │
│ │ │ │ In [129]: plt.draw()
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -1091,15 +1091,15 @@
│ │ │ │
│ │ │ │
The plot will produce an image corresponding to the values of the array.
│ │ │ │ Hence the top left pixel will be a different color than the others.
│ │ │ │ Before reading on, you may want to look at the coordinates and
│ │ │ │ think carefully about what the limits, labels, and orientation for
│ │ │ │ each of the axes should be.
│ │ │ │
In [134]: a.plot()
│ │ │ │ -Out[134]: <matplotlib.collections.QuadMesh at 0xa17ad500>
│ │ │ │ +Out[134]: <matplotlib.collections.QuadMesh at 0xe249d500>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
It may seem strange that
│ │ │ │ the values on the y axis are decreasing with -0.5 on the top. This is because
│ │ │ │ the pixels are centered over their coordinates, and the
│ │ │ │ @@ -1122,57 +1122,57 @@
│ │ │ │ .....: np.arange(20).reshape(4, 5),
│ │ │ │ .....: dims=["y", "x"],
│ │ │ │ .....: coords={"lat": (("y", "x"), lat), "lon": (("y", "x"), lon)},
│ │ │ │ .....: )
│ │ │ │ .....:
│ │ │ │
│ │ │ │ In [139]: da.plot.pcolormesh(x="lon", y="lat")
│ │ │ │ -Out[139]: <matplotlib.collections.QuadMesh at 0xa18ddc90>
│ │ │ │ +Out[139]: <matplotlib.collections.QuadMesh at 0xe25cec90>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Note that in this case, xarray still follows the pixel centered convention.
│ │ │ │ This might be undesirable in some cases, for example when your data is defined
│ │ │ │ on a polar projection (GH781). This is why the default is to not follow
│ │ │ │ this convention when plotting on a map:
│ │ │ │ In [140]: import cartopy.crs as ccrs
│ │ │ │
│ │ │ │ In [141]: ax = plt.subplot(projection=ccrs.PlateCarree())
│ │ │ │
│ │ │ │ In [142]: da.plot.pcolormesh(x="lon", y="lat", ax=ax)
│ │ │ │ -Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xa0f04df0>
│ │ │ │ +Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xe1bf6df0>
│ │ │ │
│ │ │ │ In [143]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())
│ │ │ │ -Out[143]: <matplotlib.collections.PathCollection at 0xa11165b0>
│ │ │ │ +Out[143]: <matplotlib.collections.PathCollection at 0xe1e095b0>
│ │ │ │
│ │ │ │ In [144]: ax.coastlines()
│ │ │ │ -Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0xa8687f48>
│ │ │ │ +Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0xe9376f48>
│ │ │ │
│ │ │ │ In [145]: ax.gridlines(draw_labels=True)
│ │ │ │ -Out[145]: <cartopy.mpl.gridliner.Gridliner at 0xa8687480>
│ │ │ │ +Out[145]: <cartopy.mpl.gridliner.Gridliner at 0xe9376480>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ You can however decide to infer the cell boundaries and use the
│ │ │ │ infer_intervals
keyword:
│ │ │ │ In [146]: ax = plt.subplot(projection=ccrs.PlateCarree())
│ │ │ │
│ │ │ │ In [147]: da.plot.pcolormesh(x="lon", y="lat", ax=ax, infer_intervals=True)
│ │ │ │ -Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xa0d64d40>
│ │ │ │ +Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xe19efd40>
│ │ │ │
│ │ │ │ In [148]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())
│ │ │ │ -Out[148]: <matplotlib.collections.PathCollection at 0xa0d4fbe0>
│ │ │ │ +Out[148]: <matplotlib.collections.PathCollection at 0xe1a60be0>
│ │ │ │
│ │ │ │ In [149]: ax.coastlines()
│ │ │ │ -Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0xa0d4fc90>
│ │ │ │ +Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0xe1a60c90>
│ │ │ │
│ │ │ │ In [150]: ax.gridlines(draw_labels=True)
│ │ │ │ -Out[150]: <cartopy.mpl.gridliner.Gridliner at 0xa0d4fd40>
│ │ │ │ +Out[150]: <cartopy.mpl.gridliner.Gridliner at 0xe1a60d40>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Note
│ │ │ │
The data model of xarray does not support datasets with cell boundaries
│ │ │ │ @@ -1180,26 +1180,26 @@
│ │ │ │ outside the xarray framework.
│ │ │ │
│ │ │ │ One can also make line plots with multidimensional coordinates. In this case, hue
must be a dimension name, not a coordinate name.
│ │ │ │ In [151]: f, ax = plt.subplots(2, 1)
│ │ │ │
│ │ │ │ In [152]: da.plot.line(x="lon", hue="y", ax=ax[0])
│ │ │ │ Out[152]:
│ │ │ │ -[<matplotlib.lines.Line2D at 0xa0d4f030>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e119d0>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e11920>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e11870>]
│ │ │ │ +[<matplotlib.lines.Line2D at 0xe1a60030>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1aee870>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1aee920>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1aee9d0>]
│ │ │ │
│ │ │ │ In [153]: da.plot.line(x="lon", hue="x", ax=ax[1])
│ │ │ │ Out[153]:
│ │ │ │ -[<matplotlib.lines.Line2D at 0xa0e03d40>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e03df0>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e03ea0>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0e03f50>,
│ │ │ │ - <matplotlib.lines.Line2D at 0xa0db2030>]
│ │ │ │ +[<matplotlib.lines.Line2D at 0xe1b20240>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1b20190>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1b200e0>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1b20030>,
│ │ │ │ + <matplotlib.lines.Line2D at 0xe1b10030>]
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -31,15 +31,15 @@
│ │ │ │ │ In [3]: import matplotlib.pyplot as plt
│ │ │ │ │
│ │ │ │ │ In [4]: import xarray as xr
│ │ │ │ │ For these examples we’ll use the North American air temperature dataset.
│ │ │ │ │ In [5]: airtemps = xr.tutorial.open_dataset("air_temperature")
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [6]: airtemps
│ │ │ │ │ NameError: name 'airtemps' is not defined
│ │ │ │ │
│ │ │ │ │ @@ -294,15 +294,15 @@
│ │ │ │ │
│ │ │ │ │ # Apply a nonlinear transformation to one of the coords
│ │ │ │ │ In [50]: b.coords["lat"] = np.log(b.coords["lat"])
│ │ │ │ │ KeyError: 'lat'
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [51]: b.plot()
│ │ │ │ │ -Out[51]: []
│ │ │ │ │ +Out[51]: []
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_p_l_o_t_t_i_n_g___n_o_n_u_n_i_f_o_r_m___c_o_o_r_d_s_._p_n_g_]
│ │ │ │ │ ****** OOtthheerr ttyyppeess ooff pplloott_?¶ ******
│ │ │ │ │ There are several other options for plotting 2D data.
│ │ │ │ │ Contour plot using DataArray.plot.contour()
│ │ │ │ │ In [52]: air2d.plot.contour()
│ │ │ │ │ NameError: name 'air2d' is not defined
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_p_l_o_t_t_i_n_g___c_o_n_t_o_u_r_._p_n_g_]
│ │ │ │ │ @@ -615,93 +615,93 @@
│ │ │ │ │ * y (y) float64 88B 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
│ │ │ │ │ * z (z) int32 16B 0 1 2 3
│ │ │ │ │ * w (w)
│ │ │ │ │ +Out[99]:
│ │ │ │ │ [../_images/da_A_y.png]
│ │ │ │ │ Same plot can be displayed using the dataset:
│ │ │ │ │ In [100]: ds.plot.scatter(x="y", y="A")
│ │ │ │ │ -Out[100]:
│ │ │ │ │ +Out[100]:
│ │ │ │ │ [../_images/ds_A_y.png]
│ │ │ │ │ Now suppose we want to scatter the A DataArray against the B DataArray
│ │ │ │ │ In [101]: ds.plot.scatter(x="A", y="B")
│ │ │ │ │ -Out[101]:
│ │ │ │ │ +Out[101]:
│ │ │ │ │ [../_images/ds_simple_scatter.png]
│ │ │ │ │ The hue kwarg lets you vary the color by variable value
│ │ │ │ │ In [102]: ds.plot.scatter(x="A", y="B", hue="w")
│ │ │ │ │ -Out[102]:
│ │ │ │ │ +Out[102]:
│ │ │ │ │ [../_images/ds_hue_scatter.png]
│ │ │ │ │ You can force a legend instead of a colorbar by setting add_legend=True,
│ │ │ │ │ add_colorbar=False.
│ │ │ │ │ In [103]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=True,
│ │ │ │ │ add_colorbar=False)
│ │ │ │ │ -Out[103]:
│ │ │ │ │ +Out[103]:
│ │ │ │ │ [../_images/ds_discrete_legend_hue_scatter.png]
│ │ │ │ │ In [104]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=False,
│ │ │ │ │ add_colorbar=True)
│ │ │ │ │ -Out[104]:
│ │ │ │ │ +Out[104]:
│ │ │ │ │ [../_images/ds_discrete_colorbar_hue_scatter.png]
│ │ │ │ │ The markersize kwarg lets you vary the point’s size by variable value. You can
│ │ │ │ │ additionally pass size_norm to control how the variable’s values are mapped to
│ │ │ │ │ point sizes.
│ │ │ │ │ In [105]: ds.plot.scatter(x="A", y="B", hue="y", markersize="z")
│ │ │ │ │ -Out[105]:
│ │ │ │ │ +Out[105]:
│ │ │ │ │ [../_images/ds_hue_size_scatter.png]
│ │ │ │ │ The z kwarg lets you plot the data along the z-axis as well.
│ │ │ │ │ In [106]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x")
│ │ │ │ │ -Out[106]:
│ │ │ │ │ +Out[106]:
│ │ │ │ │ [../_images/ds_hue_size_scatter_z.png]
│ │ │ │ │ Faceting is also possible
│ │ │ │ │ In [107]: ds.plot.scatter(x="A", y="B", hue="y", markersize="x", row="x",
│ │ │ │ │ col="w")
│ │ │ │ │ -Out[107]:
│ │ │ │ │ +Out[107]:
│ │ │ │ │ [../_images/ds_facet_scatter.png]
│ │ │ │ │ And adding the z-axis
│ │ │ │ │ In [108]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x",
│ │ │ │ │ row="x", col="w")
│ │ │ │ │ -Out[108]:
│ │ │ │ │ +Out[108]:
│ │ │ │ │ [../_images/ds_facet_scatter_z.png]
│ │ │ │ │ For more advanced scatter plots, we recommend converting the relevant data
│ │ │ │ │ variables to a pandas DataFrame and using the extensive plotting capabilities
│ │ │ │ │ of seaborn.
│ │ │ │ │ ******** QQuuiivveerr_?¶ ********
│ │ │ │ │ Visualizing vector fields is supported with quiver plots:
│ │ │ │ │ In [109]: ds.isel(w=1, z=1).plot.quiver(x="x", y="y", u="A", v="B")
│ │ │ │ │ -Out[109]:
│ │ │ │ │ +Out[109]:
│ │ │ │ │ [../_images/ds_simple_quiver.png]
│ │ │ │ │ where u and v denote the x and y direction components of the arrow vectors.
│ │ │ │ │ Again, faceting is also possible:
│ │ │ │ │ In [110]: ds.plot.quiver(x="x", y="y", u="A", v="B", col="w", row="z", scale=4)
│ │ │ │ │ -Out[110]:
│ │ │ │ │ +Out[110]:
│ │ │ │ │ [../_images/ds_facet_quiver.png]
│ │ │ │ │ scale is required for faceted quiver plots. The scale determines the number of
│ │ │ │ │ data units per arrow length unit, i.e. a smaller scale parameter makes the
│ │ │ │ │ arrow longer.
│ │ │ │ │ ******** SSttrreeaammpplloott_?¶ ********
│ │ │ │ │ Visualizing vector fields is also supported with streamline plots:
│ │ │ │ │ In [111]: ds.isel(w=1, z=1).plot.streamplot(x="x", y="y", u="A", v="B")
│ │ │ │ │ -Out[111]:
│ │ │ │ │ +Out[111]:
│ │ │ │ │ [../_images/ds_simple_streamplot.png]
│ │ │ │ │ where u and v denote the x and y direction components of the vectors tangent to
│ │ │ │ │ the streamlines. Again, faceting is also possible:
│ │ │ │ │ In [112]: ds.plot.streamplot(x="x", y="y", u="A", v="B", col="w", row="z")
│ │ │ │ │ -Out[112]:
│ │ │ │ │ +Out[112]:
│ │ │ │ │ [../_images/ds_facet_streamplot.png]
│ │ │ │ │ ********** MMaappss_?¶ **********
│ │ │ │ │ To follow this section you’ll need to have Cartopy installed and working.
│ │ │ │ │ This script will plot the air temperature on a map.
│ │ │ │ │ In [113]: import cartopy.crs as ccrs
│ │ │ │ │
│ │ │ │ │ In [114]: air = xr.tutorial.open_dataset("air_temperature").air
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [115]: p = air.isel(time=0).plot(
│ │ │ │ │ .....: subplot_kws=dict(projection=ccrs.Orthographic(-80, 35),
│ │ │ │ │ facecolor="gray"),
│ │ │ │ │ @@ -749,24 +749,24 @@
│ │ │ │ │ In [121]: import xarray.plot as xplt
│ │ │ │ │
│ │ │ │ │ In [122]: da = xr.DataArray(range(5))
│ │ │ │ │
│ │ │ │ │ In [123]: fig, axs = plt.subplots(ncols=2, nrows=2)
│ │ │ │ │
│ │ │ │ │ In [124]: da.plot(ax=axs[0, 0])
│ │ │ │ │ -Out[124]: []
│ │ │ │ │ +Out[124]: []
│ │ │ │ │
│ │ │ │ │ In [125]: da.plot.line(ax=axs[0, 1])
│ │ │ │ │ -Out[125]: []
│ │ │ │ │ +Out[125]: []
│ │ │ │ │
│ │ │ │ │ In [126]: xplt.plot(da, ax=axs[1, 0])
│ │ │ │ │ -Out[126]: []
│ │ │ │ │ +Out[126]: []
│ │ │ │ │
│ │ │ │ │ In [127]: xplt.line(da, ax=axs[1, 1])
│ │ │ │ │ -Out[127]: []
│ │ │ │ │ +Out[127]: []
│ │ │ │ │
│ │ │ │ │ In [128]: plt.tight_layout()
│ │ │ │ │
│ │ │ │ │ In [129]: plt.draw()
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_p_l_o_t_t_i_n_g___w_a_y_s___t_o___u_s_e_._p_n_g_]
│ │ │ │ │ Here the output is the same. Since the data is 1 dimensional the line plot was
│ │ │ │ │ used.
│ │ │ │ │ @@ -797,15 +797,15 @@
│ │ │ │ │ [0., 0., 0.]], shape=(4, 3))
│ │ │ │ │ Dimensions without coordinates: y, x
│ │ │ │ │ The plot will produce an image corresponding to the values of the array. Hence
│ │ │ │ │ the top left pixel will be a different color than the others. Before reading
│ │ │ │ │ on, you may want to look at the coordinates and think carefully about what the
│ │ │ │ │ limits, labels, and orientation for each of the axes should be.
│ │ │ │ │ In [134]: a.plot()
│ │ │ │ │ -Out[134]:
│ │ │ │ │ +Out[134]:
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_p_l_o_t_t_i_n_g___e_x_a_m_p_l_e___2_d___s_i_m_p_l_e_._p_n_g_]
│ │ │ │ │ It may seem strange that the values on the y axis are decreasing with -0.5 on
│ │ │ │ │ the top. This is because the pixels are centered over their coordinates, and
│ │ │ │ │ the axis labels and ranges correspond to the values of the coordinates.
│ │ │ │ │ ******** MMuullttiiddiimmeennssiioonnaall ccoooorrddiinnaatteess_?¶ ********
│ │ │ │ │ See also: _W_o_r_k_i_n_g_ _w_i_t_h_ _M_u_l_t_i_d_i_m_e_n_s_i_o_n_a_l_ _C_o_o_r_d_i_n_a_t_e_s.
│ │ │ │ │ You can plot irregular grids defined by multidimensional coordinates with
│ │ │ │ │ @@ -822,74 +822,74 @@
│ │ │ │ │ .....: np.arange(20).reshape(4, 5),
│ │ │ │ │ .....: dims=["y", "x"],
│ │ │ │ │ .....: coords={"lat": (("y", "x"), lat), "lon": (("y", "x"), lon)},
│ │ │ │ │ .....: )
│ │ │ │ │ .....:
│ │ │ │ │
│ │ │ │ │ In [139]: da.plot.pcolormesh(x="lon", y="lat")
│ │ │ │ │ -Out[139]:
│ │ │ │ │ +Out[139]:
│ │ │ │ │ _[_._._/___i_m_a_g_e_s_/_p_l_o_t_t_i_n_g___e_x_a_m_p_l_e___2_d___i_r_r_e_g_._p_n_g_]
│ │ │ │ │ Note that in this case, xarray still follows the pixel centered convention.
│ │ │ │ │ This might be undesirable in some cases, for example when your data is defined
│ │ │ │ │ on a polar projection (_G_H_7_8_1). This is why the default is to not follow this
│ │ │ │ │ convention when plotting on a map:
│ │ │ │ │ In [140]: import cartopy.crs as ccrs
│ │ │ │ │
│ │ │ │ │ In [141]: ax = plt.subplot(projection=ccrs.PlateCarree())
│ │ │ │ │
│ │ │ │ │ In [142]: da.plot.pcolormesh(x="lon", y="lat", ax=ax)
│ │ │ │ │ -Out[142]:
│ │ │ │ │ +Out[142]:
│ │ │ │ │
│ │ │ │ │ In [143]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())
│ │ │ │ │ -Out[143]:
│ │ │ │ │ +Out[143]:
│ │ │ │ │
│ │ │ │ │ In [144]: ax.coastlines()
│ │ │ │ │ -Out[144]:
│ │ │ │ │ +Out[144]:
│ │ │ │ │
│ │ │ │ │ In [145]: ax.gridlines(draw_labels=True)
│ │ │ │ │ -Out[145]:
│ │ │ │ │ +Out[145]:
│ │ │ │ │ _[___b_u_i_l_d_/_h_t_m_l_/___s_t_a_t_i_c_/_p_l_o_t_t_i_n_g___e_x_a_m_p_l_e___2_d___i_r_r_e_g___m_a_p_._p_n_g_]
│ │ │ │ │ You can however decide to infer the cell boundaries and use the infer_intervals
│ │ │ │ │ keyword:
│ │ │ │ │ In [146]: ax = plt.subplot(projection=ccrs.PlateCarree())
│ │ │ │ │
│ │ │ │ │ In [147]: da.plot.pcolormesh(x="lon", y="lat", ax=ax, infer_intervals=True)
│ │ │ │ │ -Out[147]:
│ │ │ │ │ +Out[147]:
│ │ │ │ │
│ │ │ │ │ In [148]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())
│ │ │ │ │ -Out[148]:
│ │ │ │ │ +Out[148]:
│ │ │ │ │
│ │ │ │ │ In [149]: ax.coastlines()
│ │ │ │ │ -Out[149]:
│ │ │ │ │ +Out[149]:
│ │ │ │ │
│ │ │ │ │ In [150]: ax.gridlines(draw_labels=True)
│ │ │ │ │ -Out[150]:
│ │ │ │ │ +Out[150]:
│ │ │ │ │ _[___b_u_i_l_d_/_h_t_m_l_/___s_t_a_t_i_c_/_p_l_o_t_t_i_n_g___e_x_a_m_p_l_e___2_d___i_r_r_e_g___m_a_p___i_n_f_e_r_._p_n_g_]
│ │ │ │ │ Note
│ │ │ │ │ The data model of xarray does not support datasets with _c_e_l_l_ _b_o_u_n_d_a_r_i_e_s yet. If
│ │ │ │ │ you want to use these coordinates, you’ll have to make the plots outside the
│ │ │ │ │ xarray framework.
│ │ │ │ │ One can also make line plots with multidimensional coordinates. In this case,
│ │ │ │ │ hue must be a dimension name, not a coordinate name.
│ │ │ │ │ In [151]: f, ax = plt.subplots(2, 1)
│ │ │ │ │
│ │ │ │ │ In [152]: da.plot.line(x="lon", hue="y", ax=ax[0])
│ │ │ │ │ Out[152]:
│ │ │ │ │ -[,
│ │ │ │ │ - ,
│ │ │ │ │ - ,
│ │ │ │ │ - ]
│ │ │ │ │ +[,
│ │ │ │ │ + ,
│ │ │ │ │ + ,
│ │ │ │ │ + ]
│ │ │ │ │
│ │ │ │ │ In [153]: da.plot.line(x="lon", hue="x", ax=ax[1])
│ │ │ │ │ Out[153]:
│ │ │ │ │ -[,
│ │ │ │ │ - ,
│ │ │ │ │ - ,
│ │ │ │ │ - ,
│ │ │ │ │ - ]
│ │ │ │ │ +[,
│ │ │ │ │ + ,
│ │ │ │ │ + ,
│ │ │ │ │ + ,
│ │ │ │ │ + ]
│ │ │ │ │ [../_images/plotting_example_2d_hue_xy.png]
│ │ │ │ │ _[_L_o_g_o_ _o_f_ _x_a_r_r_a_y_]
│ │ │ │ │ ************ _xx_aa_rr_rr_aa_yy ************
│ │ │ │ │ ******** NNaavviiggaattiioonn ********
│ │ │ │ │ For users
│ │ │ │ │ * _G_e_t_t_i_n_g_ _S_t_a_r_t_e_d
│ │ │ │ │ * _U_s_e_r_ _G_u_i_d_e
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html
│ │ │ │ @@ -554,15 +554,15 @@
│ │ │ │
│ │ │ │ Reshaping via coarsen
│ │ │ │ Whilst coarsen
is normally used for reducing your data’s resolution by applying a reduction function
│ │ │ │ (see the page on computation),
│ │ │ │ it can also be used to reorganise your data without applying a computation via construct()
.
│ │ │ │ Taking our example tutorial air temperature dataset over the Northern US
│ │ │ │ In [56]: air = xr.tutorial.open_dataset("air_temperature")["air"]
│ │ │ │ -ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xa0e19d40>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │ +ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xe1a34f50>: Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))
│ │ │ │
│ │ │ │
│ │ │ │ In [57]: air.isel(time=0).plot(x="lon", y="lat")
│ │ │ │ NameError: name 'air' is not defined
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -441,15 +441,15 @@
│ │ │ │ │ Whilst coarsen is normally used for reducing your data’s resolution by applying
│ │ │ │ │ a reduction function (see the _p_a_g_e_ _o_n_ _c_o_m_p_u_t_a_t_i_o_n), it can also be used to
│ │ │ │ │ reorganise your data without applying a computation via construct().
│ │ │ │ │ Taking our example tutorial air temperature dataset over the Northern US
│ │ │ │ │ In [56]: air = xr.tutorial.open_dataset("air_temperature")["air"]
│ │ │ │ │ ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries
│ │ │ │ │ exceeded with url: /pydata/xarray-data/raw/master/air_temperature.nc (Caused by
│ │ │ │ │ -NameResolutionError(":
│ │ │ │ │ +NameResolutionError(":
│ │ │ │ │ Failed to resolve 'github.com' ([Errno -3] Temporary failure in name
│ │ │ │ │ resolution)"))
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │ In [57]: air.isel(time=0).plot(x="lon", y="lat")
│ │ │ │ │ NameError: name 'air' is not defined
│ │ │ │ │ [../_images/pre_coarsening.png]
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/user-guide/testing.html
│ │ │ │ @@ -84,63 +84,68 @@
│ │ │ │ Generating Examples
│ │ │ │ To see an example of what each of these strategies might produce, you can call one followed by the .example()
method,
│ │ │ │ which is a general hypothesis method valid for all strategies.
│ │ │ │ In [2]: import xarray.testing.strategies as xrst
│ │ │ │
│ │ │ │ In [3]: xrst.variables().example()
│ │ │ │ Out[3]:
│ │ │ │ -<xarray.Variable (Ūũ: 1, ĸķŽø: 2)> Size: 8B
│ │ │ │ -array([[3983055198, 3397777411]], dtype=uint32)
│ │ │ │ -Attributes:
│ │ │ │ - hĦmůſ: {'²žAžg': False, 'ĢŪ': None, 'ſů½èf': '²ŻċkŬ', 'ń': False, 'Ŝùu...
│ │ │ │ - žıŔ: {'æ': None, 'Ô': None, 'ſŜŏL': True, 'TRUE': False, 'ář': array...
│ │ │ │ +<xarray.Variable (Á7: 1)> Size: 8B
│ │ │ │ +array([inf])
│ │ │ │
│ │ │ │ In [4]: xrst.variables().example()
│ │ │ │ Out[4]:
│ │ │ │ -<xarray.Variable (ð: 2, ĖŁżŠÛ: 1, K: 1)> Size: 8B
│ │ │ │ -array([[[ nan]],
│ │ │ │ -
│ │ │ │ - [[3.403e+38]]], dtype=float32)
│ │ │ │ +<xarray.Variable (ߎŜóò: 6, äãøŽ: 3, ßhſſ: 3)> Size: 432B
│ │ │ │ +array([[[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ +
│ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ +
│ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ +
│ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ +
│ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ +
│ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]]], shape=(6, 3, 3))
│ │ │ │ +Attributes:
│ │ │ │ + ĜèŶ³: {'ai': False, 'å': None, '': None}
│ │ │ │
│ │ │ │ In [5]: xrst.variables().example()
│ │ │ │ Out[5]:
│ │ │ │ -<xarray.Variable (şĘ: 4, ÛſžŜá: 5, ŸCŽg: 5)> Size: 200B
│ │ │ │ -array([[[ -9346, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, -32768],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [-17639, 30561, 30561, 30561, 30561]],
│ │ │ │ -
│ │ │ │ - [[ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 14053, 5910],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 8140, 30561, 30561]],
│ │ │ │ -
│ │ │ │ - [[ 30561, 8815, 30561, -19110, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561]],
│ │ │ │ -
│ │ │ │ - [[ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 12260, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ - [ 30561, 30561, -12902, 30561, 30561],
│ │ │ │ - [ 30561, 30561, 30561, -9648, 30561]]], shape=(4, 5, 5), dtype=int16)
│ │ │ │ +<xarray.Variable (ŷ: 2, Ŧ: 4, Őĸ: 6)> Size: 768B
│ │ │ │ +array([[[ nan+3.916e-117j, -3.403e+38+5.000e-001j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan +infj,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j]],
│ │ │ │ +
│ │ │ │ + [[ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j],
│ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j,
│ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-117j]]], shape=(2, 4, 6))
│ │ │ │ Attributes:
│ │ │ │ - Żò: True
│ │ │ │ - : ŽŽR
│ │ │ │ - ì: None
│ │ │ │ - Ňžě0ŋ: ['-9223372036854773590' 'NaT']
│ │ │ │ - ŪĨIJĿĽ: [b'4x' b'<\x13']
│ │ │ │ - żÀüFß: [['NaT']]
│ │ │ │ - ò5Sſş: False
│ │ │ │ - ſSc0: True
│ │ │ │ - Hę: [[b'Tj\xa5\xb2\x8b' b'H']\n [b'\x91\xe3\xec' b'Tj\xa5\xb2\x8b']]
│ │ │ │ + ŧŧĩçj: {'ŐŽŬżŗ': False}
│ │ │ │
│ │ │ │
│ │ │ │ You can see that calling .example()
multiple times will generate different examples, giving you an idea of the wide
│ │ │ │ range of data that the xarray strategies can generate.
│ │ │ │ In your tests however you should not use .example()
- instead you should parameterize your tests with the
│ │ │ │ hypothesis.given()
decorator:
│ │ │ │ In [6]: from hypothesis import given
│ │ │ │ @@ -158,108 +163,152 @@
│ │ │ │ Xarray’s strategies can accept other strategies as arguments, allowing you to customise the contents of the generated
│ │ │ │ examples.
│ │ │ │ # generate a Variable containing an array with a complex number dtype, but all other details still arbitrary
│ │ │ │ In [8]: from hypothesis.extra.numpy import complex_number_dtypes
│ │ │ │
│ │ │ │ In [9]: xrst.variables(dtype=complex_number_dtypes()).example()
│ │ │ │ Out[9]:
│ │ │ │ -<xarray.Variable (o: 5, ŗ: 2)> Size: 160B
│ │ │ │ -array([[ 4.941e-324-2.220e-16j, -7.106e+016+6.104e-05j],
│ │ │ │ - [ 3.333e-001-2.220e-16j, 1.000e+007 -infj],
│ │ │ │ - [ 1.000e+007 -infj, nan -infj],
│ │ │ │ - [ 1.000e+007 -infj, 1.113e-308 +nanj],
│ │ │ │ - [ inf-1.401e-45j, 7.555e+012 +nanj]], dtype='>c16')
│ │ │ │ -Attributes:
│ │ │ │ - džN9¾: {'ļ': None, 'ńþ': None, 'O': array([b'\xac\xdb\xaf\xc2\xed\xdd\...
│ │ │ │ +<xarray.Variable (ųy: 5, ŴĭŐ: 4, Íė: 5)> Size: 800B
│ │ │ │ +array([[[ 3.403e+38 +nanj, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, -1.192e-07-1.100e+00j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, 0.000e+00+1.000e+00j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, -inf-0.000e+00j]],
│ │ │ │ +
│ │ │ │ + [[ nan-1.401e-45j, 3.403e+38+6.060e+16j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, -0.000e+00+3.399e+16j],
│ │ │ │ + [ 2.000e+00+3.333e-01j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, 3.053e+15 +nanj,
│ │ │ │ + -2.220e-16 +nanj, nan-1.401e-45j]],
│ │ │ │ +
│ │ │ │ + [[ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ +...
│ │ │ │ + [ nan+1.175e-38j, nan-1.401e-45j, 1.175e-38-0.000e+00j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j]],
│ │ │ │ +
│ │ │ │ + [[ nan-1.401e-45j, 1.175e-38-3.320e+16j, -5.960e-08 +infj,
│ │ │ │ + nan-1.401e-45j, inf+5.048e+16j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan+2.044e+02j,
│ │ │ │ + nan-1.401e-45j, 1.175e-38 +infj],
│ │ │ │ + [ nan-1.401e-45j, -0.000e+00-0.000e+00j, 2.000e+00 +nanj,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j]],
│ │ │ │ +
│ │ │ │ + [[ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ 2.838e+16-0.000e+00j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, inf-1.000e-05j,
│ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ + [ 4.319e+27-1.175e-38j, 0.000e+00-9.007e+15j, 0.000e+00 -infj,
│ │ │ │ + -1.192e-07-0.000e+00j, nan-1.401e-45j]]], shape=(5, 4, 5), dtype=complex64)
│ │ │ │ +Attributes: (12/15)
│ │ │ │ + z: [[b'']\n [b'@\xeb\x1ax']]
│ │ │ │ + ġŤż: None
│ │ │ │ + ēżj3: Żĭŏ
│ │ │ │ + ļ: ÐſŸĞĝ
│ │ │ │ + ſªĦńŊ: [b'&)\x82\xc8\xc5' b'']
│ │ │ │ + şģ: [[b'']]
│ │ │ │ + ... ...
│ │ │ │ + : Ùţ
│ │ │ │ + ŽŊÑÞ: False
│ │ │ │ + ØžĦ: False
│ │ │ │ + ż: True
│ │ │ │ + f¾ſſſ: [[ 2.225e-309+4.72e-43j]\n [-5.372e+296+1.50e+00j]]
│ │ │ │ + ËïŹ7Ħ: żŌvŚż
│ │ │ │
│ │ │ │
│ │ │ │ This also works with custom strategies, or strategies defined in other packages.
│ │ │ │ For example you could imagine creating a chunks
strategy to specify particular chunking patterns for a dask-backed array.
│ │ │ │
│ │ │ │
│ │ │ │ Fixing Arguments
│ │ │ │ If you want to fix one aspect of the data structure, whilst allowing variation in the generated examples
│ │ │ │ over all other aspects, then use hypothesis.strategies.just()
.
│ │ │ │ In [10]: import hypothesis.strategies as st
│ │ │ │
│ │ │ │ # Generates only variable objects with dimensions ["x", "y"]
│ │ │ │ In [11]: xrst.variables(dims=st.just(["x", "y"])).example()
│ │ │ │ Out[11]:
│ │ │ │ -<xarray.Variable (x: 1, y: 6)> Size: 24B
│ │ │ │ -array([[7.058e+16, inf, inf, inf, 1.000e+00, 1.000e+07]], dtype=float32)
│ │ │ │ -Attributes:
│ │ │ │ - NIL: {'Ż': array([['\niM']], dtype='>U3'), '': 'ETżjÑ', 'QÐŪuŖ': 'Ż5...
│ │ │ │ - ñ: {'ÔŸ': True, 'łď': array([b'\xd7'], dtype='|S1'), 'ŽſNĊY': arra...
│ │ │ │ +<xarray.Variable (x: 1, y: 6)> Size: 96B
│ │ │ │ +array([[-2.000e+00 +nanj, 3.214e+16-5.846e+16j, -2.000e+00 +nanj,
│ │ │ │ + -2.000e+00 +nanj, -2.000e+00 +nanj, -2.000e+00 +nanj]])
│ │ │ │
│ │ │ │
│ │ │ │ (This is technically another example of chaining strategies - hypothesis.strategies.just()
is simply a
│ │ │ │ special strategy that just contains a single example.)
│ │ │ │ To fix the length of dimensions you can instead pass dims
as a mapping of dimension names to lengths
│ │ │ │ (i.e. following xarray objects’ .sizes()
property), e.g.
│ │ │ │ # Generates only variables with dimensions ["x", "y"], of lengths 2 & 3 respectively
│ │ │ │ In [12]: xrst.variables(dims=st.just({"x": 2, "y": 3})).example()
│ │ │ │ Out[12]:
│ │ │ │ -<xarray.Variable (x: 2, y: 3)> Size: 24B
│ │ │ │ -array([[ 1.401e-45, -1.900e+00, -1.401e-45],
│ │ │ │ - [ 6.146e+16, -2.073e+16, inf]], dtype=float32)
│ │ │ │ +<xarray.Variable (x: 2, y: 3)> Size: 96B
│ │ │ │ +array([[ 1.000e+007-6.104e-005j, 3.644e-238+6.237e+260j, -6.420e+016+3.403e+038j],
│ │ │ │ + [ -inf+1.269e+066j, 1.798e+308-2.172e+203j, -2.225e-311+2.000e+000j]])
│ │ │ │ Attributes:
│ │ │ │ - ÓĈx: òű
│ │ │ │ - ÃÛEžĆ: Ùż0žã
│ │ │ │ - ſķ1: [ nan+0.333j 5.46e+16 +nanj]
│ │ │ │ + JŁŒ: False
│ │ │ │ + Œ: řæė
│ │ │ │ + ĵʼnÿėů: False
│ │ │ │ + ĝ: ă
│ │ │ │ + True: None
│ │ │ │
│ │ │ │
│ │ │ │ You can also use this to specify that you want examples which are missing some part of the data structure, for instance
│ │ │ │ # Generates a Variable with no attributes
│ │ │ │ In [13]: xrst.variables(attrs=st.just({})).example()
│ │ │ │ Out[13]:
│ │ │ │ -<xarray.Variable (ž¾ſžſ: 2, CÊźú: 5, gÎŭąV: 1)> Size: 160B
│ │ │ │ -array([[[ 1.000e-005-1.175e-038j],
│ │ │ │ - [ 1.192e-007+1.175e-038j],
│ │ │ │ - [ nan-3.403e+038j],
│ │ │ │ - [ 2.225e-309+5.819e+016j],
│ │ │ │ - [ inf+5.000e-001j]],
│ │ │ │ -
│ │ │ │ - [[ nan+1.500e+000j],
│ │ │ │ - [-1.175e-038 -infj],
│ │ │ │ - [-9.007e+015 +infj],
│ │ │ │ - [ nan-3.403e+038j],
│ │ │ │ - [ 7.993e-060-1.798e+308j]]])
│ │ │ │ +<xarray.Variable (Ž: 3, żëõÐä: 5)> Size: 120B
│ │ │ │ +array([[-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16],
│ │ │ │ + [-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16],
│ │ │ │ + [-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16]], shape=(3, 5))
│ │ │ │
│ │ │ │
│ │ │ │ Through a combination of chaining strategies and fixing arguments, you can specify quite complicated requirements on the
│ │ │ │ objects your chained strategy will generate.
│ │ │ │ In [14]: fixed_x_variable_y_maybe_z = st.fixed_dictionaries(
│ │ │ │ ....: {"x": st.just(2), "y": st.integers(3, 4)}, optional={"z": st.just(2)}
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [15]: fixed_x_variable_y_maybe_z.example()
│ │ │ │ -Out[15]: {'x': 2, 'y': 4}
│ │ │ │ +Out[15]: {'x': 2, 'y': 4, 'z': 2}
│ │ │ │
│ │ │ │ In [16]: special_variables = xrst.variables(dims=fixed_x_variable_y_maybe_z)
│ │ │ │
│ │ │ │ In [17]: special_variables.example()
│ │ │ │ Out[17]:
│ │ │ │ -<xarray.Variable (x: 2, y: 4)> Size: 64B
│ │ │ │ -array([[-1.000e+00 -infj, 0.000e+00 +nanj, -inf+3.403e+38j,
│ │ │ │ - 4.788e+15 +nanj],
│ │ │ │ - [-6.104e-05 +nanj, 4.788e+15 +nanj, nan-2.220e-16j,
│ │ │ │ - nan+3.403e+38j]], dtype=complex64)
│ │ │ │ +<xarray.Variable (x: 2, y: 3, z: 2)> Size: 48B
│ │ │ │ +array([[[-2147460609, -2147483419],
│ │ │ │ + [ 1324572465, -1683379421],
│ │ │ │ + [ 1774236840, -2147483626]],
│ │ │ │ +
│ │ │ │ + [[-2147483582, -2147483516],
│ │ │ │ + [ 360387578, -2147420302],
│ │ │ │ + [ 748595230, -2147483563]]], shape=(2, 3, 2))
│ │ │ │ Attributes:
│ │ │ │ - žŽſļþ: {'': '', 'ŻğžŚ': False, 'łſſŘO': False}
│ │ │ │ - a: {'ċā': '', 'Ű': None, 'ę': None, '': 'ýºcŲĕ'}
│ │ │ │ - żŧđőr: {'Żž': 'żĘĞĨſ', 'ųBĩEN': True, 'ĀÜĘſ': None, 'ņ': array([[-2147...
│ │ │ │ + îH4ĿI: {}
│ │ │ │
│ │ │ │ In [18]: special_variables.example()
│ │ │ │ Out[18]:
│ │ │ │ -<xarray.Variable (x: 2, y: 3)> Size: 24B
│ │ │ │ -array([[ 0., 0., 0.],
│ │ │ │ - [ 0., 0., nan]], dtype=float32)
│ │ │ │ -Attributes:
│ │ │ │ - ñżË: {'ŽõĊ': 'jöüÃý', 'şÝþŵ': array(["\x89×\rŦ'æ\U0001e37d\x87"], d...
│ │ │ │ +<xarray.Variable (x: 2, y: 3, z: 2)> Size: 96B
│ │ │ │ +array([[[-1.175e-38, nan],
│ │ │ │ + [ nan, nan],
│ │ │ │ + [ nan, nan]],
│ │ │ │ +
│ │ │ │ + [[ inf, nan],
│ │ │ │ + [ nan, nan],
│ │ │ │ + [ nan, nan]]], shape=(2, 3, 2))
│ │ │ │
│ │ │ │
│ │ │ │ Here we have used one of hypothesis’ built-in strategies hypothesis.strategies.fixed_dictionaries()
to create a
│ │ │ │ strategy which generates mappings of dimension names to lengths (i.e. the size
of the xarray object we want).
│ │ │ │ This particular strategy will always generate an x
dimension of length 2, and a y
dimension of
│ │ │ │ length either 3 or 4, and will sometimes also generate a z
dimension of length 2.
│ │ │ │ By feeding this strategy for dictionaries into the dims
argument of xarray’s variables()
strategy,
│ │ │ │ @@ -360,53 +409,46 @@
│ │ │ │ ....: array_strategy_fn=xps.arrays,
│ │ │ │ ....: dtype=xps.scalar_dtypes(),
│ │ │ │ ....: )
│ │ │ │ ....:
│ │ │ │
│ │ │ │ In [32]: xp_variables.example()
│ │ │ │ Out[32]:
│ │ │ │ -<xarray.Variable (ŗ: 3)> Size: 3B
│ │ │ │ -array([False, False, True])
│ │ │ │ +<xarray.Variable (wéň: 6)> Size: 48B
│ │ │ │ +array([-1.500e+00-1.000e+07j, 9.007e+15-1.192e-07j, nan+9.007e+15j, -1.192e-07-9.007e+15j,
│ │ │ │ + nan+1.000e+07j, 0.000e+00-1.000e+07j], dtype=complex64)
│ │ │ │ Attributes:
│ │ │ │ - ÖĔ: [['w' '.']]
│ │ │ │ - ġſ: ['q0-ÕÐD$𥉋\x9a\x0b\x92e*-£']
│ │ │ │ - : None
│ │ │ │ - pqâž: [b'\x01(\xae\x9c\x82\x82k']
│ │ │ │ - ŹĦŋŻ: None
│ │ │ │ - ò: [-1.175e-38+5.e-324j -1.175e-38+5.e-324j]
│ │ │ │ - ž0ą: ŦŖăőÜ
│ │ │ │ - Ž: True
│ │ │ │ - ŭġņŽŽ: True
│ │ │ │ + ĕĉ: ģKŽ
│ │ │ │
│ │ │ │
│ │ │ │ Another array API-compliant duck array library would replace the import, e.g. import cupy as cp
instead.
│ │ │ │
│ │ │ │
│ │ │ │ Testing over Subsets of Dimensions
│ │ │ │ A common task when testing xarray user code is checking that your function works for all valid input dimensions.
│ │ │ │ We can chain strategies to achieve this, for which the helper strategy unique_subset_of()
│ │ │ │ is useful.
│ │ │ │ It works for lists of dimension names
│ │ │ │ In [33]: dims = ["x", "y", "z"]
│ │ │ │
│ │ │ │ In [34]: xrst.unique_subset_of(dims).example()
│ │ │ │ -Out[34]: ['y']
│ │ │ │ +Out[34]: ['x', 'z', 'y']
│ │ │ │
│ │ │ │ In [35]: xrst.unique_subset_of(dims).example()
│ │ │ │ -Out[35]: ['x']
│ │ │ │ +Out[35]: ['y']
│ │ │ │
│ │ │ │
│ │ │ │ as well as for mappings of dimension names to sizes
│ │ │ │ In [36]: dim_sizes = {"x": 2, "y": 3, "z": 4}
│ │ │ │
│ │ │ │ In [37]: xrst.unique_subset_of(dim_sizes).example()
│ │ │ │ -Out[37]: {}
│ │ │ │ +Out[37]: {'z': 4}
│ │ │ │
│ │ │ │ In [38]: xrst.unique_subset_of(dim_sizes).example()
│ │ │ │ -Out[38]: {'y': 3}
│ │ │ │ +Out[38]: {'x': 2}
│ │ │ │
│ │ │ │
│ │ │ │ This is useful because operations like reductions can be performed over any subset of the xarray object’s dimensions.
│ │ │ │ For example we can write a pytest test that tests that a reduction gives the expected result when applying that reduction
│ │ │ │ along any possible valid subset of the Variable’s dimensions.
│ │ │ │ import numpy.testing as npt
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -28,66 +28,84 @@
│ │ │ │ │ To see an example of what each of these strategies might produce, you can call
│ │ │ │ │ one followed by the .example() method, which is a general hypothesis method
│ │ │ │ │ valid for all strategies.
│ │ │ │ │ In [2]: import xarray.testing.strategies as xrst
│ │ │ │ │
│ │ │ │ │ In [3]: xrst.variables().example()
│ │ │ │ │ Out[3]:
│ │ │ │ │ - Size: 8B
│ │ │ │ │ -array([[3983055198, 3397777411]], dtype=uint32)
│ │ │ │ │ -Attributes:
│ │ │ │ │ - hĦmůſ: {'²žAžg': False, 'ĢŪ': None, 'ſů½èf': '²ŻċkŬ', 'ń': False,
│ │ │ │ │ -'Ŝùu...
│ │ │ │ │ - žıŔ: {'æ': None, 'Ô': None, 'ſŜŏL': True, 'TRUE': False, 'ář':
│ │ │ │ │ -array...
│ │ │ │ │ + Size: 8B
│ │ │ │ │ +array([inf])
│ │ │ │ │
│ │ │ │ │ In [4]: xrst.variables().example()
│ │ │ │ │ Out[4]:
│ │ │ │ │ - Size: 8B
│ │ │ │ │ -array([[[ nan]],
│ │ │ │ │ -
│ │ │ │ │ - [[3.403e+38]]], dtype=float32)
│ │ │ │ │ + Size: 432B
│ │ │ │ │ +array([[[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ │ +
│ │ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ │ +
│ │ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ │ +
│ │ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ │ +
│ │ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]],
│ │ │ │ │ +
│ │ │ │ │ + [[-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05],
│ │ │ │ │ + [-6.104e-05, -6.104e-05, -6.104e-05]]], shape=(6, 3, 3))
│ │ │ │ │ +Attributes:
│ │ │ │ │ + ĜèŶ³: {'ai': False, 'å': None, '': None}
│ │ │ │ │
│ │ │ │ │ In [5]: xrst.variables().example()
│ │ │ │ │ Out[5]:
│ │ │ │ │ - Size: 200B
│ │ │ │ │ -array([[[ -9346, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, -32768],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [-17639, 30561, 30561, 30561, 30561]],
│ │ │ │ │ -
│ │ │ │ │ - [[ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 14053, 5910],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 8140, 30561, 30561]],
│ │ │ │ │ -
│ │ │ │ │ - [[ 30561, 8815, 30561, -19110, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561]],
│ │ │ │ │ -
│ │ │ │ │ - [[ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 12260, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, -12902, 30561, 30561],
│ │ │ │ │ - [ 30561, 30561, 30561, -9648, 30561]]], shape=(4, 5, 5),
│ │ │ │ │ -dtype=int16)
│ │ │ │ │ + Size: 768B
│ │ │ │ │ +array([[[ nan+3.916e-117j, -3.403e+38+5.000e-001j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan
│ │ │ │ │ ++infj,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j]],
│ │ │ │ │ +
│ │ │ │ │ + [[ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j],
│ │ │ │ │ + [ nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j,
│ │ │ │ │ + nan+3.916e-117j, nan+3.916e-117j, nan+3.916e-
│ │ │ │ │ +117j]]], shape=(2, 4, 6))
│ │ │ │ │ Attributes:
│ │ │ │ │ - Żò: True
│ │ │ │ │ - : ŽŽR
│ │ │ │ │ - ì: None
│ │ │ │ │ - Ňžě0ŋ: ['-9223372036854773590' 'NaT']
│ │ │ │ │ - ŪĨIJĿĽ: [b'4x' b'<\x13']
│ │ │ │ │ - żÀüFß: [['NaT']]
│ │ │ │ │ - ò5Sſş: False
│ │ │ │ │ - ſSc0: True
│ │ │ │ │ - Hę: [[b'Tj\xa5\xb2\x8b' b'H']\n [b'\x91\xe3\xec' b'Tj\xa5\xb2\x8b']]
│ │ │ │ │ + ŧŧĩçj: {'ŐŽŬżŗ': False}
│ │ │ │ │ You can see that calling .example() multiple times will generate different
│ │ │ │ │ examples, giving you an idea of the wide range of data that the xarray
│ │ │ │ │ strategies can generate.
│ │ │ │ │ In your tests however you should not use .example() - instead you should
│ │ │ │ │ parameterize your tests with the hypothesis.given() decorator:
│ │ │ │ │ In [6]: from hypothesis import given
│ │ │ │ │ In [7]: @given(xrst.variables())
│ │ │ │ │ @@ -99,112 +117,153 @@
│ │ │ │ │ customise the contents of the generated examples.
│ │ │ │ │ # generate a Variable containing an array with a complex number dtype, but all
│ │ │ │ │ other details still arbitrary
│ │ │ │ │ In [8]: from hypothesis.extra.numpy import complex_number_dtypes
│ │ │ │ │
│ │ │ │ │ In [9]: xrst.variables(dtype=complex_number_dtypes()).example()
│ │ │ │ │ Out[9]:
│ │ │ │ │ - Size: 160B
│ │ │ │ │ -array([[ 4.941e-324-2.220e-16j, -7.106e+016+6.104e-05j],
│ │ │ │ │ - [ 3.333e-001-2.220e-16j, 1.000e+007 -infj],
│ │ │ │ │ - [ 1.000e+007 -infj, nan -infj],
│ │ │ │ │ - [ 1.000e+007 -infj, 1.113e-308 +nanj],
│ │ │ │ │ - [ inf-1.401e-45j, 7.555e+012 +nanj]], dtype='>c16')
│ │ │ │ │ -Attributes:
│ │ │ │ │ - džN9¾: {'ļ': None, 'ńþ': None, 'O': array(
│ │ │ │ │ -[b'\xac\xdb\xaf\xc2\xed\xdd\...
│ │ │ │ │ + Size: 800B
│ │ │ │ │ +array([[[ 3.403e+38 +nanj, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, -1.192e-07-1.100e+00j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, 0.000e+00+1.000e+00j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, -inf-0.000e+00j]],
│ │ │ │ │ +
│ │ │ │ │ + [[ nan-1.401e-45j, 3.403e+38+6.060e+16j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, -0.000e+00+3.399e+16j],
│ │ │ │ │ + [ 2.000e+00+3.333e-01j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, 3.053e+15 +nanj,
│ │ │ │ │ + -2.220e-16 +nanj, nan-1.401e-45j]],
│ │ │ │ │ +
│ │ │ │ │ + [[ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ +...
│ │ │ │ │ + [ nan+1.175e-38j, nan-1.401e-45j, 1.175e-38-0.000e+00j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j]],
│ │ │ │ │ +
│ │ │ │ │ + [[ nan-1.401e-45j, 1.175e-38-3.320e+16j, -5.960e-08 +infj,
│ │ │ │ │ + nan-1.401e-45j, inf+5.048e+16j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, nan+2.044e+02j,
│ │ │ │ │ + nan-1.401e-45j, 1.175e-38 +infj],
│ │ │ │ │ + [ nan-1.401e-45j, -0.000e+00-0.000e+00j, 2.000e+00 +nanj,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j]],
│ │ │ │ │ +
│ │ │ │ │ + [[ nan-1.401e-45j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ 2.838e+16-0.000e+00j, nan-1.401e-45j, nan-1.401e-45j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ nan-1.401e-45j, nan-1.401e-45j, inf-1.000e-05j,
│ │ │ │ │ + nan-1.401e-45j, nan-1.401e-45j],
│ │ │ │ │ + [ 4.319e+27-1.175e-38j, 0.000e+00-9.007e+15j, 0.000e+00 -infj,
│ │ │ │ │ + -1.192e-07-0.000e+00j, nan-1.401e-45j]]], shape=(5, 4, 5),
│ │ │ │ │ +dtype=complex64)
│ │ │ │ │ +Attributes: (12/15)
│ │ │ │ │ + z: [[b'']\n [b'@\xeb\x1ax']]
│ │ │ │ │ + ġŤż: None
│ │ │ │ │ + ēżj3: Żĭŏ
│ │ │ │ │ + ļ: ÐſŸĞĝ
│ │ │ │ │ + ſªĦńŊ: [b'&)\x82\xc8\xc5' b'']
│ │ │ │ │ + şģ: [[b'']]
│ │ │ │ │ + ... ...
│ │ │ │ │ + : Ùţ
│ │ │ │ │ + ŽŊÑÞ: False
│ │ │ │ │ + ØžĦ: False
│ │ │ │ │ + ż: True
│ │ │ │ │ + f¾ſſſ: [[ 2.225e-309+4.72e-43j]\n [-5.372e+296+1.50e+00j]]
│ │ │ │ │ + ËïŹ7Ħ: żŌvŚż
│ │ │ │ │ This also works with custom strategies, or strategies defined in other
│ │ │ │ │ packages. For example you could imagine creating a chunks strategy to specify
│ │ │ │ │ particular chunking patterns for a dask-backed array.
│ │ │ │ │ ******** FFiixxiinngg AArrgguummeennttss_?¶ ********
│ │ │ │ │ If you want to fix one aspect of the data structure, whilst allowing variation
│ │ │ │ │ in the generated examples over all other aspects, then use
│ │ │ │ │ hypothesis.strategies.just().
│ │ │ │ │ In [10]: import hypothesis.strategies as st
│ │ │ │ │
│ │ │ │ │ # Generates only variable objects with dimensions ["x", "y"]
│ │ │ │ │ In [11]: xrst.variables(dims=st.just(["x", "y"])).example()
│ │ │ │ │ Out[11]:
│ │ │ │ │ - Size: 24B
│ │ │ │ │ -array([[7.058e+16, inf, inf, inf, 1.000e+00, 1.000e+07]],
│ │ │ │ │ -dtype=float32)
│ │ │ │ │ -Attributes:
│ │ │ │ │ - NIL: {'Ż': array([['\niM']], dtype='>U3'), '': 'ETżjÑ', 'QÐŪuŖ':
│ │ │ │ │ -'Ż5...
│ │ │ │ │ - ñ: {'ÔŸ': True, 'łď': array([b'\xd7'], dtype='|S1'), 'ŽſNĊY':
│ │ │ │ │ -arra...
│ │ │ │ │ + Size: 96B
│ │ │ │ │ +array([[-2.000e+00 +nanj, 3.214e+16-5.846e+16j, -2.000e+00 +nanj,
│ │ │ │ │ + -2.000e+00 +nanj, -2.000e+00 +nanj, -2.000e+00 +nanj]])
│ │ │ │ │ (This is technically another example of chaining strategies -
│ │ │ │ │ hypothesis.strategies.just() is simply a special strategy that just contains a
│ │ │ │ │ single example.)
│ │ │ │ │ To fix the length of dimensions you can instead pass dims as a mapping of
│ │ │ │ │ dimension names to lengths (i.e. following xarray objects’ .sizes() property),
│ │ │ │ │ e.g.
│ │ │ │ │ # Generates only variables with dimensions ["x", "y"], of lengths 2 & 3
│ │ │ │ │ respectively
│ │ │ │ │ In [12]: xrst.variables(dims=st.just({"x": 2, "y": 3})).example()
│ │ │ │ │ Out[12]:
│ │ │ │ │ - Size: 24B
│ │ │ │ │ -array([[ 1.401e-45, -1.900e+00, -1.401e-45],
│ │ │ │ │ - [ 6.146e+16, -2.073e+16, inf]], dtype=float32)
│ │ │ │ │ + Size: 96B
│ │ │ │ │ +array([[ 1.000e+007-6.104e-005j, 3.644e-238+6.237e+260j, -
│ │ │ │ │ +6.420e+016+3.403e+038j],
│ │ │ │ │ + [ -inf+1.269e+066j, 1.798e+308-2.172e+203j, -2.225e-
│ │ │ │ │ +311+2.000e+000j]])
│ │ │ │ │ Attributes:
│ │ │ │ │ - ÓĈx: òű
│ │ │ │ │ - ÃÛEžĆ: Ùż0žã
│ │ │ │ │ - ſķ1: [ nan+0.333j 5.46e+16 +nanj]
│ │ │ │ │ + JŁŒ: False
│ │ │ │ │ + Œ: řæė
│ │ │ │ │ + ĵʼnÿėů: False
│ │ │ │ │ + ĝ: ă
│ │ │ │ │ + True: None
│ │ │ │ │ You can also use this to specify that you want examples which are missing some
│ │ │ │ │ part of the data structure, for instance
│ │ │ │ │ # Generates a Variable with no attributes
│ │ │ │ │ In [13]: xrst.variables(attrs=st.just({})).example()
│ │ │ │ │ Out[13]:
│ │ │ │ │ - Size: 160B
│ │ │ │ │ -array([[[ 1.000e-005-1.175e-038j],
│ │ │ │ │ - [ 1.192e-007+1.175e-038j],
│ │ │ │ │ - [ nan-3.403e+038j],
│ │ │ │ │ - [ 2.225e-309+5.819e+016j],
│ │ │ │ │ - [ inf+5.000e-001j]],
│ │ │ │ │ -
│ │ │ │ │ - [[ nan+1.500e+000j],
│ │ │ │ │ - [-1.175e-038 -infj],
│ │ │ │ │ - [-9.007e+015 +infj],
│ │ │ │ │ - [ nan-3.403e+038j],
│ │ │ │ │ - [ 7.993e-060-1.798e+308j]]])
│ │ │ │ │ + Size: 120B
│ │ │ │ │ +array([[-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16],
│ │ │ │ │ + [-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16],
│ │ │ │ │ + [-2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16, -2.22e-16]], shape=(3, 5))
│ │ │ │ │ Through a combination of chaining strategies and fixing arguments, you can
│ │ │ │ │ specify quite complicated requirements on the objects your chained strategy
│ │ │ │ │ will generate.
│ │ │ │ │ In [14]: fixed_x_variable_y_maybe_z = st.fixed_dictionaries(
│ │ │ │ │ ....: {"x": st.just(2), "y": st.integers(3, 4)}, optional={"z": st.just
│ │ │ │ │ (2)}
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [15]: fixed_x_variable_y_maybe_z.example()
│ │ │ │ │ -Out[15]: {'x': 2, 'y': 4}
│ │ │ │ │ +Out[15]: {'x': 2, 'y': 4, 'z': 2}
│ │ │ │ │
│ │ │ │ │ In [16]: special_variables = xrst.variables(dims=fixed_x_variable_y_maybe_z)
│ │ │ │ │
│ │ │ │ │ In [17]: special_variables.example()
│ │ │ │ │ Out[17]:
│ │ │ │ │ - Size: 64B
│ │ │ │ │ -array([[-1.000e+00 -infj, 0.000e+00 +nanj, -inf+3.403e+38j,
│ │ │ │ │ - 4.788e+15 +nanj],
│ │ │ │ │ - [-6.104e-05 +nanj, 4.788e+15 +nanj, nan-2.220e-16j,
│ │ │ │ │ - nan+3.403e+38j]], dtype=complex64)
│ │ │ │ │ + Size: 48B
│ │ │ │ │ +array([[[-2147460609, -2147483419],
│ │ │ │ │ + [ 1324572465, -1683379421],
│ │ │ │ │ + [ 1774236840, -2147483626]],
│ │ │ │ │ +
│ │ │ │ │ + [[-2147483582, -2147483516],
│ │ │ │ │ + [ 360387578, -2147420302],
│ │ │ │ │ + [ 748595230, -2147483563]]], shape=(2, 3, 2))
│ │ │ │ │ Attributes:
│ │ │ │ │ - žŽſļþ: {'': '', 'ŻğžŚ': False, 'łſſŘO': False}
│ │ │ │ │ - a: {'ċā': '', 'Ű': None, 'ę': None, '': 'ýºcŲĕ'}
│ │ │ │ │ - żŧđőr: {'Żž': 'żĘĞĨſ', 'ųBĩEN': True, 'ĀÜĘſ': None, 'ņ': array([[-
│ │ │ │ │ -2147...
│ │ │ │ │ + îH4ĿI: {}
│ │ │ │ │
│ │ │ │ │ In [18]: special_variables.example()
│ │ │ │ │ Out[18]:
│ │ │ │ │ - Size: 24B
│ │ │ │ │ -array([[ 0., 0., 0.],
│ │ │ │ │ - [ 0., 0., nan]], dtype=float32)
│ │ │ │ │ -Attributes:
│ │ │ │ │ - ñżË: {'ŽõĊ': 'jöüÃý', 'şÝþŵ': array(["\x89×\rŦ'æ\U0001e37d\x87"],
│ │ │ │ │ -d...
│ │ │ │ │ + Size: 96B
│ │ │ │ │ +array([[[-1.175e-38, nan],
│ │ │ │ │ + [ nan, nan],
│ │ │ │ │ + [ nan, nan]],
│ │ │ │ │ +
│ │ │ │ │ + [[ inf, nan],
│ │ │ │ │ + [ nan, nan],
│ │ │ │ │ + [ nan, nan]]], shape=(2, 3, 2))
│ │ │ │ │ Here we have used one of hypothesis’ built-in strategies
│ │ │ │ │ hypothesis.strategies.fixed_dictionaries() to create a strategy which generates
│ │ │ │ │ mappings of dimension names to lengths (i.e. the size of the xarray object we
│ │ │ │ │ want). This particular strategy will always generate an x dimension of length
│ │ │ │ │ 2, and a y dimension of length either 3 or 4, and will sometimes also generate
│ │ │ │ │ a z dimension of length 2. By feeding this strategy for dictionaries into the
│ │ │ │ │ dims argument of xarray’s variables() strategy, we can generate arbitrary
│ │ │ │ │ @@ -298,48 +357,42 @@
│ │ │ │ │ ....: array_strategy_fn=xps.arrays,
│ │ │ │ │ ....: dtype=xps.scalar_dtypes(),
│ │ │ │ │ ....: )
│ │ │ │ │ ....:
│ │ │ │ │
│ │ │ │ │ In [32]: xp_variables.example()
│ │ │ │ │ Out[32]:
│ │ │ │ │ - Size: 3B
│ │ │ │ │ -array([False, False, True])
│ │ │ │ │ + Size: 48B
│ │ │ │ │ +array([-1.500e+00-1.000e+07j, 9.007e+15-1.192e-07j, nan+9.007e+15j, -
│ │ │ │ │ +1.192e-07-9.007e+15j,
│ │ │ │ │ + nan+1.000e+07j, 0.000e+00-1.000e+07j], dtype=complex64)
│ │ │ │ │ Attributes:
│ │ │ │ │ - ÖĔ: [['w' '.']]
│ │ │ │ │ - ġſ: ['q0-ÕÐD$𥉋\x9a\x0b\x92e*-£']
│ │ │ │ │ - : None
│ │ │ │ │ - pqâž: [b'\x01(\xae\x9c\x82\x82k']
│ │ │ │ │ - ŹĦŋŻ: None
│ │ │ │ │ - ò: [-1.175e-38+5.e-324j -1.175e-38+5.e-324j]
│ │ │ │ │ - ž0ą: ŦŖăőÜ
│ │ │ │ │ - Ž: True
│ │ │ │ │ - ŭġņŽŽ: True
│ │ │ │ │ + ĕĉ: ģKŽ
│ │ │ │ │ Another array API-compliant duck array library would replace the import, e.g.
│ │ │ │ │ import cupy as cp instead.
│ │ │ │ │ ******** TTeessttiinngg oovveerr SSuubbsseettss ooff DDiimmeennssiioonnss_?¶ ********
│ │ │ │ │ A common task when testing xarray user code is checking that your function
│ │ │ │ │ works for all valid input dimensions. We can chain strategies to achieve this,
│ │ │ │ │ for which the helper strategy unique_subset_of() is useful.
│ │ │ │ │ It works for lists of dimension names
│ │ │ │ │ In [33]: dims = ["x", "y", "z"]
│ │ │ │ │
│ │ │ │ │ In [34]: xrst.unique_subset_of(dims).example()
│ │ │ │ │ -Out[34]: ['y']
│ │ │ │ │ +Out[34]: ['x', 'z', 'y']
│ │ │ │ │
│ │ │ │ │ In [35]: xrst.unique_subset_of(dims).example()
│ │ │ │ │ -Out[35]: ['x']
│ │ │ │ │ +Out[35]: ['y']
│ │ │ │ │ as well as for mappings of dimension names to sizes
│ │ │ │ │ In [36]: dim_sizes = {"x": 2, "y": 3, "z": 4}
│ │ │ │ │
│ │ │ │ │ In [37]: xrst.unique_subset_of(dim_sizes).example()
│ │ │ │ │ -Out[37]: {}
│ │ │ │ │ +Out[37]: {'z': 4}
│ │ │ │ │
│ │ │ │ │ In [38]: xrst.unique_subset_of(dim_sizes).example()
│ │ │ │ │ -Out[38]: {'y': 3}
│ │ │ │ │ +Out[38]: {'x': 2}
│ │ │ │ │ This is useful because operations like reductions can be performed over any
│ │ │ │ │ subset of the xarray object’s dimensions. For example we can write a pytest
│ │ │ │ │ test that tests that a reduction gives the expected result when applying that
│ │ │ │ │ reduction along any possible valid subset of the Variable’s dimensions.
│ │ │ │ │ import numpy.testing as npt
│ │ │ ├── ./usr/share/doc/python-xarray-doc/html/whats-new.html
│ │ │ │ @@ -8191,15 +8191,15 @@
│ │ │ │ New xray.Dataset.where
method for masking xray objects according
│ │ │ │ to some criteria. This works particularly well with multi-dimensional data:
│ │ │ │ In [45]: ds = xray.Dataset(coords={"x": range(100), "y": range(100)})
│ │ │ │
│ │ │ │ In [46]: ds["distance"] = np.sqrt(ds.x**2 + ds.y**2)
│ │ │ │
│ │ │ │ In [47]: ds.distance.where(ds.distance < 100).plot()
│ │ │ │ -Out[47]: <matplotlib.collections.QuadMesh at 0xa3e7cb30>
│ │ │ │ +Out[47]: <matplotlib.collections.QuadMesh at 0xe2ee5b30>
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Added new methods xray.DataArray.diff
and xray.Dataset.diff
│ │ │ │ for finite difference calculations along a given axis.
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -5286,15 +5286,15 @@
│ │ │ │ │ * New xray.Dataset.where method for masking xray objects according to some
│ │ │ │ │ criteria. This works particularly well with multi-dimensional data:
│ │ │ │ │ In [45]: ds = xray.Dataset(coords={"x": range(100), "y": range(100)})
│ │ │ │ │
│ │ │ │ │ In [46]: ds["distance"] = np.sqrt(ds.x**2 + ds.y**2)
│ │ │ │ │
│ │ │ │ │ In [47]: ds.distance.where(ds.distance < 100).plot()
│ │ │ │ │ - Out[47]:
│ │ │ │ │ + Out[47]:
│ │ │ │ │ _[___i_m_a_g_e_s_/_w_h_e_r_e___e_x_a_m_p_l_e_._p_n_g_]
│ │ │ │ │ * Added new methods xray.DataArray.diff and xray.Dataset.diff for finite
│ │ │ │ │ difference calculations along a given axis.
│ │ │ │ │ * New xray.DataArray.to_masked_array convenience method for returning a
│ │ │ │ │ numpy.ma.MaskedArray.
│ │ │ │ │ In [48]: da = xray.DataArray(np.random.random_sample(size=(5, 4)))