{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.VVYSiNm4/b1/python-xarray_2025.01.2-1_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.VVYSiNm4/b2/python-xarray_2025.01.2-1_i386.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- a8ccd70b6f7276b9c4bd3d1828502794 2009904 doc optional python-xarray-doc_2025.01.2-1_all.deb\n+ 2ff013168fb85277456a834d7bd1d87d 2010624 doc optional python-xarray-doc_2025.01.2-1_all.deb\n 4644c3352e568f782718f7d018211ae7 799852 python optional python3-xarray_2025.01.2-1_all.deb\n"}, {"source1": "python-xarray-doc_2025.01.2-1_all.deb", "source2": "python-xarray-doc_2025.01.2-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-02-02 11:36:57.000000 debian-binary\n--rw-r--r-- 0 0 0 6168 2025-02-02 11:36:57.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2003544 2025-02-02 11:36:57.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 6172 2025-02-02 11:36:57.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 2004260 2025-02-02 11:36:57.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: python-xarray-doc\n Source: python-xarray\n Version: 2025.01.2-1\n Architecture: all\n Maintainer: Debian Science Maintainers \n-Installed-Size: 8010\n+Installed-Size: 8011\n Depends: libjs-sphinxdoc (>= 8.1), libjs-mathjax, libjs-requirejs\n Built-Using: alabaster (= 0.7.16-0.1), sphinx (= 8.1.3-5)\n Section: doc\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://xarray.pydata.org/\n Description: documentation for xarray\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -152,31 +152,31 @@\n -rw-r--r-- 0 root (0) root (0) 461 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/dask.html\n -rw-r--r-- 0 root (0) root (0) 494 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/data-structures.html\n -rw-r--r-- 0 root (0) root (0) 8448 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/developers-meeting.html\n -rw-r--r-- 0 root (0) root (0) 479 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/duckarrays.html\n -rw-r--r-- 0 root (0) root (0) 22666 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/ecosystem.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/\n -rw-r--r-- 0 root (0) root (0) 21694 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.html\n--rw-r--r-- 0 root (0) root (0) 1827 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 1828 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 38490 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.html\n--rw-r--r-- 0 root (0) root (0) 23719 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 23725 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 116838 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.html\n--rw-r--r-- 0 root (0) root (0) 8769 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 8786 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 27577 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.html\n--rw-r--r-- 0 root (0) root (0) 20984 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 20983 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 11448 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.html\n -rw-r--r-- 0 root (0) root (0) 2375 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb\n -rw-r--r-- 0 root (0) root (0) 38981 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.html\n--rw-r--r-- 0 root (0) root (0) 3203 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 3206 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 30434 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.html\n--rw-r--r-- 0 root (0) root (0) 3221 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 3231 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 36876 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.html\n--rw-r--r-- 0 root (0) root (0) 2851 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 2849 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 46324 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.html\n--rw-r--r-- 0 root (0) root (0) 3546 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 3565 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 491 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/faq.html\n -rw-r--r-- 0 root (0) root (0) 15073 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/gallery.html\n -rw-r--r-- 0 root (0) root (0) 16306 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/genindex.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/\n -rw-r--r-- 0 root (0) root (0) 50398 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/faq.html\n -rw-r--r-- 0 root (0) root (0) 7741 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/index.html\n -rw-r--r-- 0 root (0) root (0) 23857 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/installing.html\n@@ -191,50 +191,50 @@\n drwxr-xr-x 0 root (0) root (0) 0 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/\n -rw-r--r-- 0 root (0) root (0) 81178 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/chunked-arrays.html\n -rw-r--r-- 0 root (0) root (0) 19678 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/duck-arrays-integration.html\n -rw-r--r-- 0 root (0) root (0) 22842 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/extending-xarray.html\n -rw-r--r-- 0 root (0) root (0) 53506 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/how-to-add-new-backend.html\n -rw-r--r-- 0 root (0) root (0) 30758 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/how-to-create-custom-index.html\n -rw-r--r-- 0 root (0) root (0) 9035 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/index.html\n--rw-r--r-- 0 root (0) root (0) 60255 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/internal-design.html\n+-rw-r--r-- 0 root (0) root (0) 60257 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/internal-design.html\n -rw-r--r-- 0 root (0) root (0) 13589 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/interoperability.html\n--rw-r--r-- 0 root (0) root (0) 51538 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html\n+-rw-r--r-- 0 root (0) root (0) 51539 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html\n -rw-r--r-- 0 root (0) root (0) 488 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/interpolation.html\n -rw-r--r-- 0 root (0) root (0) 455 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/io.html\n -rw-r--r-- 0 root (0) root (0) 22249 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/objects.inv\n -rw-r--r-- 0 root (0) root (0) 467 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/pandas.html\n -rw-r--r-- 0 root (0) root (0) 473 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/plotting.html\n -rw-r--r-- 0 root (0) root (0) 6546 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/py-modindex.html\n -rw-r--r-- 0 root (0) root (0) 524 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/quick-overview.html\n -rw-r--r-- 0 root (0) root (0) 443 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/related-projects.html\n -rw-r--r-- 0 root (0) root (0) 476 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/reshaping.html\n -rw-r--r-- 0 root (0) root (0) 24474 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/roadmap.html\n -rw-r--r-- 0 root (0) root (0) 6341 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/search.html\n--rw-r--r-- 0 root (0) root (0) 242393 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js\n+-rw-r--r-- 0 root (0) root (0) 243189 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js\n -rw-r--r-- 0 root (0) root (0) 482 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/terminology.html\n -rw-r--r-- 0 root (0) root (0) 482 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/time-series.html\n -rw-r--r-- 0 root (0) root (0) 13358 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/tutorials-and-videos.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/\n -rw-r--r-- 0 root (0) root (0) 58669 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/combining.html\n--rw-r--r-- 0 root (0) root (0) 140307 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/computation.html\n+-rw-r--r-- 0 root (0) root (0) 140306 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/computation.html\n -rw-r--r-- 0 root (0) root (0) 71357 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/dask.html\n -rw-r--r-- 0 root (0) root (0) 150187 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/data-structures.html\n -rw-r--r-- 0 root (0) root (0) 35119 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/duckarrays.html\n -rw-r--r-- 0 root (0) root (0) 50912 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/groupby.html\n--rw-r--r-- 0 root (0) root (0) 120196 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/hierarchical-data.html\n+-rw-r--r-- 0 root (0) root (0) 120197 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/hierarchical-data.html\n -rw-r--r-- 0 root (0) root (0) 9025 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/index.html\n--rw-r--r-- 0 root (0) root (0) 140255 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html\n--rw-r--r-- 0 root (0) root (0) 68701 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html\n--rw-r--r-- 0 root (0) root (0) 144671 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/io.html\n+-rw-r--r-- 0 root (0) root (0) 140258 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html\n+-rw-r--r-- 0 root (0) root (0) 68702 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html\n+-rw-r--r-- 0 root (0) root (0) 144673 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/io.html\n -rw-r--r-- 0 root (0) root (0) 11704 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/options.html\n -rw-r--r-- 0 root (0) root (0) 42217 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/pandas.html\n--rw-r--r-- 0 root (0) root (0) 136129 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html\n--rw-r--r-- 0 root (0) root (0) 62899 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html\n+-rw-r--r-- 0 root (0) root (0) 136131 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html\n+-rw-r--r-- 0 root (0) root (0) 62900 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html\n -rw-r--r-- 0 root (0) root (0) 46815 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/terminology.html\n--rw-r--r-- 0 root (0) root (0) 49282 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/testing.html\n+-rw-r--r-- 0 root (0) root (0) 49976 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/testing.html\n -rw-r--r-- 0 root (0) root (0) 45838 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/time-series.html\n -rw-r--r-- 0 root (0) root (0) 45414 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/weather-climate.html\n -rw-r--r-- 0 root (0) root (0) 494 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/weather-climate.html\n -rw-r--r-- 0 root (0) root (0) 1017512 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/whats-new.html\n -rw-r--r-- 0 root (0) root (0) 512 2025-02-02 11:36:57.000000 ./usr/share/doc/python-xarray-doc/html/why-xarray.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-02-02 11:36:57.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 290 2025-02-02 11:36:57.000000 ./usr/share/doc-base/python-xarray-doc.python-xarray-doc\n"}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz", "unified_diff": null, "details": [{"source1": "ERA5-GRIB-example.ipynb", "source2": "ERA5-GRIB-example.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9985795454545454%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:08.142902Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:08.142596Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:08.392105Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:08.391188Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:08.449040Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:08.448644Z', 'iopub.status.idle': '2025-03-22T09:27:0 [\u2026]"], "unified_diff": "@@ -15,18 +15,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:03.117848Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:03.117612Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:03.258240Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:03.257715Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:08.142902Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:08.142596Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:08.392105Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:08.391188Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -51,18 +51,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:03.292314Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:03.292072Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:03.304807Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:03.304071Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:08.449040Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:08.448644Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:08.469784Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:08.468916Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -86,18 +86,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:03.306757Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:03.306515Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:03.318759Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:03.318225Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:08.473092Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:08.472515Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:08.492493Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:08.491627Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -122,18 +122,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:03.320705Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:03.320461Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:03.449021Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:03.448491Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:08.495873Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:08.495118Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:08.685722Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:08.684817Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'plt' is not defined\",\n \"output_type\": \"error\",\n@@ -166,18 +166,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:03.451059Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:03.450820Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:03.463539Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:03.463021Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:08.688785Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:08.688479Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:08.709332Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:08.708448Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz", "unified_diff": null, "details": [{"source1": "ROMS_ocean_model.ipynb", "source2": "ROMS_ocean_model.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9988051470588235%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:10.808339Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:10.808041Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:12.012496Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:12.011546Z'}}}, 5: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:12.015765Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:12.015455Z', 'iopub.status.idle': '2025-03-22T09:27:1 [\u2026]"], "unified_diff": "@@ -17,18 +17,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:05.215256Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:05.214789Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.001379Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.000752Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:10.808339Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:10.808041Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.012496Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.011546Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -87,18 +87,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.003764Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.003517Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.016800Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.016250Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.015765Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.015455Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.037108Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.036220Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -137,18 +137,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.018915Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.018677Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.035596Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.035018Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.040350Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.039715Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.067109Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.066207Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -182,18 +182,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.037564Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.037331Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.050311Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.049728Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.070054Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.069723Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.090264Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.089386Z\"\n },\n \"scrolled\": false\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n@@ -218,18 +218,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.052337Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.052098Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.066071Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.065483Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.093204Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.092908Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.115400Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.114508Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -257,18 +257,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 6,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.068062Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.067827Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.080824Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.080244Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.118280Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.117963Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.138683Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.137799Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -292,18 +292,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 7,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:06.082869Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:06.082633Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:06.183829Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:06.183224Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:12.141666Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:12.141373Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:12.279094Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:12.278176Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz", "unified_diff": null, "details": [{"source1": "apply_ufunc_vectorize_1d.ipynb", "source2": "apply_ufunc_vectorize_1d.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9994283536585367%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:14.623046Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:14.622759Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:14.871693Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:14.870853Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:14.874779Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:14.874479Z', 'iopub.status.idle': '2025-03-22T09:27:1 [\u2026]"], "unified_diff": "@@ -36,18 +36,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:51.659160Z\",\n \"start_time\": \"2020-01-15T14:45:50.528742Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.767857Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.767621Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.910031Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.909495Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.623046Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.622759Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.871693Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.870853Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -85,18 +85,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:55.431708Z\",\n \"start_time\": \"2020-01-15T14:45:55.104701Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.911986Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.911746Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.924376Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.923855Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.874779Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.874479Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.895284Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.894463Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'np' is not defined\",\n \"output_type\": \"error\",\n@@ -125,18 +125,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:57.889496Z\",\n \"start_time\": \"2020-01-15T14:45:57.792269Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.926301Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.926065Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.940767Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.940222Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.898111Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.897776Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.921263Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.920412Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -184,18 +184,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:59.768626Z\",\n \"start_time\": \"2020-01-15T14:45:59.543808Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.942630Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.942381Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.954881Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.954324Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.924176Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.923886Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.944087Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.943283Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -250,18 +250,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:02.187012Z\",\n \"start_time\": \"2020-01-15T14:46:02.105563Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.956824Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.956590Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.969671Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.969134Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.947019Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.946733Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.967772Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.966948Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -328,18 +328,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:05.031672Z\",\n \"start_time\": \"2020-01-15T14:46:04.947588Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.971631Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.971397Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:07.984843Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.984312Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.970646Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.970352Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:14.992111Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:14.991291Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -374,18 +374,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:09.325218Z\",\n \"start_time\": \"2020-01-15T14:46:09.303020Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:07.986743Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:07.986494Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.000411Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:07.999878Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:14.994877Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:14.994583Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.016953Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.016127Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -422,18 +422,18 @@\n \"execution_count\": 8,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:11.295440Z\",\n \"start_time\": \"2020-01-15T14:46:11.226553Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.002321Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.002089Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.017025Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.016477Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.019841Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.019545Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.043527Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.042688Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -486,18 +486,18 @@\n \"execution_count\": 9,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:13.808646Z\",\n \"start_time\": \"2020-01-15T14:46:13.680098Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.019000Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.018765Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.035279Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.034735Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.046555Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.046268Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.072912Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.072069Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -559,18 +559,18 @@\n \"execution_count\": 10,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:26.633233Z\",\n \"start_time\": \"2020-01-15T14:46:26.515209Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.037203Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.036969Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.053167Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.052415Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.075723Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.075438Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.101196Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.100338Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -616,18 +616,18 @@\n \"execution_count\": 11,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:30.026663Z\",\n \"start_time\": \"2020-01-15T14:46:29.893267Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.055304Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.054827Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.071565Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.071014Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.104106Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.103814Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.131155Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.130277Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -704,18 +704,18 @@\n \"execution_count\": 12,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:42.469341Z\",\n \"start_time\": \"2020-01-15T14:48:42.344209Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.073558Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.073324Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.091009Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.090424Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.134228Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.133902Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.162598Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.161717Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -790,18 +790,18 @@\n \"execution_count\": 13,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:45.267633Z\",\n \"start_time\": \"2020-01-15T14:48:44.943939Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.093015Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.092784Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.107207Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.106671Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.165900Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.165613Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.189013Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.188174Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'numba'\",\n \"output_type\": \"error\",\n@@ -842,18 +842,18 @@\n \"execution_count\": 14,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:54.755405Z\",\n \"start_time\": \"2020-01-15T14:48:54.634724Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.109149Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.108917Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.124888Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.124337Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.191958Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.191667Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.217623Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.216772Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -896,18 +896,18 @@\n \"execution_count\": 15,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:49:28.667528Z\",\n \"start_time\": \"2020-01-15T14:49:28.103914Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:08.126850Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:08.126613Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:08.144754Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:08.144215Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:15.220538Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:15.220245Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:15.249159Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:15.248337Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'numba'\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz", "unified_diff": null, "details": [{"source1": "area_weighted_temperature.ipynb", "source2": "area_weighted_temperature.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.99921875%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:18.473627Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:18.473330Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:19.375025Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:19.374083Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:19.378046Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:19.377699Z', 'iopub.status.idle': '2025-03-22T09:27:1 [\u2026]"], "unified_diff": "@@ -28,18 +28,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:57.222351Z\",\n \"start_time\": \"2020-03-17T14:43:56.147541Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.276702Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.276468Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.849417Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.848867Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:18.473627Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:18.473330Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.375025Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.374083Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -75,18 +75,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:57.831734Z\",\n \"start_time\": \"2020-03-17T14:43:57.651845Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.851561Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.851313Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.864849Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.864326Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.378046Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.377699Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.400869Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.399982Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -122,18 +122,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:59.887120Z\",\n \"start_time\": \"2020-03-17T14:43:59.582894Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.866794Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.866556Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.945209Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.944674Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.403857Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.403548Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.522745Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.521808Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -178,18 +178,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:18.777092Z\",\n \"start_time\": \"2020-03-17T14:44:18.736587Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.947141Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.946905Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.960243Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.959723Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.525730Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.525429Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.547523Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.546640Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -219,18 +219,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:52.607120Z\",\n \"start_time\": \"2020-03-17T14:44:52.564674Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.962141Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.961909Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.978760Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.978222Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.550396Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.550098Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.578242Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.577322Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -252,18 +252,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:54.334279Z\",\n \"start_time\": \"2020-03-17T14:44:54.280022Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.980567Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.980333Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:10.992487Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:10.991968Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.581157Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.580860Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.601150Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.600281Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air_weighted' is not defined\",\n \"output_type\": \"error\",\n@@ -294,18 +294,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:45:08.877307Z\",\n \"start_time\": \"2020-03-17T14:45:08.673383Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:10.994350Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:10.994116Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:11.007556Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:11.006829Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:19.604179Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:19.603886Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:19.624947Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:19.624085Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'weighted_mean' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb", "source2": "./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9991319444444444%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:21.922894Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:21.922123Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:22.176384Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:22.175470Z'}}}}\"}"], "unified_diff": "@@ -12,18 +12,18 @@\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"41b90ede\",\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:12.513272Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:12.513042Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:12.653843Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:12.653316Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:21.922894Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:21.922123Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:22.176384Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:22.175470Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz", "unified_diff": null, "details": [{"source1": "monthly-means.ipynb", "source2": "monthly-means.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.998721590909091%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:24.269519Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:24.269219Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:25.496359Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:25.495405Z'}}}, 3: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:25.499472Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:25.499152Z', 'iopub.status.idle': '2025-03-22T09:27:2 [\u2026]"], "unified_diff": "@@ -19,18 +19,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:35.958210Z\",\n \"start_time\": \"2018-11-28T20:51:35.936966Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.165312Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.165079Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.915480Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.914931Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:24.269519Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:24.269219Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.496359Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.495405Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -62,18 +62,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.072316Z\",\n \"start_time\": \"2018-11-28T20:51:36.016594Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.917579Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.917335Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.930216Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.929695Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.499472Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.499152Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.521073Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.520129Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -103,18 +103,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.932114Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.931880Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.944116Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.943593Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.523981Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.523685Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.544654Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.543730Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -136,18 +136,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.132413Z\",\n \"start_time\": \"2018-11-28T20:51:36.073708Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.945981Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.945749Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.959943Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.959408Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.547596Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.547299Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.571298Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.570365Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'month_length' is not defined\",\n \"output_type\": \"error\",\n@@ -177,18 +177,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.152913Z\",\n \"start_time\": \"2018-11-28T20:51:36.133997Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.961829Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.961595Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.973695Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.973182Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.574123Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.573802Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.594742Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.593830Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds_weighted' is not defined\",\n \"output_type\": \"error\",\n@@ -209,18 +209,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.190765Z\",\n \"start_time\": \"2018-11-28T20:51:36.154416Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.975585Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.975353Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:14.987823Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:14.987315Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.597510Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.597210Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.618526Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.617595Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -243,18 +243,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:40.264871Z\",\n \"start_time\": \"2018-11-28T20:51:36.192467Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:14.989663Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:14.989431Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:15.012307Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:15.011780Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.621444Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.621150Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.660593Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.659634Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds_unweighted' is not defined\",\n \"output_type\": \"error\",\n@@ -323,18 +323,18 @@\n \"execution_count\": 8,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:40.284898Z\",\n \"start_time\": \"2018-11-28T20:51:40.266406Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:15.014166Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:15.013934Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:15.017619Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:15.017093Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:25.663568Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:25.663268Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:25.668868Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:25.667955Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"# Wrap it into a simple function\\n\",\n \"def season_mean(ds, calendar=\\\"standard\\\"):\\n\",\n \" # Make a DataArray with the number of days in each month, size = len(time)\\n\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz", "unified_diff": null, "details": [{"source1": "multidimensional-coords.ipynb", "source2": "multidimensional-coords.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9992708333333333%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:28.077173Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:28.076866Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:29.307413Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:29.306461Z'}}}, 3: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:29.311256Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:29.310375Z', 'iopub.status.idle': '2025-03-22T09:27:2 [\u2026]"], "unified_diff": "@@ -16,18 +16,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:49:56.068395Z\",\n \"start_time\": \"2018-11-28T20:49:56.035349Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:16.422819Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:16.422587Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.171626Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.171068Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:28.077173Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:28.076866Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.307413Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.306461Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -60,18 +60,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:13.629720Z\",\n \"start_time\": \"2018-11-28T20:50:13.484542Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.173737Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.173492Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.186531Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.185744Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.311256Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.310375Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.331963Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.331043Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -100,18 +100,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:15.836061Z\",\n \"start_time\": \"2018-11-28T20:50:15.768376Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.188405Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.188176Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.200553Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.200027Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.335467Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.334559Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.355879Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.354970Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -142,18 +142,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:17.928556Z\",\n \"start_time\": \"2018-11-28T20:50:17.031211Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.202431Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.202201Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.215395Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.214877Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.358776Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.358478Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.380921Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.379981Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'plt' is not defined\",\n \"output_type\": \"error\",\n@@ -185,18 +185,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:20.567749Z\",\n \"start_time\": \"2018-11-28T20:50:19.999393Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.217242Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.217013Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.229370Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.228859Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.383754Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.383453Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.404514Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.403630Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -224,18 +224,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:31.131708Z\",\n \"start_time\": \"2018-11-28T20:50:30.444697Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.231287Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.231057Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.245431Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.244921Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.407258Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.406958Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.431633Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.430727Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'plt' is not defined\",\n \"output_type\": \"error\",\n@@ -272,18 +272,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:43.670463Z\",\n \"start_time\": \"2018-11-28T20:50:43.245501Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:17.247401Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:17.247129Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:17.261324Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:17.260803Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:29.434591Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:29.434291Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:29.458199Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:29.457242Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz", "unified_diff": null, "details": [{"source1": "visualization_gallery.ipynb", "source2": "visualization_gallery.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9984375%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:32.000860Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:32.000526Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:32.914200Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:32.913186Z'}}}, 3: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:32.917304Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:32.916993Z', 'iopub.status.idle': '2025-03-22T09:27:3 [\u2026]"], "unified_diff": "@@ -10,18 +10,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:18.794968Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:18.794733Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.363463Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.362857Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:32.000860Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:32.000526Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:32.914200Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:32.913186Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -49,18 +49,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:19.365602Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:19.365353Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.378378Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.377803Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:32.917304Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:32.916993Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:32.938294Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:32.937384Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'xr' is not defined\",\n \"output_type\": \"error\",\n@@ -91,18 +91,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:19.380321Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:19.380089Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.396284Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.395716Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:32.941295Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:32.940992Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:32.968293Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:32.967317Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -144,18 +144,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:19.398234Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:19.397999Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.416113Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.415541Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:32.971319Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:32.971017Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:33.001396Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:33.000409Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -208,18 +208,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:19.418017Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:19.417783Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.434112Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.433546Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:33.004296Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:33.003998Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:33.031760Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:33.030740Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -264,18 +264,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 6,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:19.436052Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:19.435818Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:19.451815Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:19.451248Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:33.034777Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:33.034467Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:33.061341Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:33.060409Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz", "unified_diff": null, "details": [{"source1": "weather-data.ipynb", "source2": "weather-data.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9992476851851853%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2025-03-22T09:27:35.340143Z', \"", " \"'iopub.status.busy': '2025-03-22T09:27:35.339845Z', 'iopub.status.idle': \"", " \"'2025-03-22T09:27:37.220907Z', 'shell.execute_reply': \"", " \"'2025-03-22T09:27:37.220008Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2025-03-22T09:27:37.224032Z', 'iopub.status.busy': \"", " \"'2025-03-22T09:27:37.223723Z', 'iopub.status.idle': '2025-03-22T09:27:3 [\u2026]"], "unified_diff": "@@ -15,18 +15,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:43:36.127628Z\",\n \"start_time\": \"2020-01-27T15:43:36.081733Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:20.919721Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:20.919484Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.078135Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.077532Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:35.340143Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:35.339845Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.220907Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.220008Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'xarray'\",\n \"output_type\": \"error\",\n@@ -86,18 +86,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:47:14.160297Z\",\n \"start_time\": \"2020-01-27T15:47:14.126738Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.080318Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.080069Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.093562Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.092751Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.224032Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.223723Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.245249Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.244436Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -119,18 +119,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:47:32.682065Z\",\n \"start_time\": \"2020-01-27T15:47:32.652629Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.095488Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.095249Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.107721Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.107148Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.248127Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.247835Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.267936Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.267133Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'df' is not defined\",\n \"output_type\": \"error\",\n@@ -158,18 +158,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:47:34.617042Z\",\n \"start_time\": \"2020-01-27T15:47:34.282605Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.109618Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.109386Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.122537Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.121941Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.270975Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.270652Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.291557Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.290723Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -197,18 +197,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:47:37.643175Z\",\n \"start_time\": \"2020-01-27T15:47:37.202479Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.124441Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.124207Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.136952Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.136396Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.294455Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.294159Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.314548Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.313723Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'df' is not defined\",\n \"output_type\": \"error\",\n@@ -236,18 +236,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:48:11.241224Z\",\n \"start_time\": \"2020-01-27T15:48:11.211156Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.138889Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.138649Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.152198Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.151404Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.317313Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.317023Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.338224Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.337385Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -269,18 +269,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:48:13.131247Z\",\n \"start_time\": \"2020-01-27T15:48:12.924985Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.154057Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.153825Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.166338Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.165779Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.340968Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.340650Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.361311Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.360390Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'freeze' is not defined\",\n \"output_type\": \"error\",\n@@ -308,18 +308,18 @@\n \"execution_count\": 8,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:48:08.498259Z\",\n \"start_time\": \"2020-01-27T15:48:08.210890Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.168261Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.168026Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.181755Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.181177Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.364711Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.363938Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.387282Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.386330Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -364,18 +364,18 @@\n \"execution_count\": 9,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:49:34.855086Z\",\n \"start_time\": \"2020-01-27T15:49:34.406439Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.183748Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.183513Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.197519Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.196736Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.390399Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.390097Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.413938Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.413005Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -414,18 +414,18 @@\n \"execution_count\": 10,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:50:09.144586Z\",\n \"start_time\": \"2020-01-27T15:50:08.734682Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.199487Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.199257Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.214626Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.214017Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.417713Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.416789Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.442811Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.441872Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -474,18 +474,18 @@\n \"execution_count\": 11,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:51:40.279299Z\",\n \"start_time\": \"2020-01-27T15:51:40.220342Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.216557Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.216325Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.230657Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.230066Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.446658Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.445669Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.470385Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.469437Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -510,18 +510,18 @@\n \"execution_count\": 12,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:52:11.815769Z\",\n \"start_time\": \"2020-01-27T15:52:11.770825Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.232533Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.232299Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.245857Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.245294Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.473828Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.473090Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.496061Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.495171Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'both' is not defined\",\n \"output_type\": \"error\",\n@@ -543,18 +543,18 @@\n \"execution_count\": 13,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-27T15:52:14.867866Z\",\n \"start_time\": \"2020-01-27T15:52:14.449684Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2026-04-24T15:46:22.247712Z\",\n- \"iopub.status.busy\": \"2026-04-24T15:46:22.247484Z\",\n- \"iopub.status.idle\": \"2026-04-24T15:46:22.260390Z\",\n- \"shell.execute_reply\": \"2026-04-24T15:46:22.259829Z\"\n+ \"iopub.execute_input\": \"2025-03-22T09:27:37.498887Z\",\n+ \"iopub.status.busy\": \"2025-03-22T09:27:37.498594Z\",\n+ \"iopub.status.idle\": \"2025-03-22T09:27:37.520472Z\",\n+ \"shell.execute_reply\": \"2025-03-22T09:27:37.519605Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'df' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/getting-started-guide/quick-overview.html", "source2": "./usr/share/doc/python-xarray-doc/html/getting-started-guide/quick-overview.html", "unified_diff": "@@ -324,15 +324,15 @@\n \n \n \n
\n

Plotting\u00b6

\n

Visualizing your datasets is quick and convenient:

\n
In [37]: data.plot()\n-Out[37]: <matplotlib.collections.QuadMesh at 0xe83d1a40>\n+Out[37]: <matplotlib.collections.QuadMesh at 0xe80d0a40>\n 
\n
\n \"_build/html/_static/plotting_quick_overview.png\"\n

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.

\n
\n
\n

pandas\u00b6

\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -253,15 +253,15 @@\n [0.37342613, 1.49497537, 1.33584385]])\n Coordinates:\n * x (x) int32 8B 10 20\n Dimensions without coordinates: y\n *\b**\b**\b**\b**\b* P\bPl\blo\bot\btt\bti\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n Visualizing your datasets is quick and convenient:\n In [37]: data.plot()\n-Out[37]: \n+Out[37]: \n [_build/html/_static/plotting_quick_overview.png]\n Note the automatic labeling with names and units. Our effort in adding metadata\n attributes has paid off! Many aspects of these figures are customizable: see\n _\bP_\bl_\bo_\bt_\bt_\bi_\bn_\bg.\n *\b**\b**\b**\b**\b* p\bpa\ban\bnd\bda\bas\bs_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n Xarray objects can be easily converted to and from pandas objects using the\n to_series(), to_dataframe() and _\bt_\bo_\b__\bx_\ba_\br_\br_\ba_\by_\b(_\b) methods:\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/internals/internal-design.html", "source2": "./usr/share/doc/python-xarray-doc/html/internals/internal-design.html", "unified_diff": "@@ -210,15 +210,15 @@\n File /usr/lib/python3/dist-packages/pooch/utils.py:276, in make_local_storage(path, env)\n 272 if env is not None:\n 273 message.append(\n 274 f"Use environment variable '{env}' to specify a different location."\n 275 )\n --> 276 raise PermissionError(" ".join(message)) from error\n \n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n In [2]: var = da.variable\n ---------------------------------------------------------------------------\n AttributeError Traceback (most recent call last)\n Cell In[2], line 1\n ----> 1 var = da.variable\n \n@@ -312,15 +312,15 @@\n File /usr/lib/python3/dist-packages/pooch/utils.py:276, in make_local_storage(path, env)\n 272 if env is not None:\n 273 message.append(\n 274 f"Use environment variable '{env}' to specify a different location."\n 275 )\n --> 276 raise PermissionError(" ".join(message)) from error\n \n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n In [8]: var = da.variable\n ---------------------------------------------------------------------------\n AttributeError Traceback (most recent call last)\n Cell In[8], line 1\n ----> 1 var = da.variable\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -159,15 +159,15 @@\n 273 message.append(\n 274 f\"Use environment variable '{env}' to specify a different\n location.\"\n 275 )\n --> 276 raise PermissionError(\" \".join(message)) from error\n \n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n In [2]: var = da.variable\n ---------------------------------------------------------------------------\n AttributeError Traceback (most recent call last)\n Cell In[2], line 1\n ----> 1 var = da.variable\n@@ -260,15 +260,15 @@\n 273 message.append(\n 274 f\"Use environment variable '{env}' to specify a different\n location.\"\n 275 )\n --> 276 raise PermissionError(\" \".join(message)) from error\n \n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n In [8]: var = da.variable\n ---------------------------------------------------------------------------\n AttributeError Traceback (most recent call last)\n Cell In[8], line 1\n ----> 1 var = da.variable\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html", "source2": "./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html", "unified_diff": "@@ -163,18 +163,18 @@\n File /usr/lib/python3/dist-packages/pooch/utils.py:276, in make_local_storage(path, env)\n 272 if env is not None:\n 273 message.append(\n 274 f"Use environment variable '{env}' to specify a different location."\n 275 )\n --> 276 raise PermissionError(" ".join(message)) from error\n \n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n In [5]: ds.to_zarr("rasm.zarr", mode="w")\n-Out[5]: <xarray.backends.zarr.ZarrStore at 0xe3ac4c40>\n+Out[5]: <xarray.backends.zarr.ZarrStore at 0xe379dc88>\n \n In [6]: zgroup = zarr.open("rasm.zarr")\n \n In [7]: print(os.listdir("rasm.zarr"))\n ['latitude', 'zarr.json', 'longitude']\n \n In [8]: print(zgroup.tree())\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -111,19 +111,19 @@\n 273 message.append(\n 274 f\"Use environment variable '{env}' to specify a different\n location.\"\n 275 )\n --> 276 raise PermissionError(\" \".join(message)) from error\n \n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n In [5]: ds.to_zarr(\"rasm.zarr\", mode=\"w\")\n-Out[5]: \n+Out[5]: \n \n In [6]: zgroup = zarr.open(\"rasm.zarr\")\n \n In [7]: print(os.listdir(\"rasm.zarr\"))\n ['latitude', 'zarr.json', 'longitude']\n \n In [8]: print(zgroup.tree())\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/searchindex.js", "source2": "./usr/share/doc/python-xarray-doc/html/searchindex.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2353,45 +2353,45 @@\n \"4\": \"py:attribute\",\n \"5\": \"py:function\"\n },\n \"terms\": {\n \"\": [1, 3, 5, 6, 7, 8, 12, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52],\n \"0\": [3, 6, 7, 8, 9, 11, 12, 13, 14, 16, 18, 19, 20, 22, 24, 25, 26, 27, 28, 30, 33, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"00\": [36, 37, 38, 45, 47, 51, 52, 53, 54],\n+ \"000\": 51,\n \"000000\": 16,\n \"000000000\": [37, 38, 52],\n \"0001\": [53, 54],\n \"00010101\": 53,\n \"00010201\": 53,\n \"00010301\": 53,\n \"0002\": 53,\n \"00021001\": 53,\n \"00021101\": 53,\n \"00021201\": 53,\n \"000e\": [48, 51],\n- \"000j\": 51,\n \"001\": 51,\n \"001e\": 37,\n- \"003\": 36,\n- \"004\": 36,\n+ \"001j\": 51,\n+ \"005\": 51,\n \"005036\": 40,\n \"005e\": 37,\n- \"005j\": 51,\n \"00688889\": 36,\n \"006e\": 37,\n- \"007\": 36,\n- \"008\": [36, 51],\n+ \"007e\": 51,\n+ \"008\": 51,\n \"00914929\": 36,\n \"00941742\": 36,\n \"00968205\": 36,\n \"00973567\": 36,\n+ \"00j\": 51,\n \"01\": [14, 16, 20, 26, 30, 32, 37, 38, 41, 43, 44, 45, 47, 48, 51, 52, 53],\n \"01082401\": 36,\n \"01183847\": 36,\n- \"014\": 51,\n+ \"015\": 51,\n \"016\": 51,\n \"01636376\": 36,\n \"01652688\": 36,\n \"01652764\": 36,\n \"0165891\": 36,\n \"01670071\": 36,\n \"01670121\": 36,\n@@ -2403,14 +2403,15 @@\n \"01806694\": 36,\n \"01814439\": 36,\n \"0182217\": 36,\n \"018e\": 37,\n \"019\": 40,\n \"01906\": 48,\n \"019e\": 37,\n+ \"01j\": 51,\n \"01t00\": [37, 38, 52, 54],\n \"01t03\": 52,\n \"01t12\": 52,\n \"02\": [11, 36, 37, 38, 41, 43, 44, 45, 48, 52, 53],\n \"020e\": 37,\n \"021e\": [37, 45],\n \"023e\": 37,\n@@ -2430,39 +2431,40 @@\n \"035e\": 37,\n \"03611368\": 36,\n \"03626848\": 36,\n \"03642301\": 36,\n \"036e\": 48,\n \"0379266750948\": 45,\n \"037e\": 37,\n- \"038\": 43,\n+ \"038\": [43, 51],\n \"03835\": 41,\n \"03957499\": 19,\n \"03t00\": [37, 38],\n \"04\": [19, 36, 37, 38, 41, 43, 47, 52],\n \"04096206\": 36,\n \"04097352\": 36,\n \"040e\": 48,\n \"0417827\": 45,\n \"042e\": 37,\n \"044\": [35, 47],\n \"04423597\": 19,\n \"044236\": 47,\n+ \"045\": 51,\n \"04569531\": 36,\n+ \"045j\": 51,\n \"04703446\": 36,\n \"047e\": [37, 48],\n \"04835611\": 36,\n \"04862391\": 36,\n \"048e\": 37,\n \"04t00\": [37, 38],\n \"05\": [36, 38, 45, 48, 51, 52, 53],\n \"05405954\": 36,\n \"05556\": 44,\n \"056\": 44,\n- \"056e\": 51,\n \"057e\": 37,\n \"058e\": 37,\n \"05912615\": 36,\n \"05t00\": 37,\n \"06\": [28, 36, 38, 45, 52],\n \"061\": 43,\n \"06141\": 41,\n@@ -2474,22 +2476,23 @@\n \"06689\": 36,\n \"066e\": [37, 48],\n \"06732\": 41,\n \"067e\": 48,\n \"069\": 44,\n \"06957\": 40,\n \"06t00\": 37,\n- \"07\": [38, 52, 53],\n+ \"07\": [38, 51, 52, 53],\n \"070e\": 37,\n \"07180381\": 19,\n \"071804\": 47,\n \"072\": 47,\n \"072e\": 48,\n \"074e\": 37,\n \"078\": 41,\n+ \"07j\": 51,\n \"07t00\": 37,\n \"08\": [38, 51, 52],\n \"08002\": 40,\n \"08172729\": 36,\n \"08203696\": 36,\n \"08285275\": 36,\n \"08299933\": 36,\n@@ -2520,83 +2523,82 @@\n \"099\": 41,\n \"09t00\": 37,\n \"0alpha10\": 54,\n \"0d\": 54,\n \"0dev\": 54,\n \"0th\": [37, 43],\n \"0x0l\": 54,\n- \"0xddf3f030\": 48,\n- \"0xddf3f0e0\": 48,\n- \"0xddf3f190\": 48,\n- \"0xddf48500\": 48,\n- \"0xddf485b0\": 48,\n- \"0xddf48660\": 48,\n- \"0xddf48710\": 48,\n- \"0xddf487c0\": 48,\n- \"0xde0a3c90\": 48,\n- \"0xde0a97c0\": 48,\n- \"0xde0af3a0\": 48,\n- \"0xde0af450\": 48,\n- \"0xde0af500\": 48,\n- \"0xde121030\": 48,\n- \"0xde193870\": 48,\n- \"0xde1fe920\": 48,\n- \"0xdf57d2f0\": 48,\n- \"0xdf57d3a0\": 48,\n- \"0xdf5afdf0\": 48,\n- \"0xdfaecea0\": 48,\n- \"0xdfaf4b30\": 48,\n- \"0xdfefff50\": 48,\n- \"0xe00bd710\": 48,\n- \"0xe012a030\": 48,\n- \"0xe014cea0\": 48,\n- \"0xe015fdf0\": 48,\n- \"0xe01913a0\": 48,\n- \"0xe01a7240\": 48,\n- \"0xe01ac2f0\": 48,\n- \"0xe01ac7c0\": 48,\n- \"0xe032b538\": 48,\n- \"0xe03a1870\": 48,\n- \"0xe1baf8e0\": 45,\n- \"0xe1c9eca8\": 48,\n- \"0xe1df2190\": 45,\n- \"0xe1e39388\": 45,\n- \"0xe1e39c40\": 45,\n- \"0xe1e454f0\": 45,\n- \"0xe1e45f10\": 45,\n- \"0xe1ea23c8\": 48,\n- \"0xe227b5b0\": 54,\n- \"0xe239f3d0\": 45,\n- \"0xe246cf48\": 48,\n- \"0xe2c9d870\": 44,\n- \"0xe3ac4c40\": 32,\n- \"0xe42f7710\": 38,\n- \"0xe42f7870\": 38,\n- \"0xe49572d0\": 48,\n- \"0xe4b96df0\": 44,\n- \"0xe83443c8\": 44,\n- \"0xe8349df0\": 44,\n- \"0xe83c5af8\": 48,\n- \"0xe83d1030\": 48,\n- \"0xe83d1a40\": 19,\n+ \"0xdd515ea0\": 54,\n+ \"0xddba0030\": 48,\n+ \"0xddba00e0\": 48,\n+ \"0xddba0190\": 48,\n+ \"0xddba8500\": 48,\n+ \"0xddba85b0\": 48,\n+ \"0xddba8660\": 48,\n+ \"0xddba8710\": 48,\n+ \"0xddba87c0\": 48,\n+ \"0xddd04c90\": 48,\n+ \"0xddd097c0\": 48,\n+ \"0xddd103a0\": 48,\n+ \"0xddd10450\": 48,\n+ \"0xddd10500\": 48,\n+ \"0xdddeb030\": 48,\n+ \"0xdddf1870\": 48,\n+ \"0xdde0e240\": 48,\n+ \"0xdf1db2f0\": 48,\n+ \"0xdf1db3a0\": 48,\n+ \"0xdf1dbd40\": 48,\n+ \"0xdf74aea0\": 48,\n+ \"0xdfc0ba80\": 48,\n+ \"0xdfcdc710\": 48,\n+ \"0xdfd86190\": 48,\n+ \"0xdfde9190\": 48,\n+ \"0xdfe17710\": 48,\n+ \"0xdff8a920\": 48,\n+ \"0xdffa31a0\": 48,\n+ \"0xdffc3240\": 48,\n+ \"0xdfffc660\": 48,\n+ \"0xe02ed570\": 48,\n+ \"0xe132b9d0\": 48,\n+ \"0xe183c2d0\": 48,\n+ \"0xe1849850\": 45,\n+ \"0xe1ac24f0\": 45,\n+ \"0xe1b0a898\": 45,\n+ \"0xe1b0f3d0\": 45,\n+ \"0xe1b0fcd0\": 45,\n+ \"0xe1b31070\": 45,\n+ \"0xe200fbe0\": 48,\n+ \"0xe20762b0\": 45,\n+ \"0xe213cc90\": 44,\n+ \"0xe2177f48\": 48,\n+ \"0xe379dc88\": 32,\n+ \"0xe3ff3710\": 38,\n+ \"0xe3ff3870\": 38,\n+ \"0xe48a1df0\": 44,\n+ \"0xe7f6b870\": 48,\n+ \"0xe803d3c8\": [44, 48],\n+ \"0xe8043df0\": 44,\n+ \"0xe80c6bb0\": 48,\n+ \"0xe80d03c8\": 48,\n+ \"0xe80d0a40\": 19,\n \"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, 43, 45, 47, 48, 49, 50, 51, 52, 53],\n \"10\": [3, 6, 7, 8, 12, 13, 14, 16, 18, 19, 24, 25, 26, 27, 28, 30, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"100\": [3, 7, 8, 27, 28, 35, 36, 37, 38, 41, 43, 44, 45, 48, 49, 50, 54],\n \"1000\": [27, 37, 54],\n \"10000\": 36,\n \"100000\": 37,\n \"1000x1000\": 37,\n \"1003\": 36,\n \"100e\": 51,\n \"101\": [36, 38, 41, 43, 48, 54],\n \"101985\": 45,\n \"101e\": 37,\n \"102\": [36, 38, 41, 43, 48, 54],\n \"1025\": 41,\n- \"102e\": 37,\n+ \"102e\": [37, 51],\n \"103\": [36, 38, 41, 43, 48, 54],\n \"104\": [36, 38, 41, 43, 48, 54],\n \"104569\": 47,\n \"10456922\": 19,\n \"104e\": 51,\n \"105\": [35, 36, 38, 41, 43, 47, 48],\n \"1054\": 30,\n@@ -2607,15 +2609,15 @@\n \"10614938\": 36,\n \"107\": [36, 38, 41, 43, 48],\n \"1074\": 30,\n \"1075\": 30,\n \"1076\": 30,\n \"1078\": 30,\n \"107e\": 48,\n- \"108\": [36, 38, 41, 43, 48, 51, 52],\n+ \"108\": [36, 38, 41, 43, 48, 52],\n \"1080\": [26, 30],\n \"1081\": 30,\n \"1087\": 41,\n \"109\": [36, 38, 41, 43, 48],\n \"10kb\": 36,\n \"10m\": [6, 7],\n \"10t00\": 37,\n@@ -2655,71 +2657,73 @@\n \"1231\": 40,\n \"12310214428849964\": 54,\n \"1234\": 3,\n \"124\": [36, 43, 45, 48, 52],\n \"12428\": 53,\n \"124b\": 50,\n \"125\": [36, 43, 45, 48],\n- \"125e\": 36,\n \"126\": [36, 43, 48, 54],\n \"12696983303810094\": 54,\n \"127\": [36, 38, 40, 43, 48, 54],\n+ \"1275883880\": 51,\n \"128\": [36, 43, 48, 54],\n- \"128b\": [40, 43],\n+ \"128b\": [40, 43, 51],\n \"129\": [36, 43, 48, 54],\n \"1294\": 43,\n \"12944067971751294\": 54,\n- \"12b\": [19, 35, 36, 38, 40, 41, 43, 44, 47, 48, 49, 50, 51, 54],\n+ \"12b\": [19, 35, 36, 38, 40, 41, 43, 44, 47, 48, 49, 50, 54],\n \"12kb\": 52,\n \"12t00\": 37,\n \"13\": [8, 14, 19, 30, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"130\": [36, 43, 48],\n \"131\": [36, 43, 48],\n \"132\": [36, 48, 52],\n \"132e\": 37,\n \"133\": [36, 48],\n+ \"1339669549717624835\": 51,\n \"134\": [36, 43, 48],\n \"135\": [36, 48],\n \"135632\": [19, 47],\n \"13563237\": [19, 35],\n \"136\": [19, 35, 36, 47, 48, 49],\n \"137\": [36, 48],\n \"1375315200\": 45,\n \"1375535565632705\": 54,\n \"137e\": 37,\n \"138\": [36, 48, 54],\n \"1388\": 45,\n \"139\": [36, 43, 48],\n+ \"139e\": 51,\n \"13t00\": 37,\n \"14\": [8, 11, 12, 13, 19, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"140\": [36, 48],\n \"1402938\": 19,\n \"1405\": 45,\n \"140b\": [35, 38, 47],\n \"140kb\": 52,\n \"141\": [36, 44, 48],\n- \"141e\": [37, 48],\n+ \"141e\": [37, 48, 51],\n \"142\": [19, 36, 48],\n \"1422\": 45,\n \"143\": [36, 48],\n \"143e\": 37,\n \"144\": [36, 48],\n \"1443657600\": 45,\n- \"144b\": [19, 38, 43],\n+ \"144b\": [19, 38, 43, 51],\n+ \"144e\": 51,\n \"145\": [36, 48],\n \"145e\": 37,\n \"146\": [36, 48],\n \"1460\": 52,\n \"14672529\": 36,\n \"147\": [36, 48],\n \"148\": [16, 36, 48],\n \"14874584\": 36,\n \"14880519\": 19,\n \"149\": 48,\n- \"149645564191\": 51,\n \"14974655\": 36,\n \"14975103\": 36,\n \"14985403\": 36,\n \"14990579\": 36,\n \"14kb\": 36,\n \"14t00\": 37,\n \"15\": [6, 7, 8, 9, 13, 14, 19, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n@@ -2741,15 +2745,17 @@\n \"155\": 41,\n \"1550\": 32,\n \"1552\": 32,\n \"1553\": 32,\n \"156b\": 36,\n \"158\": [41, 44],\n \"158e\": 37,\n+ \"159\": 51,\n \"15b\": 36,\n+ \"15j\": 51,\n \"15t00\": 37,\n \"15th\": 50,\n \"16\": [8, 11, 19, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"160\": [13, 32],\n \"160b\": [25, 45, 54],\n \"162\": [30, 32],\n \"162e\": 48,\n@@ -2761,27 +2767,29 @@\n \"1667\": 44,\n \"167\": [7, 30, 32, 38],\n \"1678\": [18, 52, 53],\n \"168\": [30, 32],\n \"169\": [30, 32, 41],\n \"16959064\": 36,\n \"16b\": [19, 35, 36, 38, 40, 43, 44, 45, 47, 48, 49, 50, 53, 54],\n+ \"16j\": 51,\n \"16t00\": 37,\n \"17\": [8, 19, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"1703814\": 45,\n \"171\": 43,\n \"171e\": [37, 48],\n \"17234978\": 19,\n \"173\": [47, 49],\n \"1732\": [19, 35, 47],\n \"17321465\": [19, 35],\n \"173215\": [19, 47],\n \"173e\": 37,\n \"174\": [37, 38],\n \"175\": 37,\n+ \"175e\": 51,\n \"176\": [32, 37],\n \"177\": [32, 37],\n \"1779\": 36,\n \"177e\": 37,\n \"178\": [32, 37],\n \"179\": [32, 37, 41],\n \"17t00\": 37,\n@@ -2804,19 +2812,20 @@\n \"19\": [8, 19, 32, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"1900\": 45,\n \"191\": [40, 41],\n \"19101252\": 19,\n \"191e\": 48,\n \"1926\": 40,\n \"192b\": [36, 38, 53],\n- \"192e\": 37,\n+ \"192e\": [37, 51],\n \"1970\": [27, 54],\n \"1991\": 54,\n \"1999\": 36,\n \"19t00\": 37,\n+ \"1b45e9c096d5\": 45,\n \"1d\": [8, 24, 36, 38, 44, 47, 48, 49, 50, 54],\n \"1e\": 54,\n \"1e6\": 36,\n \"1h\": 52,\n \"1kb\": [36, 37, 52],\n \"1m\": 14,\n \"1st\": [43, 50],\n@@ -2836,41 +2845,34 @@\n \"202\": 43,\n \"2020\": [34, 37],\n \"2021\": [33, 34],\n \"2022\": [34, 38],\n \"2023\": 38,\n \"2025\": [26, 30, 32, 45],\n \"202e\": 37,\n+ \"2035765567\": 51,\n \"205\": [32, 43],\n- \"206\": 32,\n- \"206e\": 37,\n+ \"206\": [32, 51],\n+ \"206e\": [37, 51],\n \"207\": [32, 45],\n \"208\": 32,\n \"208e\": 37,\n \"209\": 32,\n \"20995484\": 19,\n- \"20b\": [19, 35, 43, 44, 45, 51, 54],\n+ \"20b\": [19, 35, 43, 44, 45, 54],\n \"20t00\": 37,\n \"21\": [8, 19, 32, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53],\n \"210\": 32,\n \"210e\": 37,\n \"211\": 32,\n \"212\": [19, 32, 35, 47, 49],\n \"212112\": [19, 47],\n \"21211203\": [19, 35],\n \"213\": 32,\n \"214\": [32, 40],\n- \"2147420238\": 51,\n- \"2147435733\": 51,\n- \"2147463450\": 51,\n- \"2147471625\": 51,\n- \"2147483396\": 51,\n- \"2147483429\": 51,\n- \"2147483495\": 51,\n- \"2147483516\": 51,\n \"217\": [30, 32],\n \"2174\": 36,\n \"21t00\": 37,\n \"22\": [19, 32, 33, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53],\n \"220\": 43,\n \"220e\": 51,\n \"222\": [30, 32],\n@@ -2894,67 +2896,70 @@\n \"2298\": 32,\n \"2299\": 32,\n \"22t00\": 37,\n \"23\": [18, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53],\n \"230\": [30, 32],\n \"2300\": 32,\n \"231\": [30, 32],\n+ \"231j\": 51,\n \"232\": [30, 32],\n \"23207067\": 36,\n+ \"23216\": 51,\n \"232b\": 45,\n \"233\": [30, 32],\n \"234\": [30, 32],\n \"234e\": 37,\n \"2355\": 43,\n \"236\": [30, 32],\n \"2380\": 54,\n \"23859177\": 36,\n \"23991312\": 36,\n \"23kb\": 52,\n \"23t00\": 37,\n \"23t12\": 36,\n \"24\": [7, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"240\": [44, 48, 52],\n- \"240b\": [37, 45],\n+ \"240b\": [37, 45, 51],\n \"240e\": 48,\n \"241e\": 37,\n \"242e\": 37,\n+ \"243\": 51,\n \"244\": 38,\n \"2442\": 37,\n- \"245\": [13, 43],\n+ \"245\": [13, 43, 51],\n \"245e\": 48,\n \"2467\": 37,\n \"248\": 36,\n \"2483\": 36,\n \"248e\": 37,\n \"2493\": 45,\n- \"24b\": [19, 35, 36, 38, 40, 41, 43, 44, 47, 49, 51, 54],\n+ \"24b\": [19, 35, 36, 38, 40, 41, 43, 44, 47, 49, 54],\n \"24h\": 54,\n \"24t00\": 37,\n \"25\": [7, 8, 14, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"250\": [13, 48],\n \"2509\": 36,\n \"251\": 36,\n \"2515\": 36,\n \"253\": 38,\n \"255\": [13, 43, 45],\n \"2554\": 40,\n+ \"256b\": 51,\n \"258\": [30, 32, 43],\n \"25828142\": 36,\n \"259\": [30, 32, 41, 44],\n \"25t00\": 37,\n \"26\": [19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53],\n \"260\": [13, 30, 32, 43],\n \"26047600586578334\": 54,\n \"2605\": [38, 40],\n \"261\": [30, 32],\n \"261e\": 48,\n \"262\": [30, 32],\n \"26297658\": 36,\n- \"262j\": 51,\n \"263\": [30, 32],\n \"263e\": 48,\n \"264\": 44,\n \"26410385\": 36,\n \"264b\": 38,\n \"265\": 13,\n \"26522911\": 36,\n@@ -3012,81 +3017,85 @@\n \"29519584\": 36,\n \"29645358\": 36,\n \"296e\": 37,\n \"297e\": 48,\n \"29844148\": 36,\n \"29t00\": 37,\n \"29t12\": 36,\n+ \"2b\": 51,\n \"2d\": [19, 38, 43, 47, 48, 50, 53, 54],\n \"2ecc71\": 48,\n \"2kb\": [36, 52],\n \"2m\": 6,\n \"2mt\": 6,\n \"2nd\": [43, 48],\n \"2x\": 54,\n \"3\": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 24, 25, 26, 27, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"30\": [11, 13, 18, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53],\n \"300\": [7, 36, 41, 44, 45],\n \"302\": 40,\n \"302e\": 37,\n \"303\": 26,\n+ \"3031\": 51,\n \"304\": 26,\n \"305\": [26, 53],\n \"30555813\": 36,\n \"305e\": 37,\n \"306\": 26,\n \"30682759\": 36,\n \"306e\": 37,\n \"307\": 26,\n \"307e\": 37,\n \"308\": 51,\n \"30852683\": 36,\n \"308j\": 51,\n- \"309\": [44, 51],\n+ \"309\": 44,\n+ \"309j\": 51,\n \"30b\": 36,\n \"30t00\": [37, 52],\n \"30t1\": 52,\n \"30t12\": 52,\n \"30t18\": 52,\n \"30t21\": 52,\n \"31\": [14, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 48, 49, 51, 52, 53],\n \"310\": 13,\n- \"313j\": 51,\n+ \"311j\": 51,\n+ \"313\": 51,\n \"315e\": 37,\n \"316\": 44,\n \"3179\": 41,\n \"319e\": 37,\n \"31t18\": 52,\n \"31t23\": 52,\n \"32\": [19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 48, 49, 51, 52, 53, 54],\n \"320b\": 45,\n \"320e\": 37,\n \"321\": 44,\n \"3226808\": 19,\n \"322e\": 37,\n- \"324\": 51,\n \"324j\": 51,\n \"3261\": 40,\n \"32618\": 45,\n \"326e\": 37,\n \"3297\": 41,\n- \"32b\": [19, 35, 36, 38, 40, 43, 44, 49, 50, 51, 52, 54],\n+ \"32b\": [19, 35, 36, 38, 40, 43, 44, 49, 50, 52, 54],\n \"33\": [19, 35, 36, 38, 40, 41, 43, 44, 45, 48, 49, 51, 52, 54],\n \"331e\": 37,\n- \"333\": [49, 51],\n+ \"333\": 49,\n \"33326004\": 19,\n \"333e\": [37, 51],\n \"33419587\": 36,\n \"335\": [40, 53],\n \"3356\": 41,\n \"33584385\": 19,\n \"336\": [38, 43, 54],\n \"3362\": 40,\n \"33622174433445307\": 54,\n \"337e\": 37,\n+ \"3389693394\": 51,\n \"339\": 40,\n \"34\": [6, 7, 8, 9, 11, 12, 13, 14, 19, 35, 36, 38, 41, 43, 44, 45, 48, 49, 51, 53, 54],\n \"340\": 13,\n \"340921626611\": 45,\n \"341e\": [37, 48],\n \"342\": 43,\n \"342e\": 48,\n@@ -3111,15 +3120,15 @@\n \"359\": [38, 52],\n \"36\": [3, 19, 35, 36, 38, 41, 43, 44, 45, 48, 49, 51, 52, 54],\n \"360\": [45, 52],\n \"360_dai\": [45, 53, 54],\n \"361\": 52,\n \"361e\": 37,\n \"362\": 52,\n- \"362e\": [36, 48],\n+ \"362e\": 48,\n \"363\": 52,\n \"36303831\": 36,\n \"364\": [36, 52],\n \"3648\": 52,\n \"3649\": 52,\n \"365\": [14, 48, 52, 54],\n \"3650\": 52,\n@@ -3142,73 +3151,77 @@\n \"37516528\": 36,\n \"37572056\": 19,\n \"375e\": 37,\n \"376\": 40,\n \"3767\": 40,\n \"37674971618967135\": 54,\n \"377\": [38, 43, 54],\n+ \"3778513437244823336\": 51,\n \"378e\": 48,\n \"38\": [19, 35, 36, 38, 41, 43, 44, 45, 48, 49, 51, 54],\n \"381\": 44,\n- \"381e\": 48,\n+ \"381e\": [48, 51],\n \"383\": 51,\n- \"384e\": 37,\n+ \"384e\": [37, 51],\n \"3884\": [36, 52],\n \"3885\": 52,\n \"3886\": 52,\n \"3887\": 52,\n \"389e\": 45,\n+ \"38j\": 51,\n \"39\": [6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 35, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"391e\": 37,\n \"392e\": 45,\n \"395\": [41, 43],\n \"396\": 41,\n \"3963\": 36,\n \"3989\": 36,\n \"3b\": 36,\n- \"3cb4\": 45,\n \"3d\": [5, 7, 8, 47, 48, 53, 54],\n \"3h\": 54,\n \"3kb\": [36, 52],\n \"3min\": 53,\n \"3rd\": 28,\n \"4\": [3, 6, 7, 8, 9, 11, 12, 13, 14, 16, 19, 25, 27, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 49, 50, 51, 52, 53],\n \"40\": [19, 28, 35, 36, 38, 40, 41, 43, 44, 45, 48, 49, 50, 54],\n \"400\": [48, 49],\n \"400e\": 48,\n \"401\": 43,\n+ \"401e\": 51,\n \"40324704\": 36,\n+ \"403e\": 51,\n \"404\": 43,\n \"405\": 43,\n+ \"4052997171\": 51,\n \"406e\": 48,\n \"4074\": 41,\n \"407e\": 37,\n \"408\": 41,\n \"40824829\": 36,\n \"40880017\": 36,\n \"40b\": [19, 35, 36, 38, 43, 44, 45, 53, 54],\n \"41\": [19, 35, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"410e\": 48,\n \"41155042\": 36,\n \"41156272\": 36,\n \"41184582\": 36,\n \"41198807\": 36,\n \"412\": 41,\n- \"413e\": 51,\n \"414\": 43,\n \"4152\": 36,\n \"415e\": 37,\n \"4167\": 45,\n \"416b\": 36,\n \"418e\": 37,\n \"419\": 41,\n \"41954454\": 19,\n \"419e\": 37,\n- \"41c1\": 45,\n+ \"41d9\": 45,\n \"42\": [19, 35, 36, 38, 40, 41, 43, 44, 45, 48, 49, 50, 54],\n+ \"421e\": 51,\n \"423\": 48,\n \"424\": 38,\n \"42497233\": 19,\n \"425\": [19, 41],\n \"427\": 44,\n \"428\": 48,\n \"4281\": 36,\n@@ -3236,22 +3249,23 @@\n \"453\": [40, 43],\n \"453e\": 48,\n \"4555\": 41,\n \"456b\": 38,\n \"457e\": 52,\n \"458e\": 52,\n \"459e\": 52,\n+ \"45j\": 51,\n \"46\": [19, 36, 38, 40, 41, 43, 44, 45, 48, 49, 54],\n \"46194319\": 36,\n \"462\": 43,\n \"46462434\": 19,\n \"464e\": 37,\n \"465e\": 37,\n \"466\": [38, 44],\n- \"467e\": 37,\n+ \"467e\": [36, 37],\n \"46830462\": 36,\n \"469\": [45, 47, 49],\n \"4691\": [19, 35, 37, 47],\n \"469112\": [19, 47],\n \"4691123\": [19, 35],\n \"47\": [7, 19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"471\": 43,\n@@ -3260,37 +3274,35 @@\n \"4715\": 45,\n \"47179359\": 36,\n \"47195655\": 36,\n \"472e\": 37,\n \"476e\": 48,\n \"48\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"4809\": 54,\n- \"480b\": 51,\n \"481\": 43,\n \"481e\": 37,\n \"48541500\": 45,\n \"485e\": 37,\n \"4867138\": 36,\n \"48671934\": 36,\n \"48672119\": 36,\n \"4875\": 36,\n \"487e\": 37,\n- \"48956106\": 51,\n \"48b\": [19, 35, 36, 38, 40, 43, 44, 47, 49, 50, 51, 53],\n \"49\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"4909415\": 19,\n \"494929\": 47,\n \"49492927\": 19,\n \"49497537\": 19,\n \"495\": 47,\n \"495e\": 48,\n \"496b\": 52,\n \"497\": [43, 44],\n \"499e\": 37,\n- \"4b\": [16, 19, 35, 36, 38, 41, 43, 44, 47, 49, 54],\n+ \"4b\": [16, 19, 35, 36, 38, 41, 43, 44, 47, 49, 51, 54],\n \"4d\": 48,\n \"4kb\": [48, 52, 54],\n \"5\": [6, 7, 8, 9, 11, 12, 13, 14, 16, 19, 25, 27, 30, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"50\": [7, 19, 28, 35, 36, 38, 40, 41, 43, 44, 45, 48, 49, 54],\n \"500\": [13, 45, 48, 54],\n \"500e\": 51,\n \"502\": 44,\n@@ -3308,15 +3320,15 @@\n \"51\": [6, 19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"511e\": 37,\n \"512e\": 48,\n \"5137\": 40,\n \"51565169\": 36,\n \"51565756\": 36,\n \"51565952\": 36,\n- \"515e\": 37,\n+ \"515e\": [37, 51],\n \"51857326\": 36,\n \"5199731\": 19,\n \"519e\": 37,\n \"52\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"524e\": [37, 48],\n \"52571455\": 36,\n \"5281\": 16,\n@@ -3324,14 +3336,16 @@\n \"52925136\": 36,\n \"52926718\": 36,\n \"52963124\": 36,\n \"52981418\": 36,\n \"52b\": 36,\n \"53\": [8, 19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"531e\": 37,\n+ \"53237\": 51,\n+ \"532e\": 51,\n \"5334\": 16,\n \"534e\": 37,\n \"538\": 44,\n \"538e\": 37,\n \"53916524\": 19,\n \"54\": [3, 18, 19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"540e\": 48,\n@@ -3350,24 +3364,25 @@\n \"550e\": 37,\n \"551\": 38,\n \"552\": 41,\n \"552b\": 38,\n \"552e\": 37,\n \"553\": 41,\n \"556\": 44,\n- \"556e\": 48,\n+ \"556e\": [36, 48],\n \"56\": [3, 19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n \"5607\": 45,\n \"561\": 43,\n \"562\": 38,\n \"567\": 19,\n \"56702035\": 19,\n \"568e\": 37,\n \"56b\": [38, 40, 43],\n \"57\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n+ \"57204\": 51,\n \"572e\": 37,\n \"574\": 43,\n \"574e\": 37,\n \"5753\": 41,\n \"577e\": 37,\n \"578\": 41,\n \"58\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 54],\n@@ -3379,20 +3394,22 @@\n \"59\": [19, 36, 37, 38, 41, 43, 44, 45, 48, 49, 54],\n \"594\": 41,\n \"59475567\": 36,\n \"5948\": 43,\n \"59499\": 16,\n \"595e\": 37,\n \"596\": 43,\n- \"596e\": 37,\n+ \"596e\": [37, 51],\n \"598e\": 37,\n+ \"5a3251a1\": 45,\n \"5b\": [36, 43],\n \"5d\": 53,\n \"5kb\": 54,\n \"5x\": 54,\n+ \"5\\u012f\\u00fe\\u00f5\\u017e\": 51,\n \"6\": [3, 6, 7, 8, 9, 11, 12, 13, 14, 19, 25, 27, 30, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"60\": [19, 36, 38, 41, 43, 44, 45, 48, 49, 52, 53, 54],\n \"600e\": 48,\n \"601\": [36, 38, 44],\n \"604\": 44,\n \"607\": [40, 44],\n \"609\": 40,\n@@ -3404,28 +3421,29 @@\n \"613\": [38, 43],\n \"616e\": 37,\n \"617e\": 48,\n \"619e\": 48,\n \"62\": [19, 36, 38, 41, 43, 44, 45, 48, 54],\n \"621\": 45,\n \"622e\": 37,\n- \"623e\": 37,\n+ \"623e\": [37, 51],\n \"624e\": 37,\n \"625\": 45,\n \"625e\": 37,\n \"6285\": 41,\n \"62kb\": 36,\n \"63\": [3, 19, 36, 38, 41, 43, 44, 45, 48, 54],\n \"634\": 38,\n \"634e\": 37,\n \"635\": 44,\n \"63696169\": 36,\n \"638e\": 48,\n \"64\": [19, 36, 38, 41, 43, 44, 45, 48, 54],\n \"642\": 43,\n+ \"642e\": 51,\n \"645e\": 37,\n \"648b\": 38,\n \"64b\": [35, 36, 40, 43, 51, 52],\n \"65\": [19, 36, 38, 41, 43, 45, 48, 54],\n \"650e\": 37,\n \"651e\": 37,\n \"6525\": 36,\n@@ -3488,20 +3506,21 @@\n \"724\": 13,\n \"726\": [32, 40],\n \"72653812\": 36,\n \"726e\": 37,\n \"727\": 32,\n \"728\": [32, 52],\n \"729\": [32, 52],\n- \"72b\": [19, 35, 43, 44],\n+ \"72b\": [19, 35, 43, 44, 51],\n \"73\": [36, 38, 41, 43, 45, 48, 54],\n \"730\": [32, 52],\n \"73021329\": 36,\n \"731\": [32, 52],\n \"732\": 32,\n+ \"7320804107538452131\": 51,\n \"733\": [32, 43],\n \"733e\": 48,\n \"7341\": 41,\n \"734e\": 53,\n \"735\": [32, 43, 44],\n \"736\": 32,\n \"737\": 52,\n@@ -3514,15 +3533,14 @@\n \"741\": 52,\n \"74165739\": 36,\n \"742\": 52,\n \"742e\": 37,\n \"743\": 52,\n \"744\": 52,\n \"746\": 37,\n- \"748e\": 51,\n \"75\": [8, 13, 36, 38, 41, 43, 45, 48, 54],\n \"752\": 41,\n \"7523\": 36,\n \"753e\": 37,\n \"754\": 43,\n \"7544\": 36,\n \"754e\": [37, 48],\n@@ -3534,14 +3552,15 @@\n \"762e\": 37,\n \"765e\": 37,\n \"766e\": 37,\n \"767e\": 37,\n \"76b\": [19, 35, 43],\n \"77\": [36, 38, 41, 43, 48, 54],\n \"771\": 45,\n+ \"771e\": 51,\n \"772\": 45,\n \"773\": [44, 45],\n \"7733\": 36,\n \"774\": 45,\n \"775\": 45,\n \"776\": 45,\n \"776e\": 37,\n@@ -3556,17 +3575,17 @@\n \"789\": [38, 44],\n \"79\": [36, 38, 41, 43, 48, 54],\n \"790e\": 48,\n \"791\": 45,\n \"79119196\": 36,\n \"7917\": 45,\n \"792\": 45,\n+ \"792e\": 51,\n \"797e\": 53,\n \"798e\": [37, 51],\n- \"7ddf964a11d9\": 45,\n \"8\": [3, 7, 8, 11, 12, 13, 14, 16, 18, 19, 25, 27, 30, 32, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"80\": [36, 38, 41, 43, 48, 49, 54],\n \"800\": 30,\n \"800b\": [25, 36],\n \"800e\": 37,\n \"800mb\": 37,\n \"801\": 30,\n@@ -3578,15 +3597,15 @@\n \"8075\": 36,\n \"808\": 30,\n \"8080\": 54,\n \"809\": 30,\n \"80b\": [27, 30, 36, 41, 44, 48, 50, 54],\n \"81\": [3, 36, 38, 41, 43, 48, 54],\n \"811\": 44,\n- \"812e\": 37,\n+ \"812e\": [37, 51],\n \"81327024\": 36,\n \"814\": 44,\n \"814e\": 37,\n \"81649658\": 16,\n \"816497\": 16,\n \"81min\": 53,\n \"82\": [19, 36, 38, 41, 43, 48, 54],\n@@ -3631,15 +3650,14 @@\n \"863\": 44,\n \"86436763\": 19,\n \"8652\": 52,\n \"867\": 44,\n \"8676\": 52,\n \"867e\": 37,\n \"868e\": 37,\n- \"869d28c3\": 45,\n \"869e\": 37,\n \"87\": [36, 37, 38, 41, 43, 48, 54],\n \"8700\": 52,\n \"871\": 43,\n \"871e\": 37,\n \"8724\": 52,\n \"874\": 37,\n@@ -3658,20 +3676,20 @@\n \"89\": [36, 37, 38, 41, 43, 48, 54],\n \"893\": 44,\n \"893e\": [37, 48],\n \"897\": [38, 43],\n \"8972\": 40,\n \"897e\": 48,\n \"8987\": 41,\n- \"8b\": [16, 19, 35, 36, 38, 40, 41, 43, 44, 47, 49, 51, 52, 53, 54],\n+ \"8b\": [16, 19, 35, 36, 38, 40, 41, 43, 44, 47, 49, 52, 53, 54],\n \"8mb\": 37,\n \"8x\": 54,\n \"9\": [3, 7, 8, 12, 14, 19, 25, 27, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53],\n \"90\": [3, 12, 35, 36, 38, 41, 43, 48, 49, 54],\n- \"900e\": 48,\n+ \"900e\": [48, 51],\n \"904e\": 48,\n \"905e\": 48,\n \"90680094\": 19,\n \"906e\": 48,\n \"91\": [12, 36, 38, 41, 43, 48, 54],\n \"911\": 44,\n \"912\": 44,\n@@ -3681,31 +3699,32 @@\n \"915\": 38,\n \"915e\": 48,\n \"916\": 36,\n \"9167\": 45,\n \"917\": 45,\n \"92\": [7, 36, 38, 41, 43, 48, 54],\n \"921e\": 37,\n- \"9223372036854775806\": 51,\n+ \"9223372036854742917\": 51,\n+ \"9223372036854750587\": 51,\n+ \"9223372036854764399\": 51,\n+ \"9223372036854765406\": 51,\n \"927\": 38,\n \"929e\": 37,\n \"93\": [36, 38, 41, 43, 44, 48, 54],\n \"933\": 36,\n \"933e\": 48,\n \"9363595\": 19,\n \"937\": 40,\n \"9399\": 36,\n \"94\": [36, 38, 41, 43, 48, 54],\n \"941e\": 51,\n \"942\": 43,\n \"944e\": [48, 53],\n \"947726688477\": 45,\n- \"949e\": 51,\n \"95\": [9, 13, 36, 38, 41, 43, 48, 54],\n- \"952662193\": 51,\n \"953\": 38,\n \"9537291\": 36,\n \"953e\": 48,\n \"958\": 45,\n \"95902648\": 36,\n \"95a5a6\": 48,\n \"96\": [36, 38, 41, 43, 48, 54],\n@@ -3713,15 +3732,15 @@\n \"960e\": 51,\n \"961e\": 37,\n \"96641818\": 19,\n \"9667\": [38, 40],\n \"967\": [36, 38, 43],\n \"967e\": 37,\n \"968e\": 37,\n- \"96b\": [19, 35, 36, 38, 40, 43, 47, 48, 50, 53],\n+ \"96b\": [19, 35, 36, 38, 40, 43, 47, 48, 50, 51, 53],\n \"97\": [36, 38, 41, 43, 48, 54],\n \"971e\": 48,\n \"973\": 38,\n \"974\": 44,\n \"97498828\": 36,\n \"9781708\": 19,\n \"978e\": 37,\n@@ -3732,18 +3751,20 @@\n \"985\": 43,\n \"98536051\": 19,\n \"98th\": 48,\n \"99\": [36, 38, 41, 43, 44, 48, 49, 54],\n \"991\": 44,\n \"992b\": 52,\n \"992e\": 37,\n+ \"994\": 36,\n \"995e\": 48,\n \"99809483\": 19,\n+ \"9986\": 36,\n \"998e\": 37,\n- \"999\": 54,\n+ \"999\": [36, 54],\n \"9999\": [36, 45],\n \"99kb\": 53,\n \"9b59b6\": 48,\n \"9kb\": [48, 52, 54],\n \"A\": [3, 5, 8, 19, 24, 27, 30, 32, 33, 35, 36, 37, 38, 39, 41, 43, 45, 47, 48, 49, 50, 51, 52, 53, 54],\n \"AS\": 54,\n \"And\": [7, 19, 48, 53],\n@@ -3835,14 +3856,15 @@\n \"_title_for_slic\": 54,\n \"_tree\": 32,\n \"_unsign\": 54,\n \"_variabl\": 54,\n \"_xy_index\": 28,\n \"a0\": [36, 48],\n \"a2\": [36, 54],\n+ \"a554\": 45,\n \"aaron\": 54,\n \"ab\": [36, 41, 43, 47],\n \"abandon\": 54,\n \"abba\": 40,\n \"abbrevi\": 19,\n \"abc\": [19, 38, 43, 54],\n \"abcd\": [35, 45],\n@@ -4186,16 +4208,19 @@\n \"ax2\": [12, 13],\n \"ax3\": 13,\n \"ax4\": 13,\n \"axi\": [11, 16, 18, 19, 20, 22, 24, 30, 36, 37, 38, 39, 40, 41, 45, 47, 50, 51, 54],\n \"axisarrai\": 5,\n \"ayrton\": 54,\n \"azur\": 54,\n+ \"a\\u0142q\\u00fa\\u00aa\": 51,\n+ \"a\\u014d\\u017c\": 51,\n \"b\": [3, 19, 25, 35, 36, 37, 38, 40, 41, 43, 44, 47, 48, 49, 50, 51, 52, 54],\n \"b2\": [36, 54],\n+ \"b9f6\": 45,\n \"ba\": 54,\n \"back\": [1, 8, 16, 19, 20, 26, 30, 31, 32, 36, 37, 38, 39, 40, 41, 43, 45, 48, 49, 51, 54],\n \"backend\": [1, 5, 16, 24, 29, 30, 31, 32, 33, 37, 38, 43, 45, 53, 54],\n \"backend_arrai\": 27,\n \"backend_kwarg\": [27, 45, 54],\n \"backendentrypoint\": [1, 16, 31, 54],\n \"backfil\": 43,\n@@ -4225,15 +4250,14 @@\n \"basicindex\": 27,\n \"batch\": [5, 54],\n \"baudouin\": 54,\n \"bauer\": 54,\n \"baumgartn\": 54,\n \"bayesian\": [5, 33],\n \"baz\": [19, 35, 43],\n- \"be67\": 45,\n \"bean\": 54,\n \"becam\": [33, 54],\n \"becaus\": [3, 7, 8, 19, 24, 26, 27, 30, 32, 33, 36, 37, 38, 40, 41, 43, 45, 47, 48, 49, 50, 51, 54],\n \"becom\": [3, 16, 20, 31, 41, 45, 48, 54],\n \"bednar\": 54,\n \"been\": [3, 8, 19, 24, 28, 30, 33, 36, 37, 40, 41, 45, 47, 48, 49, 54],\n \"beer\": 54,\n@@ -4387,16 +4411,16 @@\n \"button\": 3,\n \"by_coord\": [35, 54],\n \"byte\": [24, 45, 54],\n \"bytes_\": 54,\n \"bytesbytescodec\": 45,\n \"bytestr\": 54,\n \"bzip2\": 45,\n- \"b\\u017c\": 51,\n \"c\": [3, 5, 7, 13, 16, 18, 19, 24, 29, 35, 36, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 53, 54],\n+ \"c16\": 51,\n \"ca\": [43, 45],\n \"cabl\": 54,\n \"cach\": [26, 27, 30, 32, 33, 41, 43, 44, 45, 48, 49, 54],\n \"cache_dir\": [30, 32],\n \"cachedir\": 3,\n \"cachingfilemanag\": [27, 54],\n \"calcul\": [5, 9, 12, 15, 16, 36, 37, 41, 48, 50, 52, 54],\n@@ -4876,15 +4900,15 @@\n \"datatyp\": 54,\n \"date\": [3, 18, 33, 44, 47, 48, 52, 54],\n \"date2num\": 54,\n \"date_rang\": [14, 36, 38, 43, 44, 45, 47, 52, 54],\n \"date_range_lik\": 54,\n \"dateoffset\": 54,\n \"datetim\": [1, 18, 22, 38, 40, 45, 48, 53, 54],\n- \"datetime64\": [22, 27, 36, 37, 38, 43, 44, 45, 51, 53, 54],\n+ \"datetime64\": [22, 27, 36, 37, 38, 43, 44, 45, 53, 54],\n \"datetimeaccessor\": 54,\n \"datetimeindex\": [38, 43, 52, 53, 54],\n \"datetimenoleap\": 53,\n \"dateutil\": 54,\n \"daughter\": 41,\n \"dave\": 54,\n \"davi\": 54,\n@@ -5093,15 +5117,14 @@\n \"down\": [3, 19, 33, 37, 54],\n \"download\": [30, 32, 37, 41, 43, 44, 45, 48, 49, 54],\n \"download_act\": [30, 32],\n \"downsampl\": [52, 54],\n \"downstream\": [37, 51, 54],\n \"downward\": 38,\n \"doyl\": 54,\n- \"do\\u0157\\u0169\": 51,\n \"dpm\": 11,\n \"draft\": 3,\n \"drastic\": 45,\n \"draw\": [13, 16, 44, 48, 51, 54],\n \"draw_label\": 48,\n \"drawn\": 49,\n \"drawstyl\": 54,\n@@ -5351,14 +5374,15 @@\n \"extra\": [6, 8, 18, 24, 28, 51, 54],\n \"extract\": [22, 37, 38, 41, 43, 45, 49, 54],\n \"extractal\": 54,\n \"extrapol\": [44, 54],\n \"extrem\": [31, 43, 45, 48, 51],\n \"ey\": [25, 39],\n \"ezequiel\": 54,\n+ \"e\\u017ft\": 51,\n \"f\": [3, 8, 9, 13, 19, 26, 30, 32, 36, 38, 41, 45, 48, 54],\n \"fabian\": 54,\n \"fabien\": 54,\n \"face\": [20, 30, 33],\n \"facecolor\": [7, 48, 54],\n \"facet\": [49, 54],\n \"facetgrid\": 54,\n@@ -5431,15 +5455,15 @@\n \"find_common_ancestor\": 41,\n \"findal\": 54,\n \"fine\": [3, 19, 45, 51],\n \"finer\": 54,\n \"finish\": [3, 32, 54],\n \"finit\": [5, 12, 36, 54],\n \"firm\": 16,\n- \"first\": [3, 8, 9, 11, 13, 14, 18, 19, 24, 28, 30, 32, 33, 35, 36, 38, 41, 43, 44, 45, 48, 49, 52, 54],\n+ \"first\": [3, 8, 9, 11, 13, 14, 18, 19, 24, 28, 32, 33, 35, 36, 38, 41, 43, 44, 45, 48, 52, 54],\n \"fiscal\": [33, 54],\n \"fischer\": 54,\n \"fish\": 41,\n \"fit\": [16, 33, 37, 41, 45, 48, 54],\n \"fitzgerald\": [16, 54],\n \"five\": [36, 48, 54],\n \"fix\": [3, 8, 16, 37, 38, 45, 48, 50, 53],\n@@ -5455,15 +5479,15 @@\n \"flavor\": 3,\n \"fleischmann\": 54,\n \"fletcher32\": 45,\n \"flexibl\": [8, 16, 30, 31, 39, 40, 43, 44, 45, 48, 54],\n \"flip\": 54,\n \"float\": [8, 16, 26, 35, 36, 37, 40, 45, 50, 54],\n \"float16\": [51, 54],\n- \"float32\": [3, 45, 51, 54],\n+ \"float32\": [3, 45, 54],\n \"float64\": [8, 16, 19, 25, 27, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 54],\n \"float_to_top\": 54,\n \"floor\": [22, 52, 53, 54],\n \"florian\": 54,\n \"flow\": [21, 38, 54],\n \"flox\": [18, 37, 40, 54],\n \"fluent\": 16,\n@@ -5497,14 +5521,15 @@\n \"found\": [3, 5, 7, 11, 20, 28, 32, 33, 36, 37, 38, 39, 40, 41, 43, 50, 54],\n \"foundat\": [15, 29],\n \"four\": [16, 19, 37, 38, 41, 43, 48, 54],\n \"fourier\": 5,\n \"fourth\": 36,\n \"fourth_dim\": 48,\n \"fp\": 8,\n+ \"fr\": 51,\n \"fragil\": [33, 54],\n \"fragment\": 16,\n \"frame\": 54,\n \"framework\": [3, 5, 24, 31, 33, 39, 48],\n \"francesco\": 54,\n \"freder\": 54,\n \"free\": [3, 19, 20, 49],\n@@ -5550,14 +5575,15 @@\n \"furo\": 54,\n \"further\": [3, 26, 33, 37, 38, 53, 54],\n \"furthermor\": [24, 26, 43],\n \"futur\": [3, 24, 32, 38, 41, 45],\n \"futurama\": 41,\n \"futurewarn\": 54,\n \"fvcom\": 54,\n+ \"f\\u00f8y\\u012f\": 51,\n \"g\": [1, 3, 5, 16, 20, 22, 24, 25, 26, 28, 29, 30, 31, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54],\n \"g015daca\": 3,\n \"g_simpl\": 48,\n \"g_simple_lin\": 48,\n \"gabriel\": 54,\n \"gain\": 54,\n \"galleri\": [37, 54],\n@@ -6684,15 +6710,14 @@\n \"guido\": 54,\n \"guillaum\": 54,\n \"gundersen\": 54,\n \"gunyh\\u00f3\": 54,\n \"gupta\": 54,\n \"guvector\": 36,\n \"gzip\": [45, 54],\n- \"g\\u00ed\": 51,\n \"g\\u00f3rny\": 54,\n \"g\\u00f6bel\": 54,\n \"h\": [7, 52, 54],\n \"h5\": [16, 37, 45],\n \"h5netcdf\": [16, 18, 22, 37, 45, 54],\n \"h5netcdfstor\": 54,\n \"h5py\": [16, 45, 54],\n@@ -6966,16 +6991,16 @@\n \"institut\": 34,\n \"instruct\": [3, 45, 54],\n \"instrument\": 38,\n \"insuffici\": 36,\n \"int\": [24, 32, 36, 50, 51, 54],\n \"int16\": [3, 45],\n \"int32\": [3, 19, 35, 36, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54],\n- \"int64\": [3, 19, 35, 38, 40, 43, 45, 47, 49, 52, 53, 54],\n- \"int8\": 3,\n+ \"int64\": [3, 19, 35, 38, 40, 43, 45, 47, 49, 51, 52, 53, 54],\n+ \"int8\": [3, 51],\n \"intact\": 54,\n \"intarr\": 36,\n \"integ\": [19, 20, 24, 27, 30, 36, 38, 43, 45, 51, 54],\n \"integr\": [5, 16, 18, 20, 27, 33, 36, 37, 39, 45, 48, 50, 52, 54],\n \"intend\": [3, 19, 25, 29, 30, 38, 41, 54],\n \"intens\": 45,\n \"intent\": [26, 39, 41],\n@@ -7051,14 +7076,15 @@\n \"iter\": [8, 24, 27, 32, 35, 36, 38, 40, 54],\n \"itertool\": [27, 53],\n \"its\": [3, 9, 16, 18, 19, 20, 27, 30, 32, 33, 36, 38, 40, 41, 43, 45, 47, 49, 50, 52, 54],\n \"itself\": [3, 18, 19, 20, 24, 28, 30, 36, 38, 43, 45, 47, 54],\n \"iv\": 41,\n \"ix\": 43,\n \"ix_\": 43,\n+ \"i\\u0307\\u00e6\\u0149\": 51,\n \"j\": [16, 24, 39, 41, 43, 51, 54],\n \"jack\": 54,\n \"jacob\": 54,\n \"jaeschk\": 54,\n \"jahren\": 54,\n \"jame\": 54,\n \"jan\": [52, 53],\n@@ -7316,15 +7342,15 @@\n \"lt\": 14,\n \"luka\": 54,\n \"luke\": 54,\n \"lurcock\": 54,\n \"lusewel\": 54,\n \"lxml\": 54,\n \"lzf\": 54,\n- \"m\": [3, 6, 8, 14, 18, 24, 37, 47, 51, 52, 53, 54],\n+ \"m\": [3, 6, 8, 14, 18, 24, 37, 47, 52, 53, 54],\n \"ma\": 54,\n \"maahn\": 54,\n \"machin\": [3, 18, 37, 49, 54],\n \"machineri\": [32, 52, 54],\n \"maciek\": 54,\n \"maco\": [3, 54],\n \"madadi\": 54,\n@@ -8021,15 +8047,14 @@\n \"pint\": [18, 31, 33, 39, 54],\n \"pip\": [3, 18, 54],\n \"pipe\": [26, 38, 54],\n \"pipelin\": [38, 40],\n \"pixel\": [48, 54],\n \"pkg_resourc\": 54,\n \"pkl\": 45,\n- \"pk\\u0144\": 51,\n \"pla\": 54,\n \"place\": [3, 5, 19, 35, 36, 37, 38, 41, 45, 48, 54],\n \"plai\": [36, 48],\n \"plain\": [3, 20, 54],\n \"plan\": [26, 30, 50],\n \"plane\": 44,\n \"planetscop\": 5,\n@@ -8950,14 +8975,16 @@\n \"quickbird\": 5,\n \"quicker\": 45,\n \"quickli\": [16, 17, 37, 41, 51, 52],\n \"quickstart\": 33,\n \"quit\": [3, 45, 51, 54],\n \"quiver\": 54,\n \"quoc\": 54,\n+ \"q\\u00ee\\u0123\\u00e1\\u00f2\": 51,\n+ \"q\\u00fb\\u00ed\": 51,\n \"r\": [26, 36, 37, 38, 45, 54],\n \"rabbit\": 41,\n \"race\": 54,\n \"rachel\": 54,\n \"radar\": 5,\n \"rafael\": 54,\n \"rag\": 43,\n@@ -9229,15 +9256,14 @@\n \"russel\": 54,\n \"russotto\": 54,\n \"rutger\": 54,\n \"ryan\": [12, 34, 54],\n \"s1\": [45, 54],\n \"s2\": 39,\n \"s3\": [45, 54],\n- \"s6\": 51,\n \"s_da\": 39,\n \"s_rho\": 7,\n \"saboo\": 54,\n \"safe\": [27, 44, 45, 54],\n \"safe_chunk\": 54,\n \"safer\": 54,\n \"safeti\": 45,\n@@ -9313,15 +9339,15 @@\n \"seamlessli\": [3, 39],\n \"search\": [3, 45, 52],\n \"searchstrategi\": 51,\n \"season\": [14, 15, 40, 52, 53, 54],\n \"season_mean\": 11,\n \"sebastian\": 54,\n \"sec\": 19,\n- \"second\": [3, 8, 13, 19, 27, 32, 35, 38, 39, 43, 45, 47, 52, 53, 54],\n+ \"second\": [3, 8, 13, 19, 27, 30, 32, 35, 38, 39, 41, 43, 44, 45, 47, 48, 49, 52, 53, 54],\n \"section\": [5, 7, 16, 18, 29, 30, 33, 37, 40, 45, 47, 48, 50, 51, 52, 53, 54],\n \"see\": [1, 3, 5, 7, 8, 13, 16, 18, 19, 20, 22, 24, 25, 26, 27, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54],\n \"seed\": [14, 38, 48],\n \"seek\": 27,\n \"seem\": [7, 8, 48, 54],\n \"seen\": [36, 40, 51],\n \"segment\": 54,\n@@ -9810,15 +9836,14 @@\n \"thrill\": 21,\n \"through\": [3, 8, 16, 19, 23, 24, 25, 31, 36, 37, 38, 39, 41, 43, 45, 46, 48, 50, 51, 52, 53, 54],\n \"throughout\": [3, 48, 54],\n \"throw\": [14, 54],\n \"thrown\": 24,\n \"thu\": [3, 9, 37, 39, 40, 45, 48, 50, 53, 54],\n \"thumb\": 37,\n- \"th\\u00e4\\u00f8d\": 51,\n \"tiago\": 54,\n \"tick\": [13, 38, 48, 50, 54],\n \"ticket\": 3,\n \"tien\": 54,\n \"tif\": [37, 45],\n \"tiff\": 45,\n \"tight\": [11, 20, 33],\n@@ -9827,15 +9852,15 @@\n \"tim\": 54,\n \"time\": [1, 3, 5, 6, 7, 8, 9, 13, 14, 16, 18, 20, 22, 27, 30, 32, 33, 35, 36, 37, 38, 40, 41, 43, 44, 47, 48, 49, 50, 51, 53, 54],\n \"time_stamp\": 41,\n \"time_stamps1\": 41,\n \"time_stamps2\": 41,\n \"time_subset\": 37,\n \"timedelta\": [1, 48, 52, 54],\n- \"timedelta64\": [45, 51, 52, 53, 54],\n+ \"timedelta64\": [45, 52, 53, 54],\n \"timedeltaaccessor\": 54,\n \"timedeltaindex\": 54,\n \"timegroup\": 54,\n \"timelin\": 41,\n \"timeout\": [18, 32],\n \"timeresampl\": [37, 40, 54],\n \"timeseri\": [15, 22, 37, 41, 54],\n@@ -9965,26 +9990,31 @@\n \"typecast\": 54,\n \"typeerror\": [27, 45, 54],\n \"typehint\": 54,\n \"typic\": [3, 7, 14, 16, 30, 33, 37, 45, 50],\n \"typing_extens\": 54,\n \"typo\": [3, 23, 54],\n \"tyre\": 54,\n- \"t\\u0121\\u015fn\": 51,\n- \"u\": [3, 8, 12, 19, 21, 24, 26, 31, 32, 33, 41, 43, 44, 45, 48, 49, 51, 54],\n+ \"u\": [3, 8, 12, 19, 21, 24, 26, 31, 32, 33, 41, 43, 44, 45, 48, 49, 54],\n+ \"u000\": 51,\n+ \"u00060fc0\": 51,\n+ \"u0007a060\": 51,\n+ \"u0010b29f\": 51,\n \"u1\": [19, 35, 36, 38, 40, 43, 44, 45, 47, 49, 54],\n \"u2\": [36, 38, 43],\n \"u3\": [52, 53, 54],\n \"u4\": 54,\n \"u5\": [19, 48],\n \"u6\": [38, 41],\n \"u7\": [36, 38],\n \"u8\": [36, 38],\n \"ubiqu\": 16,\n \"ufunc\": [1, 8, 24, 36, 37, 39, 54],\n+ \"uint32\": 51,\n+ \"uint64\": 51,\n \"uint8\": [39, 45],\n \"uk\": [6, 16, 45],\n \"ulrich\": 54,\n \"ultim\": 24,\n \"unabl\": [16, 37],\n \"unaddress\": 54,\n \"unalign\": [19, 41],\n@@ -10185,14 +10215,15 @@\n \"voltag\": 41,\n \"volum\": [5, 16, 54],\n \"volunt\": 20,\n \"voluntari\": 54,\n \"vrt\": 54,\n \"vtk\": 5,\n \"vtransform\": 7,\n+ \"v\\u00be\\u0115\\u00e0\": 51,\n \"w\": [7, 32, 41, 45, 48, 49],\n \"wa\": [3, 7, 8, 16, 20, 24, 30, 31, 32, 33, 35, 38, 39, 41, 45, 47, 48, 51, 52, 53, 54],\n \"wai\": [3, 7, 8, 12, 16, 18, 19, 21, 24, 26, 30, 31, 33, 37, 38, 39, 41, 43, 44, 45, 47, 50, 51, 54],\n \"wait\": 3,\n \"wale\": 54,\n \"walk\": 39,\n \"wall\": 37,\n@@ -10301,23 +10332,29 @@\n \"write_empty_chunk\": 54,\n \"write_inherited_coord\": 54,\n \"written\": [3, 18, 24, 29, 36, 37, 38, 45, 51, 54],\n \"wrong\": [3, 54],\n \"wrongli\": 54,\n \"wrote\": 35,\n \"www\": [7, 18],\n- \"w\\u00ed2\\u00ba\\u00b9\": 51,\n \"x\": [3, 5, 7, 8, 12, 13, 14, 18, 19, 20, 24, 25, 27, 28, 30, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 47, 49, 50, 51, 53, 54],\n- \"x05\": 51,\n- \"x08a\": 51,\n- \"x0b\": 51,\n+ \"x03c\\u00bd\": 51,\n+ \"x08\\u00e3\": 51,\n+ \"x0e\\u00e6\": 51,\n+ \"x0f\": 51,\n \"x0pahjgysxk\": 18,\n \"x1\": 35,\n+ \"x15\": 51,\n+ \"x1bp\": 51,\n+ \"x1c\": 51,\n \"x2\": [35, 39],\n \"x64\": 54,\n+ \"x7f\\u00e4\": 51,\n+ \"x87\\u00fem\\u00fb\": 51,\n+ \"x9e\": 51,\n \"x_and_i\": 36,\n \"x_bin\": 40,\n \"x_bin_label\": 40,\n \"x_chunk\": 24,\n \"x_coars\": 49,\n \"x_fine\": 49,\n \"x_matrix_rank\": 36,\n@@ -10330,25 +10367,28 @@\n \"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, 38, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54],\n \"xarray_einstat\": 5,\n \"xarray_extra\": [5, 45],\n \"xarray_obj\": 26,\n \"xarray_object\": 8,\n \"xarray_tutorial_data\": [30, 32, 41, 43, 44, 45, 48, 49],\n \"xarray_v0_8_0\": 16,\n- \"xb0\": 51,\n \"xbatcher\": 5,\n+ \"xbb\": 51,\n \"xbpch\": 5,\n \"xc\": [12, 36, 45],\n \"xc0\": 36,\n \"xcdat\": [5, 54],\n \"xclim\": 5,\n \"xd\": 37,\n+ \"xd09\": 51,\n+ \"xd9\": 51,\n+ \"xda\": 51,\n \"xdev\": 34,\n \"xdist\": [3, 18, 54],\n- \"xe8\": 51,\n+ \"xe3\": 51,\n \"xenomorph\": 41,\n \"xeof\": 5,\n \"xesmf\": [5, 12],\n \"xfail\": [3, 54],\n \"xframe\": 5,\n \"xgcm\": [5, 7],\n \"xi\": 8,\n@@ -10418,14 +10458,15 @@\n \"ytick\": [48, 54],\n \"yuan\": 54,\n \"yunu\": 54,\n \"yve\": 54,\n \"yvonn\": 54,\n \"yyyi\": [53, 54],\n \"yyyymmddhhmmss\": 53,\n+ \"y\\u00e8er\\u00fd\": 51,\n \"z\": [7, 18, 19, 24, 25, 36, 38, 43, 44, 45, 48, 49, 51, 54],\n \"z1\": 36,\n \"z2\": 36,\n \"z3\": 36,\n \"z_0\": 7,\n \"z_rho\": 7,\n \"zac\": 54,\n@@ -10450,57 +10491,59 @@\n \"zmetadata\": [32, 45],\n \"zo_rho\": 7,\n \"zonal\": [5, 37, 48],\n \"zoom\": 4,\n \"zstd\": 45,\n \"zuckerberg\": 54,\n \"z\\u00fchlke\": 54,\n- \"\\u00b3\\u0169\\u012fc\": 51,\n- \"\\u00b3\\u017e9\": 51,\n- \"\\u00ba\\u00f55j\": 51,\n- \"\\u00e2\": 51,\n- \"\\u00e3\\u0153\\u00b2\\u0123\\u0167\": 51,\n- \"\\u00e4q\": 51,\n- \"\\u00e5\\u00fc\": 51,\n- \"\\u00e9\\u00eb\": 51,\n- \"\\u00eah\\u017f\\u017f\": 51,\n- \"\\u00eb\\u00e6\\u0119\\u0129\\u017e\": 51,\n- \"\\u00ec7z\\u013c\\u015f\": 51,\n- \"\\u00ee\\u00ff\\u00ed\\u017f\\u00f3\": 51,\n- \"\\u00f3\\u00bc\\u0107\\u00e5\\u017e\": 51,\n- \"\\u00f6h\": 51,\n- \"\\u00fa\\u00f2\\u0115\": 51,\n- \"\\u00fc\\u017c\\u015d\\u0169\\u0146\": 51,\n- \"\\u00fd\\u017feg\": 51,\n- \"\\u0105\\u0171g\\u00b2\": 51,\n- \"\\u010f\\u017e\\u0146\": 51,\n- \"\\u0111\\u017f\": 51,\n- \"\\u0119\\u00f8l\\u017cm\": 51,\n- \"\\u0127j\\u0173\": 51,\n- \"\\u0133eh\\u011d\": 51,\n- \"\\u0137bk\\u00ed\\u0115\": 51,\n- \"\\u0146\\u0163\\u017c\\u015d\": 51,\n- \"\\u0148\\u012f\\u00e8\": 51,\n- \"\\u0148\\u013az\\u0131\\u017f\": 51,\n- \"\\u0157t\\u010bu\\u00e6\": 51,\n- \"\\u0157\\u0148\\u00f9\": 51,\n- \"\\u0157\\u017e\\u0129\\u017e\": 51,\n- \"\\u015f\\u00f9\\u017f\\u00fd\": 51,\n- \"\\u016f\": 51,\n+ \"\\u00b3\": 51,\n+ \"\\u00bd\": 51,\n+ \"\\u00e2\\u00fe\\u017cp\\u00e1\": 51,\n+ \"\\u00e38\": 51,\n+ \"\\u00e3\\u017c\": 51,\n+ \"\\u00e4\": 51,\n+ \"\\u00e5\\u017c\\u0171\": 51,\n+ \"\\u00e6\": 51,\n+ \"\\u00e9\\u017e\\u013e\\u0148\\u00e6\": 51,\n+ \"\\u00ea\\u0125\": 51,\n+ \"\\u00ecs\\u00f9\\u0109q\": 51,\n+ \"\\u00ec\\u017c0\\u0171\\u00f9\": 51,\n+ \"\\u00ef\": 51,\n+ \"\\u00f2\": 51,\n+ \"\\u00f5\\u00be\\u00be\\u017f\": 51,\n+ \"\\u00fb\\u00f9\\u00f4\\u0119\\u015f\": 51,\n+ \"\\u00ff\\u00e6\": 51,\n+ \"\\u00ff\\u017c\\u017c\\u0140\\u017a\": 51,\n+ \"\\u0101\\u017fv\\u017e\": 51,\n+ \"\\u0105\\u010f\\u00b2\\u015f\\u00f4\": 51,\n+ \"\\u0107e\": 51,\n+ \"\\u0107u\\u0121\": 51,\n+ \"\\u010f\\u0137\": 51,\n+ \"\\u0119\\u00e9\\u0133\\u00ea\": 51,\n+ \"\\u0119\\u017c\\u0123\": 51,\n+ \"\\u011d\\u0127\\u00e7b\\u00ec\": 51,\n+ \"\\u012b\\u00fb\\u0125\": 51,\n+ \"\\u0146\\u0123\\u0165\\u017c\": 51,\n+ \"\\u015b\\u00f4\": 51,\n+ \"\\u0161\\u00fa\\u017c\\u0129\\u00df\": 51,\n+ \"\\u0165\\u0169\\u00fdj\\u010f\": 51,\n+ \"\\u01678\\u011b\\u017e\\u017c\": 51,\n \"\\u0171\": 51,\n- \"\\u0171ny\": 51,\n- \"\\u017c\": 51,\n- \"\\u017c6\": 51,\n- \"\\u017c\\u00f9\\u016f\\u0105m\": 51,\n- \"\\u017c\\u017f5\\u012f\\u0144\": 51,\n- \"\\u017e\\u0131\": 51,\n- \"\\u017e\\u013a\": 51,\n- \"\\u017e\\u013e\\u017e0\\u0142\": 51,\n- \"\\u017e\\u017c\": 51,\n- \"\\u017f\": 51\n+ \"\\u0177\": 51,\n+ \"\\u017a\": 51,\n+ \"\\u017a\\u00f4\\u017e\\u00ec\\u00ff\": 51,\n+ \"\\u017cqkq\\u017e\": 51,\n+ \"\\u017c\\u0109\\u017f\\u00f6k\": 51,\n+ \"\\u017c\\u017e\\u017e\\u00e7\\u017e\": 51,\n+ \"\\u017e\": 51,\n+ \"\\u017e\\u00b3\\u015b\\u00ea\\u017e\": 51,\n+ \"\\u017e\\u00e8\": 51,\n+ \"\\u017e\\u00f9\": 51,\n+ \"\\u017f\\u012d\\u017c\\u0137\\u00ed\": 51,\n+ \"\\ua231\": 51\n },\n \"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\", \"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\"],\n \"titleterms\": {\n \"\": [13, 54],\n \"0\": 54,\n \"01\": 54,\n \"02\": 54,\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/computation.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/computation.html", "unified_diff": "@@ -934,16 +934,16 @@\n <xarray.Dataset> Size: 2kB\n Dimensions: (param: 10, cov_i: 10, cov_j: 10)\n Coordinates:\n * param (param) <U7 280B 'a0' 'xc0' ... 'xalpha1' 'yalpha1'\n * cov_i (cov_i) <U7 280B 'a0' 'xc0' ... 'xalpha1' 'yalpha1'\n * cov_j (cov_j) <U7 280B 'a0' 'xc0' ... 'xalpha1' 'yalpha1'\n Data variables:\n- curvefit_coefficients (param) float64 80B 3.0 1.004 1.003 ... 1.007 1.008\n- curvefit_covariance (cov_i, cov_j) float64 800B 3.362e-05 ... 2.125e-05\n+ curvefit_coefficients (param) float64 80B 1.994 -0.9986 ... 1.999 0.9986\n+ curvefit_covariance (cov_i, cov_j) float64 800B 6.556e-05 ... 4.467e-06\n \n \n
\n

Note

\n

This method replicates the behavior of scipy.optimize.curve_fit().

\n
\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -775,16 +775,16 @@\n Size: 2kB\n Dimensions: (param: 10, cov_i: 10, cov_j: 10)\n Coordinates:\n * param (param) ds.pipe(func)) instead of\n simply calling it (e.g., func(ds)). This allows you to write pipelines for\n transforming your data (using \u201cmethod chaining\u201d) instead of writing hard to\n follow nested function calls:

\n
# these lines are equivalent, but with pipe we can make the logic flow\n # entirely from left to right\n In [64]: plt.plot((2 * ds.temperature.sel(loc=0)).mean("instrument"))\n-Out[64]: [<matplotlib.lines.Line2D at 0xe42f7870>]\n+Out[64]: [<matplotlib.lines.Line2D at 0xe3ff3870>]\n \n In [65]: (ds.temperature.sel(loc=0).pipe(lambda x: 2 * x).mean("instrument").pipe(plt.plot))\n-Out[65]: [<matplotlib.lines.Line2D at 0xe42f7710>]\n+Out[65]: [<matplotlib.lines.Line2D at 0xe3ff3710>]\n 
\n
\n

Both pipe and assign replicate the pandas methods of the same names\n (DataFrame.pipe and\n DataFrame.assign).

\n

With xarray, there is no performance penalty for creating new datasets, even if\n variables are lazily loaded from a file on disk. Creating new objects instead\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -585,19 +585,19 @@\n There is also the pipe() method that allows you to use a method call with an\n external function (e.g., ds.pipe(func)) instead of simply calling it (e.g.,\n func(ds)). This allows you to write pipelines for transforming your data (using\n \u201cmethod chaining\u201d) instead of writing hard to follow nested function calls:\n # these lines are equivalent, but with pipe we can make the logic flow\n # entirely from left to right\n In [64]: plt.plot((2 * ds.temperature.sel(loc=0)).mean(\"instrument\"))\n-Out[64]: []\n+Out[64]: []\n \n In [65]: (ds.temperature.sel(loc=0).pipe(lambda x: 2 * x).mean\n (\"instrument\").pipe(plt.plot))\n-Out[65]: []\n+Out[65]: []\n Both pipe and assign replicate the pandas methods of the same names\n (_\bD_\ba_\bt_\ba_\bF_\br_\ba_\bm_\be_\b._\bp_\bi_\bp_\be and _\bD_\ba_\bt_\ba_\bF_\br_\ba_\bm_\be_\b._\ba_\bs_\bs_\bi_\bg_\bn).\n With xarray, there is no performance penalty for creating new datasets, even if\n variables are lazily loaded from a file on disk. Creating new objects instead\n of mutating existing objects often results in easier to understand code, so we\n encourage using this approach.\n *\b**\b**\b**\b* R\bRe\ben\bna\bam\bmi\bin\bng\bg v\bva\bar\bri\bia\bab\bbl\ble\bes\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/hierarchical-data.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/hierarchical-data.html", "unified_diff": "@@ -982,15 +982,15 @@\n

If you were a previous user of the prototype xarray-contrib/datatree package, this is different from what you\u2019re used to!\n 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.\n This allows us to provide features like Coordinate Inheritance.

\n \n

To demonstrate, let\u2019s first generate some example datasets which are not aligned with one another:

\n
# (drop the attributes just to make the printed representation shorter)\n In [89]: ds = xr.tutorial.open_dataset("air_temperature").drop_attrs()\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [90]: ds_daily = ds.resample(time="D").mean("time")\n KeyError: "No variable named 'time'. Variables on the dataset include ['foo', 'x', 'letters']"\n \n \n In [91]: ds_weekly = ds.resample(time="W").mean("time")\n@@ -1054,15 +1054,15 @@\n     \u2514\u2500\u2500 Group: /b/B\n 
\n
\n

Now we have a valid DataTree structure which contains all the data at each different time frequency, stored in a separate group.

\n

This is a useful way to organise our data because we can still operate on all the groups at once.\n For example we can extract all three timeseries at a specific lat-lon location:

\n
In [100]: dt.sel(lat=75, lon=300)\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set()\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set()\n 
\n
\n

or compute the standard deviation of each timeseries to find out how it varies with sampling frequency:

\n
In [101]: dt.std(dim="time")\n ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()\n 
\n
\n@@ -1128,15 +1128,15 @@\n
In [107]: print(dt["/daily"])\n KeyError: 'Could not find node at /daily'\n 
\n
\n

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.

\n

We can also still perform all the same operations on the whole tree:

\n
In [108]: dt.sel(lat=[75], lon=[300])\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set()\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set()\n \n \n In [109]: dt.std(dim="time")\n ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()\n 
\n
\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -868,15 +868,15 @@\n model is now slightly stricter. This allows us to provide features like\n _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\b _\bI_\bn_\bh_\be_\br_\bi_\bt_\ba_\bn_\bc_\be.\n To demonstrate, let\u2019s first generate some example datasets which are not\n aligned with one another:\n # (drop the attributes just to make the printed representation shorter)\n In [89]: ds = xr.tutorial.open_dataset(\"air_temperature\").drop_attrs()\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [90]: ds_daily = ds.resample(time=\"D\").mean(\"time\")\n KeyError: \"No variable named 'time'. Variables on the dataset include ['foo',\n 'x', 'letters']\"\n \n@@ -944,15 +944,15 @@\n \u2514\u2500\u2500 Group: /b/B\n Now we have a valid DataTree structure which contains all the data at each\n different time frequency, stored in a separate group.\n This is a useful way to organise our data because we can still operate on all\n the groups at once. For example we can extract all three timeseries at a\n specific lat-lon location:\n In [100]: dt.sel(lat=75, lon=300)\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set\n ()\n or compute the standard deviation of each timeseries to find out how it varies\n with sampling frequency:\n In [101]: dt.std(dim=\"time\")\n ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()\n *\b**\b**\b**\b* C\bCo\boo\bor\brd\bdi\bin\bna\bat\bte\be I\bIn\bnh\bhe\ber\bri\bit\bta\ban\bnc\bce\be_\b?\b\u00b6 *\b**\b**\b**\b*\n Notice that in the trees we constructed above there is some redundancy - the\n@@ -1016,15 +1016,15 @@\n coordinates, but explicitly mark them as such:\n In [107]: print(dt[\"/daily\"])\n KeyError: 'Could not find node at /daily'\n This helps to differentiate which variables are defined on the datatree node\n that you are currently looking at, and which were defined somewhere above it.\n We can also still perform all the same operations on the whole tree:\n In [108]: dt.sel(lat=[75], lon=[300])\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of set\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of set\n ()\n \n \n In [109]: dt.std(dim=\"time\")\n ValueError: Dimension(s) 'time' do not exist. Expected one or more of set()\n _\b[_\bL_\bo_\bg_\bo_\b _\bo_\bf_\b _\bx_\ba_\br_\br_\ba_\by_\b]\n *\b**\b**\b**\b**\b**\b* _\bx\bx_\ba\ba_\br\br_\br\br_\ba\ba_\by\by *\b**\b**\b**\b**\b**\b*\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html", "unified_diff": "@@ -653,15 +653,15 @@\n to a collection specified weather station latitudes and longitudes.\n To trigger vectorized indexing behavior\n you will need to provide the selection dimensions with a new\n shared output dimension name. In the example below, the selections\n of the closest latitude and longitude are renamed to an output\n dimension named \u201cpoints\u201d:

\n
In [52]: ds = xr.tutorial.open_dataset("air_temperature")\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n # Define target latitude and longitude (where weather stations might be)\n In [53]: target_lon = xr.DataArray([200, 201, 202, 205], dims="points")\n \n In [54]: target_lat = xr.DataArray([31, 41, 42, 42], dims="points")\n \n@@ -697,15 +697,15 @@\n 
\n \n
\n

Assigning values with indexing\u00b6

\n

To select and assign values to a portion of a DataArray() you\n can use indexing with .loc :

\n
In [57]: ds = xr.tutorial.open_dataset("air_temperature")\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n # add an empty 2D dataarray\n In [58]: ds["empty"] = xr.full_like(ds.air.mean("time"), fill_value=0)\n AttributeError: 'Dataset' object has no attribute 'air'\n \n \n@@ -869,15 +869,15 @@\n 
\n
\n

You can also assign values to all variables of a Dataset at once:

\n
In [83]: ds_org = xr.tutorial.open_dataset("eraint_uvz").isel(\n    ....:     latitude=slice(56, 59), longitude=slice(255, 258), level=0\n    ....: )\n    ....: \n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n # set all values to 0\n In [84]: ds = xr.zeros_like(ds_org)\n NameError: name 'ds_org' is not defined\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -474,15 +474,15 @@\n collection specified weather station latitudes and longitudes. To trigger\n vectorized indexing behavior you will need to provide the selection dimensions\n with a new shared output dimension name. In the example below, the selections\n of the closest latitude and longitude are renamed to an output dimension named\n \u201cpoints\u201d:\n In [52]: ds = xr.tutorial.open_dataset(\"air_temperature\")\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n # Define target latitude and longitude (where weather stations might be)\n In [53]: target_lon = xr.DataArray([200, 201, 202, 205], dims=\"points\")\n \n In [54]: target_lat = xr.DataArray([31, 41, 42, 42], dims=\"points\")\n@@ -513,15 +513,15 @@\n selected subpart of the target array (except for the explicitly indexed\n dimensions with .loc/.sel). Otherwise, IndexError will be raised.\n *\b**\b**\b**\b**\b* A\bAs\bss\bsi\big\bgn\bni\bin\bng\bg v\bva\bal\blu\bue\bes\bs w\bwi\bit\bth\bh i\bin\bnd\bde\bex\bxi\bin\bng\bg_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n To select and assign values to a portion of a DataArray() you can use indexing\n with .loc :\n In [57]: ds = xr.tutorial.open_dataset(\"air_temperature\")\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n # add an empty 2D dataarray\n In [58]: ds[\"empty\"] = xr.full_like(ds.air.mean(\"time\"), fill_value=0)\n AttributeError: 'Dataset' object has no attribute 'air'\n \n@@ -673,15 +673,15 @@\n Dimensions without coordinates: x\n You can also assign values to all variables of a Dataset at once:\n In [83]: ds_org = xr.tutorial.open_dataset(\"eraint_uvz\").isel(\n    ....:     latitude=slice(56, 59), longitude=slice(255, 258), level=0\n    ....: )\n    ....:\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n # set all values to 0\n In [84]: ds = xr.zeros_like(ds_org)\n NameError: name 'ds_org' is not defined\n \n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html", "unified_diff": "@@ -237,24 +237,24 @@\n    ....:     np.sin(np.linspace(0, 2 * np.pi, 10)),\n    ....:     dims="x",\n    ....:     coords={"x": np.linspace(0, 1, 10)},\n    ....: )\n    ....: \n \n In [17]: da.plot.line("o", label="original")\n-Out[17]: [<matplotlib.lines.Line2D at 0xe8349df0>]\n+Out[17]: [<matplotlib.lines.Line2D at 0xe8043df0>]\n \n In [18]: da.interp(x=np.linspace(0, 1, 100)).plot.line(label="linear (default)")\n-Out[18]: [<matplotlib.lines.Line2D at 0xe4b96df0>]\n+Out[18]: [<matplotlib.lines.Line2D at 0xe48a1df0>]\n \n In [19]: da.interp(x=np.linspace(0, 1, 100), method="cubic").plot.line(label="cubic")\n-Out[19]: [<matplotlib.lines.Line2D at 0xe2c9d870>]\n+Out[19]: [<matplotlib.lines.Line2D at 0xe213cc90>]\n \n In [20]: plt.legend()\n-Out[20]: <matplotlib.legend.Legend at 0xe83443c8>\n+Out[20]: <matplotlib.legend.Legend at 0xe803d3c8>\n 
\n
\n \"_build/html/_static/interpolation_sample1.png\"\n \n

Additional keyword arguments can be passed to scipy\u2019s functions.

\n
# fill 0 for the outside of the original coordinates.\n In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={"fill_value": 0.0})\n@@ -439,15 +439,15 @@\n see Missing values.

\n
\n
\n

Example\u00b6

\n

Let\u2019s see how interp() works on real data.

\n
# Raw data\n In [44]: ds = xr.tutorial.open_dataset("air_temperature").isel(time=0)\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [45]: fig, axes = plt.subplots(ncols=2, figsize=(10, 4))\n \n In [46]: ds.air.plot(ax=axes[0])\n AttributeError: 'Dataset' object has no attribute 'air'\n \n@@ -511,15 +511,15 @@\n    ....:     axes[0].plot(*xr.broadcast(lon.isel(z=idx), lat.isel(z=idx)), "--k")\n    ....: \n \n In [61]: axes[0].set_title("Raw data")\n Out[61]: Text(0.5, 1.0, 'Raw data')\n \n In [62]: dsi = ds.interp(lon=lon, lat=lat)\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of FrozenMappingWarningOnValuesAccess({'x': 3, 'y': 4})\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of FrozenMappingWarningOnValuesAccess({'x': 3, 'y': 4})\n \n \n In [63]: dsi.air.plot(ax=axes[1])\n NameError: name 'dsi' is not defined\n \n \n In [64]: axes[1].set_title("Remapped data")\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -154,26 +154,26 @@\n    ....:     np.sin(np.linspace(0, 2 * np.pi, 10)),\n    ....:     dims=\"x\",\n    ....:     coords={\"x\": np.linspace(0, 1, 10)},\n    ....: )\n    ....:\n \n In [17]: da.plot.line(\"o\", label=\"original\")\n-Out[17]: []\n+Out[17]: []\n \n In [18]: da.interp(x=np.linspace(0, 1, 100)).plot.line(label=\"linear\n (default)\")\n-Out[18]: []\n+Out[18]: []\n \n In [19]: da.interp(x=np.linspace(0, 1, 100), method=\"cubic\").plot.line\n (label=\"cubic\")\n-Out[19]: []\n+Out[19]: []\n \n In [20]: plt.legend()\n-Out[20]: \n+Out[20]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b__\bs_\ba_\bm_\bp_\bl_\be_\b1_\b._\bp_\bn_\bg_\b]\n Additional keyword arguments can be passed to scipy\u2019s functions.\n # fill 0 for the outside of the original coordinates.\n In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={\"fill_value\": 0.0})\n Out[21]:\n  Size: 80B\n array([ 0.   ,  0.   ,  0.   ,  0.814,  0.604, -0.604, -0.814,  0.   ,  0.   ,\n@@ -337,15 +337,15 @@\n   * x        (x) float64 24B 0.5 1.5 2.5\n For the details of interpolate_na(), see _\bM_\bi_\bs_\bs_\bi_\bn_\bg_\b _\bv_\ba_\bl_\bu_\be_\bs.\n *\b**\b**\b**\b**\b* E\bEx\bxa\bam\bmp\bpl\ble\be_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n Let\u2019s see how interp() works on real data.\n # Raw data\n In [44]: ds = xr.tutorial.open_dataset(\"air_temperature\").isel(time=0)\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [45]: fig, axes = plt.subplots(ncols=2, figsize=(10, 4))\n \n In [46]: ds.air.plot(ax=axes[0])\n AttributeError: 'Dataset' object has no attribute 'air'\n@@ -410,15 +410,15 @@\n k\")\n    ....:\n \n In [61]: axes[0].set_title(\"Raw data\")\n Out[61]: Text(0.5, 1.0, 'Raw data')\n \n In [62]: dsi = ds.interp(lon=lon, lat=lat)\n-ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of\n+ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of\n FrozenMappingWarningOnValuesAccess({'x': 3, 'y': 4})\n \n \n In [63]: dsi.air.plot(ax=axes[1])\n NameError: name 'dsi' is not defined\n \n \n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/io.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/io.html", "unified_diff": "@@ -630,15 +630,15 @@\n    ....:         "y": pd.date_range("2000-01-01", periods=5),\n    ....:         "z": ("x", list("abcd")),\n    ....:     },\n    ....: )\n    ....: \n \n In [13]: ds.to_zarr("path/to/directory.zarr")\n-Out[13]: <xarray.backends.zarr.ZarrStore at 0xe1baf8e0>\n+Out[13]: <xarray.backends.zarr.ZarrStore at 0xe1849850>\n 
\n
\n

(The suffix .zarr is optional\u2013just a reminder that a zarr store lives\n there.) If the directory does not exist, it will be created. If a zarr\n store is already present at that path, an error will be raised, preventing it\n from being overwritten. To override this behavior and overwrite an existing\n store, add mode='w' when invoking to_zarr().

\n@@ -658,19 +658,19 @@\n

To read back a zarr dataset that has been created this way, we use the\n open_zarr() method:

\n
In [14]: ds_zarr = xr.open_zarr("path/to/directory.zarr")\n \n In [15]: ds_zarr\n Out[15]: \n <xarray.Dataset> Size: 232B\n-Dimensions:  (x: 4, y: 5)\n+Dimensions:  (y: 5, x: 4)\n Coordinates:\n-    z        (x) object 16B dask.array<chunksize=(4,), meta=np.ndarray>\n   * y        (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05\n   * x        (x) int32 16B 10 20 30 40\n+    z        (x) object 16B dask.array<chunksize=(4,), meta=np.ndarray>\n Data variables:\n     foo      (x, y) float64 160B dask.array<chunksize=(4, 5), meta=np.ndarray>\n 
\n
\n
\n

Cloud Storage Buckets\u00b6

\n

It is possible to read and write xarray datasets directly from / to cloud\n@@ -724,36 +724,36 @@\n \n In [18]: ds = xr.Dataset({"foo": ("x", dummies)}, coords={"x": np.arange(30)})\n \n In [19]: path = "path/to/directory.zarr"\n \n # Now we write the metadata without computing any array values\n In [20]: ds.to_zarr(path, compute=False)\n-Out[20]: Delayed('_finalize_store-869d28c3-3cb4-41c1-be67-7ddf964a11d9')\n+Out[20]: Delayed('_finalize_store-5a3251a1-b9f6-41d9-a554-1b45e9c096d5')\n

\n \n

Now, a Zarr store with the correct variable shapes and attributes exists that\n can be filled out by subsequent calls to to_zarr.\n Setting region="auto" will open the existing store and determine the\n correct alignment of the new data with the existing dimensions, or as an\n explicit mapping from dimension names to Python slice objects indicating\n where the data should be written (in index space, not label space), e.g.,

\n
# For convenience, we'll slice a single dataset, but in the real use-case\n # we would create them separately possibly even from separate processes.\n In [21]: ds = xr.Dataset({"foo": ("x", np.arange(30))}, coords={"x": np.arange(30)})\n \n # Any of the following region specifications are valid\n In [22]: ds.isel(x=slice(0, 10)).to_zarr(path, region="auto")\n-Out[22]: <xarray.backends.zarr.ZarrStore at 0xe1e39388>\n+Out[22]: <xarray.backends.zarr.ZarrStore at 0xe1b0f3d0>\n \n In [23]: ds.isel(x=slice(10, 20)).to_zarr(path, region={"x": "auto"})\n-Out[23]: <xarray.backends.zarr.ZarrStore at 0xe1e39c40>\n+Out[23]: <xarray.backends.zarr.ZarrStore at 0xe1b0fcd0>\n \n In [24]: ds.isel(x=slice(20, 30)).to_zarr(path, region={"x": slice(20, 30)})\n-Out[24]: <xarray.backends.zarr.ZarrStore at 0xe239f3d0>\n+Out[24]: <xarray.backends.zarr.ZarrStore at 0xe20762b0>\n 
\n
\n

Concurrent writes with region are safe as long as they modify distinct\n chunks in the underlying Zarr arrays (or use an appropriate lock).

\n

As a safety check to make it harder to inadvertently override existing values,\n if you set region then all variables included in a Dataset must have\n dimensions included in region. Other variables (typically coordinates)\n@@ -816,28 +816,28 @@\n ....: "y": [1, 2, 3, 4, 5],\n ....: "t": pd.date_range("2001-01-01", periods=2),\n ....: },\n ....: )\n ....: \n \n In [30]: ds1.to_zarr("path/to/directory.zarr")\n-Out[30]: <xarray.backends.zarr.ZarrStore at 0xe1e45f10>\n+Out[30]: <xarray.backends.zarr.ZarrStore at 0xe1b31070>\n \n In [31]: ds2 = xr.Dataset(\n ....: {"foo": (("x", "y", "t"), np.random.rand(4, 5, 2))},\n ....: coords={\n ....: "x": [10, 20, 30, 40],\n ....: "y": [1, 2, 3, 4, 5],\n ....: "t": pd.date_range("2001-01-03", periods=2),\n ....: },\n ....: )\n ....: \n \n In [32]: ds2.to_zarr("path/to/directory.zarr", append_dim="t")\n-Out[32]: <xarray.backends.zarr.ZarrStore at 0xe1e454f0>\n+Out[32]: <xarray.backends.zarr.ZarrStore at 0xe1b0a898>\n \n \n \n

\n

Specifying chunks in a zarr store\u00b6

\n

Chunk sizes may be specified in one of three ways when writing to a zarr store:

\n
    \n@@ -861,15 +861,15 @@\n positional ordering of the dimensions in each array. Watch out for arrays with\n differently-ordered dimensions within a single Dataset.

    \n \n

    For example, let\u2019s say we\u2019re working with a dataset with dimensions\n ('time', 'x', 'y'), a variable Tair which is chunked in x and y,\n and two multi-dimensional coordinates xc and yc:

    \n
    In [33]: ds = xr.tutorial.open_dataset("rasm")\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [34]: ds["Tair"] = ds["Tair"].chunk({"x": 100, "y": 100})\n KeyError: "No variable named 'Tair'. Variables on the dataset include ['foo', 'x']"\n \n \n In [35]: ds\n@@ -882,15 +882,15 @@\n     foo      (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29\n 
    \n
    \n

    These multi-dimensional coordinates are only two-dimensional and take up very little\n space on disk or in memory, yet when writing to disk the default zarr behavior is to\n split them into chunks:

    \n
    In [36]: ds.to_zarr("path/to/directory.zarr", mode="w")\n-Out[36]: <xarray.backends.zarr.ZarrStore at 0xe1df2190>\n+Out[36]: <xarray.backends.zarr.ZarrStore at 0xe1ac24f0>\n \n In [37]: ! ls -R path/to/directory.zarr\n path/to/directory.zarr:\n foo  x\tzarr.json\n \n path/to/directory.zarr/foo:\n c  zarr.json\n@@ -1069,15 +1069,15 @@\n 

    Ncdata\u00b6

    \n

    Ncdata provides more sophisticated means of transferring data, including entire\n datasets. It uses the file saving and loading functions in both projects to provide a\n more \u201ccorrect\u201d translation between them, but still with very low overhead and not\n using actual disk files.

    \n

    For example:

    \n
    In [48]: ds = xr.tutorial.open_dataset("air_temperature_gradient")\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [49]: cubes = ncdata.iris_xarray.cubes_from_xarray(ds)\n NameError: name 'ncdata' is not defined\n \n \n In [50]: print(cubes)\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -481,15 +481,15 @@\n    ....:         \"y\": pd.date_range(\"2000-01-01\", periods=5),\n    ....:         \"z\": (\"x\", list(\"abcd\")),\n    ....:     },\n    ....: )\n    ....:\n \n In [13]: ds.to_zarr(\"path/to/directory.zarr\")\n-Out[13]: \n+Out[13]: \n (The suffix .zarr is optional\u2013just a reminder that a zarr store lives there.)\n If the directory does not exist, it will be created. If a zarr store is already\n present at that path, an error will be raised, preventing it from being\n overwritten. To override this behavior and overwrite an existing store, add\n mode='w' when invoking to_zarr().\n DataArrays can also be saved to disk using the DataArray.to_zarr() method, and\n loaded from disk using the open_dataarray() function with engine='zarr'.\n@@ -505,19 +505,19 @@\n To read back a zarr dataset that has been created this way, we use the\n open_zarr() method:\n In [14]: ds_zarr = xr.open_zarr(\"path/to/directory.zarr\")\n \n In [15]: ds_zarr\n Out[15]:\n  Size: 232B\n-Dimensions:  (x: 4, y: 5)\n+Dimensions:  (y: 5, x: 4)\n Coordinates:\n-    z        (x) object 16B dask.array\n   * y        (y) datetime64[ns] 40B 2000-01-01 2000-01-02 ... 2000-01-05\n   * x        (x) int32 16B 10 20 30 40\n+    z        (x) object 16B dask.array\n Data variables:\n     foo      (x, y) float64 160B dask.array\n *\b**\b**\b**\b* C\bCl\blo\bou\bud\bd S\bSt\bto\bor\bra\bag\bge\be B\bBu\buc\bck\bke\bet\bts\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n It is possible to read and write xarray datasets directly from / to cloud\n storage buckets using zarr. This example uses the _\bg_\bc_\bs_\bf_\bs package to provide an\n interface to _\bG_\bo_\bo_\bg_\bl_\be_\b _\bC_\bl_\bo_\bu_\bd_\b _\bS_\bt_\bo_\br_\ba_\bg_\be.\n General _\bf_\bs_\bs_\bp_\be_\bc URLs, those that begin with s3:// or gcs:// for example, are\n@@ -562,35 +562,35 @@\n \n In [18]: ds = xr.Dataset({\"foo\": (\"x\", dummies)}, coords={\"x\": np.arange(30)})\n \n In [19]: path = \"path/to/directory.zarr\"\n \n # Now we write the metadata without computing any array values\n In [20]: ds.to_zarr(path, compute=False)\n-Out[20]: Delayed('_finalize_store-869d28c3-3cb4-41c1-be67-7ddf964a11d9')\n+Out[20]: Delayed('_finalize_store-5a3251a1-b9f6-41d9-a554-1b45e9c096d5')\n Now, a Zarr store with the correct variable shapes and attributes exists that\n can be filled out by subsequent calls to to_zarr. Setting region=\"auto\" will\n open the existing store and determine the correct alignment of the new data\n with the existing dimensions, or as an explicit mapping from dimension names to\n Python slice objects indicating where the data should be written (in index\n space, not label space), e.g.,\n # For convenience, we'll slice a single dataset, but in the real use-case\n # we would create them separately possibly even from separate processes.\n In [21]: ds = xr.Dataset({\"foo\": (\"x\", np.arange(30))}, coords={\"x\": np.arange\n (30)})\n \n # Any of the following region specifications are valid\n In [22]: ds.isel(x=slice(0, 10)).to_zarr(path, region=\"auto\")\n-Out[22]: \n+Out[22]: \n \n In [23]: ds.isel(x=slice(10, 20)).to_zarr(path, region={\"x\": \"auto\"})\n-Out[23]: \n+Out[23]: \n \n In [24]: ds.isel(x=slice(20, 30)).to_zarr(path, region={\"x\": slice(20, 30)})\n-Out[24]: \n+Out[24]: \n Concurrent writes with region are safe as long as they modify distinct chunks\n in the underlying Zarr arrays (or use an appropriate lock).\n As a safety check to make it harder to inadvertently override existing values,\n if you set region then a\bal\bll\bl variables included in a Dataset must have dimensions\n included in region. Other variables (typically coordinates) need to be\n explicitly dropped and/or written in a separate calls to to_zarr with mode='a'.\n *\b**\b**\b**\b* Z\bZa\bar\brr\br C\bCo\bom\bmp\bpr\bre\bes\bss\bso\bor\brs\bs a\ban\bnd\bd F\bFi\bil\blt\bte\ber\brs\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n@@ -636,28 +636,28 @@\n    ....:         \"y\": [1, 2, 3, 4, 5],\n    ....:         \"t\": pd.date_range(\"2001-01-01\", periods=2),\n    ....:     },\n    ....: )\n    ....:\n \n In [30]: ds1.to_zarr(\"path/to/directory.zarr\")\n-Out[30]: \n+Out[30]: \n \n In [31]: ds2 = xr.Dataset(\n    ....:     {\"foo\": ((\"x\", \"y\", \"t\"), np.random.rand(4, 5, 2))},\n    ....:     coords={\n    ....:         \"x\": [10, 20, 30, 40],\n    ....:         \"y\": [1, 2, 3, 4, 5],\n    ....:         \"t\": pd.date_range(\"2001-01-03\", periods=2),\n    ....:     },\n    ....: )\n    ....:\n \n In [32]: ds2.to_zarr(\"path/to/directory.zarr\", append_dim=\"t\")\n-Out[32]: \n+Out[32]: \n *\b**\b**\b**\b* S\bSp\bpe\bec\bci\bif\bfy\byi\bin\bng\bg c\bch\bhu\bun\bnk\bks\bs i\bin\bn a\ba z\bza\bar\brr\br s\bst\bto\bor\bre\be_\b?\b\u00b6 *\b**\b**\b**\b*\n Chunk sizes may be specified in one of three ways when writing to a zarr store:\n    1. Manual chunk sizing through the use of the encoding argument in\n       Dataset.to_zarr():\n    2. Automatic chunking based on chunks in dask arrays\n    3. Default chunk behavior determined by the zarr library\n The resulting chunks will be determined based on the order of the above list;\n@@ -676,15 +676,15 @@\n positional ordering of the dimensions in each array. Watch out for arrays with\n differently-ordered dimensions within a single Dataset.\n For example, let\u2019s say we\u2019re working with a dataset with dimensions ('time',\n 'x', 'y'), a variable Tair which is chunked in x and y, and two multi-\n dimensional coordinates xc and yc:\n In [33]: ds = xr.tutorial.open_dataset(\"rasm\")\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [34]: ds[\"Tair\"] = ds[\"Tair\"].chunk({\"x\": 100, \"y\": 100})\n KeyError: \"No variable named 'Tair'. Variables on the dataset include ['foo',\n 'x']\"\n \n@@ -697,15 +697,15 @@\n   * x        (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29\n Data variables:\n     foo      (x) int32 120B 0 1 2 3 4 5 6 7 8 9 ... 21 22 23 24 25 26 27 28 29\n These multi-dimensional coordinates are only two-dimensional and take up very\n little space on disk or in memory, yet when writing to disk the default zarr\n behavior is to split them into chunks:\n In [36]: ds.to_zarr(\"path/to/directory.zarr\", mode=\"w\")\n-Out[36]: \n+Out[36]: \n \n In [37]: ! ls -R path/to/directory.zarr\n path/to/directory.zarr:\n foo  x\tzarr.json\n \n path/to/directory.zarr/foo:\n c  zarr.json\n@@ -858,15 +858,15 @@\n _\bN_\bc_\bd_\ba_\bt_\ba provides more sophisticated means of transferring data, including entire\n datasets. It uses the file saving and loading functions in both projects to\n provide a more \u201ccorrect\u201d translation between them, but still with very low\n overhead and not using actual disk files.\n For example:\n In [48]: ds = xr.tutorial.open_dataset(\"air_temperature_gradient\")\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [49]: cubes = ncdata.iris_xarray.cubes_from_xarray(ds)\n NameError: name 'ncdata' is not defined\n \n \n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html", "unified_diff": "@@ -100,15 +100,15 @@\n In [3]: import matplotlib.pyplot as plt\n \n In [4]: import xarray as xr\n 
    \n
    \n

    For these examples we\u2019ll use the North American air temperature dataset.

    \n
    In [5]: airtemps = xr.tutorial.open_dataset("air_temperature")\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [6]: airtemps\n NameError: name 'airtemps' is not defined\n \n \n # Convert to celsius\n@@ -445,15 +445,15 @@\n \n # Apply a nonlinear transformation to one of the coords\n In [50]: b.coords["lat"] = np.log(b.coords["lat"])\n KeyError: 'lat'\n \n \n In [51]: b.plot()\n-Out[51]: [<matplotlib.lines.Line2D at 0xe03a1870>]\n+Out[51]: [<matplotlib.lines.Line2D at 0xdfffc660>]\n 
    \n
    \n \"_build/html/_static/plotting_nonuniform_coords.png\"\n \n
\n
\n

Other types of plot\u00b6

\n@@ -857,117 +857,117 @@\n * 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\n * z (z) int32 16B 0 1 2 3\n * w (w) <U5 80B 'one' 'two' 'three' 'five'\n Attributes:\n units: Aunits\n \n In [99]: ds.A.plot.scatter(x="y")\n-Out[99]: <matplotlib.collections.PathCollection at 0xe246cf48>\n+Out[99]: <matplotlib.collections.PathCollection at 0xe2177f48>\n \n \n \"_build/html/_static/da_A_y.png\"\n

Same plot can be displayed using the dataset:

\n
In [100]: ds.plot.scatter(x="y", y="A")\n-Out[100]: <matplotlib.collections.PathCollection at 0xe01913a0>\n+Out[100]: <matplotlib.collections.PathCollection at 0xdffc3240>\n 
\n
\n \"_build/html/_static/ds_A_y.png\"\n

Now suppose we want to scatter the A DataArray against the B DataArray

\n
In [101]: ds.plot.scatter(x="A", y="B")\n-Out[101]: <matplotlib.collections.PathCollection at 0xe01ac2f0>\n+Out[101]: <matplotlib.collections.PathCollection at 0xdfde9190>\n 
\n
\n \"_build/html/_static/ds_simple_scatter.png\"\n

The hue kwarg lets you vary the color by variable value

\n
In [102]: ds.plot.scatter(x="A", y="B", hue="w")\n-Out[102]: <matplotlib.collections.PathCollection at 0xe01a7240>\n+Out[102]: <matplotlib.collections.PathCollection at 0xdfe17710>\n 
\n
\n \"_build/html/_static/ds_hue_scatter.png\"\n

You can force a legend instead of a colorbar by setting add_legend=True, add_colorbar=False.

\n
In [103]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=True, add_colorbar=False)\n-Out[103]: <matplotlib.collections.PathCollection at 0xe01ac7c0>\n+Out[103]: <matplotlib.collections.PathCollection at 0xe132b9d0>\n 
\n
\n \"_build/html/_static/ds_discrete_legend_hue_scatter.png\"\n
In [104]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=False, add_colorbar=True)\n-Out[104]: <matplotlib.collections.PathCollection at 0xe015fdf0>\n+Out[104]: <matplotlib.collections.PathCollection at 0xdff8a920>\n 
\n
\n \"_build/html/_static/ds_discrete_colorbar_hue_scatter.png\"\n

The markersize kwarg lets you vary the point\u2019s size by variable value.\n You can additionally pass size_norm to control how the variable\u2019s values are mapped to point sizes.

\n
In [105]: ds.plot.scatter(x="A", y="B", hue="y", markersize="z")\n-Out[105]: <matplotlib.collections.PathCollection at 0xe012a030>\n+Out[105]: <matplotlib.collections.PathCollection at 0xdfd86190>\n 
\n
\n \"_build/html/_static/ds_hue_size_scatter.png\"\n

The z kwarg lets you plot the data along the z-axis as well.

\n
In [106]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x")\n-Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0xe014cea0>\n+Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0xe200fbe0>\n 
\n
\n \"_build/html/_static/ds_hue_size_scatter_z.png\"\n

Faceting is also possible

\n
In [107]: ds.plot.scatter(x="A", y="B", hue="y", markersize="x", row="x", col="w")\n-Out[107]: <xarray.plot.facetgrid.FacetGrid at 0xe83d1030>\n+Out[107]: <xarray.plot.facetgrid.FacetGrid at 0xe80d03c8>\n 
\n
\n \"_build/html/_static/ds_facet_scatter.png\"\n

And adding the z-axis

\n
In [108]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x", row="x", col="w")\n-Out[108]: <xarray.plot.facetgrid.FacetGrid at 0xdfaecea0>\n+Out[108]: <xarray.plot.facetgrid.FacetGrid at 0xdf74aea0>\n 
\n
\n \"_build/html/_static/ds_facet_scatter_z.png\"\n

For more advanced scatter plots, we recommend converting the relevant data variables\n to a pandas DataFrame and using the extensive plotting capabilities of seaborn.

\n
\n
\n

Quiver\u00b6

\n

Visualizing vector fields is supported with quiver plots:

\n
In [109]: ds.isel(w=1, z=1).plot.quiver(x="x", y="y", u="A", v="B")\n-Out[109]: <matplotlib.quiver.Quiver at 0xe1ea23c8>\n+Out[109]: <matplotlib.quiver.Quiver at 0xe803d3c8>\n 
\n
\n \"_build/html/_static/ds_simple_quiver.png\"\n

where u and v denote the x and y direction components of the arrow vectors. Again, faceting is also possible:

\n
In [110]: ds.plot.quiver(x="x", y="y", u="A", v="B", col="w", row="z", scale=4)\n-Out[110]: <xarray.plot.facetgrid.FacetGrid at 0xe49572d0>\n+Out[110]: <xarray.plot.facetgrid.FacetGrid at 0xe183c2d0>\n 
\n
\n \"_build/html/_static/ds_facet_quiver.png\"\n

scale is required for faceted quiver plots.\n The scale determines the number of data units per arrow length unit, i.e. a smaller scale parameter makes the arrow longer.

\n
\n
\n

Streamplot\u00b6

\n

Visualizing vector fields is also supported with streamline plots:

\n
In [111]: ds.isel(w=1, z=1).plot.streamplot(x="x", y="y", u="A", v="B")\n-Out[111]: <matplotlib.collections.LineCollection at 0xe00bd710>\n+Out[111]: <matplotlib.collections.LineCollection at 0xdfcdc710>\n 
\n
\n \"_build/html/_static/ds_simple_streamplot.png\"\n

where u and v denote the x and y direction components of the vectors tangent to the streamlines.\n Again, faceting is also possible:

\n
In [112]: ds.plot.streamplot(x="x", y="y", u="A", v="B", col="w", row="z")\n-Out[112]: <xarray.plot.facetgrid.FacetGrid at 0xe1c9eca8>\n+Out[112]: <xarray.plot.facetgrid.FacetGrid at 0xe02ed570>\n 
\n
\n \"_build/html/_static/ds_facet_streamplot.png\"\n
\n \n
\n

Maps\u00b6

\n

To follow this section you\u2019ll need to have Cartopy installed and working.

\n

This script will plot the air temperature on a map.

\n
In [113]: import cartopy.crs as ccrs\n \n In [114]: air = xr.tutorial.open_dataset("air_temperature").air\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [115]: p = air.isel(time=0).plot(\n    .....:     subplot_kws=dict(projection=ccrs.Orthographic(-80, 35), facecolor="gray"),\n    .....:     transform=ccrs.PlateCarree(),\n    .....: )\n    .....: \n@@ -1024,24 +1024,24 @@\n 
In [121]: import xarray.plot as xplt\n \n In [122]: da = xr.DataArray(range(5))\n \n In [123]: fig, axs = plt.subplots(ncols=2, nrows=2)\n \n In [124]: da.plot(ax=axs[0, 0])\n-Out[124]: [<matplotlib.lines.Line2D at 0xdfefff50>]\n+Out[124]: [<matplotlib.lines.Line2D at 0xe7f6b870>]\n \n In [125]: da.plot.line(ax=axs[0, 1])\n-Out[125]: [<matplotlib.lines.Line2D at 0xdfaf4b30>]\n+Out[125]: [<matplotlib.lines.Line2D at 0xdf1db2f0>]\n \n In [126]: xplt.plot(da, ax=axs[1, 0])\n-Out[126]: [<matplotlib.lines.Line2D at 0xdf57d2f0>]\n+Out[126]: [<matplotlib.lines.Line2D at 0xdf1db3a0>]\n \n In [127]: xplt.line(da, ax=axs[1, 1])\n-Out[127]: [<matplotlib.lines.Line2D at 0xdf57d3a0>]\n+Out[127]: [<matplotlib.lines.Line2D at 0xdf1dbd40>]\n \n In [128]: plt.tight_layout()\n \n In [129]: plt.draw()\n 
\n
\n \"_build/html/_static/plotting_ways_to_use.png\"\n@@ -1091,15 +1091,15 @@\n
\n

The plot will produce an image corresponding to the values of the array.\n Hence the top left pixel will be a different color than the others.\n Before reading on, you may want to look at the coordinates and\n think carefully about what the limits, labels, and orientation for\n each of the axes should be.

\n
In [134]: a.plot()\n-Out[134]: <matplotlib.collections.QuadMesh at 0xde193870>\n+Out[134]: <matplotlib.collections.QuadMesh at 0xdddf1870>\n 
\n
\n
\"_build/html/_static/plotting_example_2d_simple.png\"\n \n

It may seem strange that\n the values on the y axis are decreasing with -0.5 on the top. This is because\n the pixels are centered over their coordinates, and the\n@@ -1122,57 +1122,57 @@\n .....: np.arange(20).reshape(4, 5),\n .....: dims=["y", "x"],\n .....: coords={"lat": (("y", "x"), lat), "lon": (("y", "x"), lon)},\n .....: )\n .....: \n \n In [139]: da.plot.pcolormesh(x="lon", y="lat")\n-Out[139]: <matplotlib.collections.QuadMesh at 0xdf5afdf0>\n+Out[139]: <matplotlib.collections.QuadMesh at 0xdfc0ba80>\n

\n \n \"_build/html/_static/plotting_example_2d_irreg.png\"\n \n

Note that in this case, xarray still follows the pixel centered convention.\n This might be undesirable in some cases, for example when your data is defined\n on a polar projection (GH781). This is why the default is to not follow\n this convention when plotting on a map:

\n
In [140]: import cartopy.crs as ccrs\n \n In [141]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [142]: da.plot.pcolormesh(x="lon", y="lat", ax=ax)\n-Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xde1fe920>\n+Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xdde0e240>\n \n In [143]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[143]: <matplotlib.collections.PathCollection at 0xde121030>\n+Out[143]: <matplotlib.collections.PathCollection at 0xdddeb030>\n \n In [144]: ax.coastlines()\n-Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0xe83c5af8>\n+Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0xe80c6bb0>\n \n In [145]: ax.gridlines(draw_labels=True)\n-Out[145]: <cartopy.mpl.gridliner.Gridliner at 0xe032b538>\n+Out[145]: <cartopy.mpl.gridliner.Gridliner at 0xdffa31a0>\n 
\n
\n \"_build/html/_static/plotting_example_2d_irreg_map.png\"\n \n

You can however decide to infer the cell boundaries and use the\n infer_intervals keyword:

\n
In [146]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [147]: da.plot.pcolormesh(x="lon", y="lat", ax=ax, infer_intervals=True)\n-Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xde0a3c90>\n+Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0xddd04c90>\n \n In [148]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[148]: <matplotlib.collections.PathCollection at 0xde0af3a0>\n+Out[148]: <matplotlib.collections.PathCollection at 0xddd103a0>\n \n In [149]: ax.coastlines()\n-Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0xde0af450>\n+Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0xddd10450>\n \n In [150]: ax.gridlines(draw_labels=True)\n-Out[150]: <cartopy.mpl.gridliner.Gridliner at 0xde0af500>\n+Out[150]: <cartopy.mpl.gridliner.Gridliner at 0xddd10500>\n 
\n
\n \"_build/html/_static/plotting_example_2d_irreg_map_infer.png\"\n \n
\n

Note

\n

The data model of xarray does not support datasets with cell boundaries\n@@ -1180,26 +1180,26 @@\n outside the xarray framework.

\n
\n

One can also make line plots with multidimensional coordinates. In this case, hue must be a dimension name, not a coordinate name.

\n
In [151]: f, ax = plt.subplots(2, 1)\n \n In [152]: da.plot.line(x="lon", hue="y", ax=ax[0])\n Out[152]: \n-[<matplotlib.lines.Line2D at 0xde0a97c0>,\n- <matplotlib.lines.Line2D at 0xddf3f030>,\n- <matplotlib.lines.Line2D at 0xddf3f0e0>,\n- <matplotlib.lines.Line2D at 0xddf3f190>]\n+[<matplotlib.lines.Line2D at 0xddd097c0>,\n+ <matplotlib.lines.Line2D at 0xddba0030>,\n+ <matplotlib.lines.Line2D at 0xddba00e0>,\n+ <matplotlib.lines.Line2D at 0xddba0190>]\n \n In [153]: da.plot.line(x="lon", hue="x", ax=ax[1])\n Out[153]: \n-[<matplotlib.lines.Line2D at 0xddf48500>,\n- <matplotlib.lines.Line2D at 0xddf485b0>,\n- <matplotlib.lines.Line2D at 0xddf48660>,\n- <matplotlib.lines.Line2D at 0xddf48710>,\n- <matplotlib.lines.Line2D at 0xddf487c0>]\n+[<matplotlib.lines.Line2D at 0xddba8500>,\n+ <matplotlib.lines.Line2D at 0xddba85b0>,\n+ <matplotlib.lines.Line2D at 0xddba8660>,\n+ <matplotlib.lines.Line2D at 0xddba8710>,\n+ <matplotlib.lines.Line2D at 0xddba87c0>]\n 
\n
\n \"_build/html/_static/plotting_example_2d_hue_xy.png\"\n
\n \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -30,15 +30,15 @@\n \n In [3]: import matplotlib.pyplot as plt\n \n In [4]: import xarray as xr\n For these examples we\u2019ll use the North American air temperature dataset.\n In [5]: airtemps = xr.tutorial.open_dataset(\"air_temperature\")\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [6]: airtemps\n NameError: name 'airtemps' is not defined\n \n \n@@ -292,15 +292,15 @@\n \n # Apply a nonlinear transformation to one of the coords\n In [50]: b.coords[\"lat\"] = np.log(b.coords[\"lat\"])\n KeyError: 'lat'\n \n \n In [51]: b.plot()\n-Out[51]: []\n+Out[51]: []\n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\bn_\bo_\bn_\bu_\bn_\bi_\bf_\bo_\br_\bm_\b__\bc_\bo_\bo_\br_\bd_\bs_\b._\bp_\bn_\bg_\b]\n *\b**\b**\b* O\bOt\bth\bhe\ber\br t\bty\byp\bpe\bes\bs o\bof\bf p\bpl\blo\bot\bt_\b?\b\u00b6 *\b**\b**\b*\n There are several other options for plotting 2D data.\n Contour plot using DataArray.plot.contour()\n In [52]: air2d.plot.contour()\n NameError: name 'air2d' is not defined\n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\bc_\bo_\bn_\bt_\bo_\bu_\br_\b._\bp_\bn_\bg_\b]\n@@ -613,92 +613,92 @@\n * 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\n * z (z) int32 16B 0 1 2 3\n * w (w) \n+Out[99]: \n [_build/html/_static/da_A_y.png]\n Same plot can be displayed using the dataset:\n In [100]: ds.plot.scatter(x=\"y\", y=\"A\")\n-Out[100]: \n+Out[100]: \n [_build/html/_static/ds_A_y.png]\n Now suppose we want to scatter the A DataArray against the B DataArray\n In [101]: ds.plot.scatter(x=\"A\", y=\"B\")\n-Out[101]: \n+Out[101]: \n [_build/html/_static/ds_simple_scatter.png]\n The hue kwarg lets you vary the color by variable value\n In [102]: ds.plot.scatter(x=\"A\", y=\"B\", hue=\"w\")\n-Out[102]: \n+Out[102]: \n [_build/html/_static/ds_hue_scatter.png]\n You can force a legend instead of a colorbar by setting add_legend=True,\n add_colorbar=False.\n In [103]: ds.plot.scatter(x=\"A\", y=\"B\", hue=\"w\", add_legend=True,\n add_colorbar=False)\n-Out[103]: \n+Out[103]: \n [_build/html/_static/ds_discrete_legend_hue_scatter.png]\n In [104]: ds.plot.scatter(x=\"A\", y=\"B\", hue=\"w\", add_legend=False,\n add_colorbar=True)\n-Out[104]: \n+Out[104]: \n [_build/html/_static/ds_discrete_colorbar_hue_scatter.png]\n The markersize kwarg lets you vary the point\u2019s size by variable value. You can\n additionally pass size_norm to control how the variable\u2019s values are mapped to\n point sizes.\n In [105]: ds.plot.scatter(x=\"A\", y=\"B\", hue=\"y\", markersize=\"z\")\n-Out[105]: \n+Out[105]: \n [_build/html/_static/ds_hue_size_scatter.png]\n The z kwarg lets you plot the data along the z-axis as well.\n In [106]: ds.plot.scatter(x=\"A\", y=\"B\", z=\"z\", hue=\"y\", markersize=\"x\")\n-Out[106]: \n+Out[106]: \n [_build/html/_static/ds_hue_size_scatter_z.png]\n Faceting is also possible\n In [107]: ds.plot.scatter(x=\"A\", y=\"B\", hue=\"y\", markersize=\"x\", row=\"x\",\n col=\"w\")\n-Out[107]: \n+Out[107]: \n [_build/html/_static/ds_facet_scatter.png]\n And adding the z-axis\n In [108]: ds.plot.scatter(x=\"A\", y=\"B\", z=\"z\", hue=\"y\", markersize=\"x\",\n row=\"x\", col=\"w\")\n-Out[108]: \n+Out[108]: \n [_build/html/_static/ds_facet_scatter_z.png]\n For more advanced scatter plots, we recommend converting the relevant data\n variables to a pandas DataFrame and using the extensive plotting capabilities\n of seaborn.\n *\b**\b**\b**\b* Q\bQu\bui\biv\bve\ber\br_\b?\b\u00b6 *\b**\b**\b**\b*\n Visualizing vector fields is supported with quiver plots:\n In [109]: ds.isel(w=1, z=1).plot.quiver(x=\"x\", y=\"y\", u=\"A\", v=\"B\")\n-Out[109]: \n+Out[109]: \n [_build/html/_static/ds_simple_quiver.png]\n where u and v denote the x and y direction components of the arrow vectors.\n Again, faceting is also possible:\n In [110]: ds.plot.quiver(x=\"x\", y=\"y\", u=\"A\", v=\"B\", col=\"w\", row=\"z\", scale=4)\n-Out[110]: \n+Out[110]: \n [_build/html/_static/ds_facet_quiver.png]\n scale is required for faceted quiver plots. The scale determines the number of\n data units per arrow length unit, i.e. a smaller scale parameter makes the\n arrow longer.\n *\b**\b**\b**\b* S\bSt\btr\bre\bea\bam\bmp\bpl\blo\bot\bt_\b?\b\u00b6 *\b**\b**\b**\b*\n Visualizing vector fields is also supported with streamline plots:\n In [111]: ds.isel(w=1, z=1).plot.streamplot(x=\"x\", y=\"y\", u=\"A\", v=\"B\")\n-Out[111]: \n+Out[111]: \n [_build/html/_static/ds_simple_streamplot.png]\n where u and v denote the x and y direction components of the vectors tangent to\n the streamlines. Again, faceting is also possible:\n In [112]: ds.plot.streamplot(x=\"x\", y=\"y\", u=\"A\", v=\"B\", col=\"w\", row=\"z\")\n-Out[112]: \n+Out[112]: \n [_build/html/_static/ds_facet_streamplot.png]\n *\b**\b**\b**\b**\b* M\bMa\bap\bps\bs_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n To follow this section you\u2019ll need to have Cartopy installed and working.\n This script will plot the air temperature on a map.\n In [113]: import cartopy.crs as ccrs\n \n In [114]: air = xr.tutorial.open_dataset(\"air_temperature\").air\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [115]: p = air.isel(time=0).plot(\n .....: subplot_kws=dict(projection=ccrs.Orthographic(-80, 35),\n facecolor=\"gray\"),\n .....: transform=ccrs.PlateCarree(),\n@@ -745,24 +745,24 @@\n In [121]: import xarray.plot as xplt\n \n In [122]: da = xr.DataArray(range(5))\n \n In [123]: fig, axs = plt.subplots(ncols=2, nrows=2)\n \n In [124]: da.plot(ax=axs[0, 0])\n-Out[124]: []\n+Out[124]: []\n \n In [125]: da.plot.line(ax=axs[0, 1])\n-Out[125]: []\n+Out[125]: []\n \n In [126]: xplt.plot(da, ax=axs[1, 0])\n-Out[126]: []\n+Out[126]: []\n \n In [127]: xplt.line(da, ax=axs[1, 1])\n-Out[127]: []\n+Out[127]: []\n \n In [128]: plt.tight_layout()\n \n In [129]: plt.draw()\n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\bw_\ba_\by_\bs_\b__\bt_\bo_\b__\bu_\bs_\be_\b._\bp_\bn_\bg_\b]\n Here the output is the same. Since the data is 1 dimensional the line plot was\n used.\n@@ -793,15 +793,15 @@\n [0., 0., 0.]], shape=(4, 3))\n Dimensions without coordinates: y, x\n The plot will produce an image corresponding to the values of the array. Hence\n the top left pixel will be a different color than the others. Before reading\n on, you may want to look at the coordinates and think carefully about what the\n limits, labels, and orientation for each of the axes should be.\n In [134]: a.plot()\n-Out[134]: \n+Out[134]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\be_\bx_\ba_\bm_\bp_\bl_\be_\b__\b2_\bd_\b__\bs_\bi_\bm_\bp_\bl_\be_\b._\bp_\bn_\bg_\b]\n It may seem strange that the values on the y axis are decreasing with -0.5 on\n the top. This is because the pixels are centered over their coordinates, and\n the axis labels and ranges correspond to the values of the coordinates.\n *\b**\b**\b**\b* M\bMu\bul\blt\bti\bid\bdi\bim\bme\ben\bns\bsi\bio\bon\bna\bal\bl c\bco\boo\bor\brd\bdi\bin\bna\bat\bte\bes\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n See also: _\bW_\bo_\br_\bk_\bi_\bn_\bg_\b _\bw_\bi_\bt_\bh_\b _\bM_\bu_\bl_\bt_\bi_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\ba_\bl_\b _\bC_\bo_\bo_\br_\bd_\bi_\bn_\ba_\bt_\be_\bs.\n You can plot irregular grids defined by multidimensional coordinates with\n@@ -818,74 +818,74 @@\n .....: np.arange(20).reshape(4, 5),\n .....: dims=[\"y\", \"x\"],\n .....: coords={\"lat\": ((\"y\", \"x\"), lat), \"lon\": ((\"y\", \"x\"), lon)},\n .....: )\n .....:\n \n In [139]: da.plot.pcolormesh(x=\"lon\", y=\"lat\")\n-Out[139]: \n+Out[139]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\be_\bx_\ba_\bm_\bp_\bl_\be_\b__\b2_\bd_\b__\bi_\br_\br_\be_\bg_\b._\bp_\bn_\bg_\b]\n Note that in this case, xarray still follows the pixel centered convention.\n This might be undesirable in some cases, for example when your data is defined\n on a polar projection (_\bG_\bH_\b7_\b8_\b1). This is why the default is to not follow this\n convention when plotting on a map:\n In [140]: import cartopy.crs as ccrs\n \n In [141]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [142]: da.plot.pcolormesh(x=\"lon\", y=\"lat\", ax=ax)\n-Out[142]: \n+Out[142]: \n \n In [143]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[143]: \n+Out[143]: \n \n In [144]: ax.coastlines()\n-Out[144]: \n+Out[144]: \n \n In [145]: ax.gridlines(draw_labels=True)\n-Out[145]: \n+Out[145]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\be_\bx_\ba_\bm_\bp_\bl_\be_\b__\b2_\bd_\b__\bi_\br_\br_\be_\bg_\b__\bm_\ba_\bp_\b._\bp_\bn_\bg_\b]\n You can however decide to infer the cell boundaries and use the infer_intervals\n keyword:\n In [146]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [147]: da.plot.pcolormesh(x=\"lon\", y=\"lat\", ax=ax, infer_intervals=True)\n-Out[147]: \n+Out[147]: \n \n In [148]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[148]: \n+Out[148]: \n \n In [149]: ax.coastlines()\n-Out[149]: \n+Out[149]: \n \n In [150]: ax.gridlines(draw_labels=True)\n-Out[150]: \n+Out[150]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bp_\bl_\bo_\bt_\bt_\bi_\bn_\bg_\b__\be_\bx_\ba_\bm_\bp_\bl_\be_\b__\b2_\bd_\b__\bi_\br_\br_\be_\bg_\b__\bm_\ba_\bp_\b__\bi_\bn_\bf_\be_\br_\b._\bp_\bn_\bg_\b]\n Note\n The data model of xarray does not support datasets with _\bc_\be_\bl_\bl_\b _\bb_\bo_\bu_\bn_\bd_\ba_\br_\bi_\be_\bs yet. If\n you want to use these coordinates, you\u2019ll have to make the plots outside the\n xarray framework.\n One can also make line plots with multidimensional coordinates. In this case,\n hue must be a dimension name, not a coordinate name.\n In [151]: f, ax = plt.subplots(2, 1)\n \n In [152]: da.plot.line(x=\"lon\", hue=\"y\", ax=ax[0])\n Out[152]:\n-[,\n- ,\n- ,\n- ]\n+[,\n+ ,\n+ ,\n+ ]\n \n In [153]: da.plot.line(x=\"lon\", hue=\"x\", ax=ax[1])\n Out[153]:\n-[,\n- ,\n- ,\n- ,\n- ]\n+[,\n+ ,\n+ ,\n+ ,\n+ ]\n [_build/html/_static/plotting_example_2d_hue_xy.png]\n _\b[_\bL_\bo_\bg_\bo_\b _\bo_\bf_\b _\bx_\ba_\br_\br_\ba_\by_\b]\n *\b**\b**\b**\b**\b**\b* _\bx\bx_\ba\ba_\br\br_\br\br_\ba\ba_\by\by *\b**\b**\b**\b**\b**\b*\n *\b**\b**\b**\b* N\bNa\bav\bvi\big\bga\bat\bti\bio\bon\bn *\b**\b**\b**\b*\n For users\n * _\bG_\be_\bt_\bt_\bi_\bn_\bg_\b _\bS_\bt_\ba_\br_\bt_\be_\bd\n * _\bU_\bs_\be_\br_\b _\bG_\bu_\bi_\bd_\be\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/reshaping.html", "unified_diff": "@@ -554,15 +554,15 @@\n
\n

Reshaping via coarsen\u00b6

\n

Whilst coarsen is normally used for reducing your data\u2019s resolution by applying a reduction function\n (see the page on computation),\n it can also be used to reorganise your data without applying a computation via construct().

\n

Taking our example tutorial air temperature dataset over the Northern US

\n
In [56]: air = xr.tutorial.open_dataset("air_temperature")["air"]\n-PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/first-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n+PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not create data cache folder '/nonexistent/second-build/.cache/xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [57]: air.isel(time=0).plot(x="lon", y="lat")\n NameError: name 'air' is not defined\n 
\n
\n \"_build/html/_static/pre_coarsening.png\"\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -440,15 +440,15 @@\n *\b**\b**\b**\b**\b* R\bRe\bes\bsh\bha\bap\bpi\bin\bng\bg v\bvi\bia\ba c\bco\boa\bar\brs\bse\ben\bn_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n Whilst coarsen is normally used for reducing your data\u2019s resolution by applying\n a reduction function (see the _\bp_\ba_\bg_\be_\b _\bo_\bn_\b _\bc_\bo_\bm_\bp_\bu_\bt_\ba_\bt_\bi_\bo_\bn), it can also be used to\n reorganise your data without applying a computation via construct().\n Taking our example tutorial air temperature dataset over the Northern US\n In [56]: air = xr.tutorial.open_dataset(\"air_temperature\")[\"air\"]\n PermissionError: [Errno 13] Permission denied: '/nonexistent' | Pooch could not\n-create data cache folder '/nonexistent/first-build/.cache/\n+create data cache folder '/nonexistent/second-build/.cache/\n xarray_tutorial_data'. Will not be able to download data files.\n \n \n In [57]: air.isel(time=0).plot(x=\"lon\", y=\"lat\")\n NameError: name 'air' is not defined\n [_build/html/_static/pre_coarsening.png]\n we can split this up into sub-regions of size (9, 18) points using construct():\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/testing.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/testing.html", "unified_diff": "@@ -84,37 +84,48 @@\n

Generating Examples\u00b6

\n

To see an example of what each of these strategies might produce, you can call one followed by the .example() method,\n which is a general hypothesis method valid for all strategies.

\n
In [2]: import xarray.testing.strategies as xrst\n \n In [3]: xrst.variables().example()\n Out[3]: \n-<xarray.Variable (\u017b\u017f5\u012e\u0143: 5)> Size: 20B\n-array([-2147435733,    48956106, -2147463450, -2147483495,   952662193])\n-Attributes:\n-    \u0156\u0147\u00f9:      False\n-    \u0157T\u010aU\u00e6:    None\n-    W\u00ed2\u00ba\u00b9:    [['(']]\n-    \u00ee\u00ff\u00cd\u017f\u00d3:    ['NaT' 'NaT']\n-    :         \u00c3\u0152\u00b2\u0122\u0166\n-    pk\u0143:      \u017d\u0131\n-    \u0170NYS:     None\n-    \u00ba\u00d55J:     G\u00ed\n-    b\u017b:       False\n-    \u017c\u00f9\u016f\u0104m:    True\n+<xarray.Variable (\u0171: 3, \u0176: 4)> Size: 96B\n+array([[       inf      +infj,  1.000e+00      +infj,  6.104e-05+2.220e-16j,\n+        -0.000e+00-1.100e+00j],\n+       [ 0.000e+00      +infj,  0.000e+00-5.000e-01j, -3.381e+16      +infj,\n+        -1.192e-07      +infj],\n+       [ 1.192e-07-1.175e-38j, -5.000e-01+0.000e+00j,  0.000e+00-1.100e+00j,\n+         1.192e-07-1.175e-38j]], shape=(3, 4), dtype=complex64)\n \n In [4]: xrst.variables().example()\n Out[4]: \n-<xarray.Variable (0: 1)> Size: 8B\n-array([0.+0.j], dtype=complex64)\n+<xarray.Variable (\u00e3\u017c: 1, \u0178\u00c6: 1)> Size: 4B\n+array([[4052997171]], dtype=uint32)\n+Attributes:\n+    \u017e:        \u0161\u00da\u017b\u0129\u00df\n+    \u011d\u0126\u00c7b\u00cc:    None\n+    :         False\n+    \u017d\u00b3\u015a\u00ca\u017d:    None\n+    \u00e2\u00fe\u017bp\u00c1:    [['\u00e38\\x08\u00e3\\x1bp\\x1c\\U0010b29f' '\u00bd\\x7f\u00c4\\x03c\u00bd']\\n ['.\u00a3\\x0e\u00e6\\U000...\n+    \u0179\u00f4\u017d\u00ec\u0178:    \n+    \u00fb\u00f9\u00d4\u0119\u015f:    None\n+    \u017f\u012c\u017b\u0137\u00cd:    False\n+    \u01678\u011b\u017e\u017b:    None\n+    \u010f\u0137:       5\u012f\u00fe\u00d5\u017d\n+    Z:        None\n \n In [5]: xrst.variables().example()\n Out[5]: \n-<xarray.Variable (0: 1)> Size: 8B\n-array([0.+0.j], dtype=complex64)\n+<xarray.Variable (V\u00be\u0115\u00c0: 2)> Size: 2B\n+array([36, 36], dtype=int8)\n+Attributes:\n+    Q\u00ee\u0123\u00e1\u00f2:    True\n+    :         None\n+    \u0145\u0122\u0164\u017b:     None\n+    \u00cf:        None\n 
\n
\n

You can see that calling .example() multiple times will generate different examples, giving you an idea of the wide\n range of data that the xarray strategies can generate.

\n

In your tests however you should not use .example() - instead you should parameterize your tests with the\n hypothesis.given() decorator:

\n
In [6]: from hypothesis import given\n@@ -132,94 +143,62 @@\n 

Xarray\u2019s strategies can accept other strategies as arguments, allowing you to customise the contents of the generated\n examples.

\n
# generate a Variable containing an array with a complex number dtype, but all other details still arbitrary\n In [8]: from hypothesis.extra.numpy import complex_number_dtypes\n \n In [9]: xrst.variables(dtype=complex_number_dtypes()).example()\n Out[9]: \n-<xarray.Variable (\u00eaH\u017f\u017f: 6, \u00b3\u0169\u012fC: 5, \u00fa\u00f2\u0114: 1)> Size: 480B\n-array([[[ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j]],\n-\n-       [[ 2.220e-016       -infj],\n-        [-5.960e-008-2.056e-262j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j]],\n-\n-       [[ 1.113e-308-4.941e-324j],\n-        [        nan       +nanj],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j]],\n-\n-       [[ 2.225e-309-1.100e+000j],\n-        [ 1.113e-308-4.941e-324j],\n-        [-5.000e-001-2.225e-313j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j]],\n-\n-       [[ 1.113e-308-4.941e-324j],\n-        [ 3.949e+014+2.220e-016j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j]],\n-\n-       [[ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 1.113e-308-4.941e-324j],\n-        [ 5.000e-001-1.000e+000j]]], shape=(6, 5, 1))\n-Attributes:\n-    \u00cc7Z\u013b\u015f:    {'': array([9223372036854775806], dtype='timedelta64[us]'), '\u00e4q...\n-    :         {'\u017b': True, '\u0126j\u0173': array(['NaT'], dtype='datetime64[m]'), 'dO\u0157\u0168...\n-    \u0147\u013az\u0131\u017f:    {'\u010e\u017d\u0146': None, '\u00b3\u017d9': array([               'NaT', -149645564191...\n+<xarray.Variable (\u00d5\u00be\u00be\u017f: 3, E\u017ft: 3)> Size: 144B\n+array([[-3.515e+016      -infj, -1.175e-038+1.401e-45j,        -inf+1.900e+00j],\n+       [-1.500e+000+1.500e+00j,  1.144e+243      -infj, -3.333e-001+0.000e+00j],\n+       [        inf+1.900e+00j,         inf-9.596e+15j, -5.000e-001      +nanj]], dtype='>c16')\n 
\n
\n

This also works with custom strategies, or strategies defined in other packages.\n For example you could imagine creating a chunks strategy to specify particular chunking patterns for a dask-backed array.

\n
\n
\n

Fixing Arguments\u00b6

\n

If you want to fix one aspect of the data structure, whilst allowing variation in the generated examples\n over all other aspects, then use hypothesis.strategies.just().

\n
In [10]: import hypothesis.strategies as st\n \n # Generates only variable objects with dimensions ["x", "y"]\n In [11]: xrst.variables(dims=st.just(["x", "y"])).example()\n Out[11]: \n-<xarray.Variable (x: 1, y: 1)> Size: 8B\n-array([[0.+0.j]], dtype=complex64)\n+<xarray.Variable (x: 2, y: 2)> Size: 64B\n+array([[-1.113e-308 -1.j,         nan+infj],\n+       [       -inf+infj,         nan+infj]])\n 
\n
\n

(This is technically another example of chaining strategies - hypothesis.strategies.just() is simply a\n special strategy that just contains a single example.)

\n

To fix the length of dimensions you can instead pass dims as a mapping of dimension names to lengths\n (i.e. following xarray objects\u2019 .sizes() property), e.g.

\n
# Generates only variables with dimensions ["x", "y"], of lengths 2 & 3 respectively\n In [12]: xrst.variables(dims=st.just({"x": 2, "y": 3})).example()\n Out[12]: \n-<xarray.Variable (x: 2, y: 3)> Size: 12B\n-array([[-1.500e+00, -1.500e+00,  2.000e+00],\n-       [-6.104e-05,        inf,  0.000e+00]], dtype=float16)\n+<xarray.Variable (x: 2, y: 3)> Size: 48B\n+array([[-9223372036854742917, -7320804107538452131,  3778513437244823336],\n+       [-9223372036854750587, -9223372036854764399, -9223372036854765406]], dtype=int64)\n Attributes:\n-    \u0110\u017f:       {}\n-    \u00dd\u017feG:     {}\n-    \u017b6:       {'\u017d\u017c': array([b'\\x05'], dtype='|S6'), '\u0146\u0162\u017b\u015c': False, '\u017e\u013e\u017e0\u0141': '...\n+    \u017e\u00e8:       ['' '\\x15']\n+    \u0107e:       None\n+    \u017d\u00f9:       None\n+    \u0118\u00e9\u0133\u00caS:    \u0130\u00c6\u0149\n 
\n
\n

You can also use this to specify that you want examples which are missing some part of the data structure, for instance

\n
# Generates a Variable with no attributes\n In [13]: xrst.variables(attrs=st.just({})).example()\n Out[13]: \n-<xarray.Variable (\u00eb\u00e6\u0119\u0129\u017e: 2)> Size: 32B\n-array([   -inf-6.104e-005j, 5.e-324-1.798e+308j])\n+<xarray.Variable (\u00b3: 3, F\u00f8y\u012e: 3)> Size: 72B\n+array([[              57204, 1339669549717624835,                 159],\n+       [         3389693394,               23216,                3031],\n+       [         1275883880,               53237,          2035765567]], dtype=uint64)\n 
\n
\n

Through a combination of chaining strategies and fixing arguments, you can specify quite complicated requirements on the\n objects your chained strategy will generate.

\n
In [14]: fixed_x_variable_y_maybe_z = st.fixed_dictionaries(\n    ....:     {"x": st.just(2), "y": st.integers(3, 4)}, optional={"z": st.just(2)}\n    ....: )\n@@ -228,40 +207,48 @@\n In [15]: fixed_x_variable_y_maybe_z.example()\n Out[15]: {'x': 2, 'y': 3, 'z': 2}\n \n In [16]: special_variables = xrst.variables(dims=fixed_x_variable_y_maybe_z)\n \n In [17]: special_variables.example()\n Out[17]: \n-<xarray.Variable (x: 2, y: 3, z: 2)> Size: 48B\n-array([[[-4.413e+16,  5.748e+16],\n-        [-1.000e-05, -3.333e-01],\n-        [       inf, -0.000e+00]],\n-\n-       [[-0.000e+00,        inf],\n-        [       nan, -5.960e-08],\n-        [       nan,        nan]]], shape=(2, 3, 2), dtype=float32)\n+<xarray.Variable (x: 2, y: 4, z: 2)> Size: 256B\n+array([[[ 1.401e-045-4.941e-324j,  4.771e-206       +nanj],\n+        [ 2.225e-313       -infj,  2.225e-308-1.421e-231j],\n+        [-1.532e+245+1.798e+308j,  3.403e+038+1.798e+308j],\n+        [ 5.960e-008-2.225e-308j,  3.139e+016+2.225e-309j]],\n+\n+       [[       -inf+6.102e+016j,  9.007e+015       +nanj],\n+        [-1.500e+000       +nanj, -1.792e+016       -infj],\n+        [ 1.000e-005-1.401e-045j,  1.000e+000       -infj],\n+        [        nan       +infj,  6.104e-005-1.206e+016j]]], shape=(2, 4, 2))\n Attributes:\n-    :         None\n-    \u017b:        [b'' b'']\n-    \u00e5\u00fc:       t\u0121\u015fn\n-    \u0136bK\u00ed\u0115:    None\n-    \u0118\u00d8L\u017bM:    True\n-    \u00e2:        \n-    M:        \u017f\n+    \u00ff\u017b\u017b\u0140\u017a:    {'\u017cQKq\u017d': None, '': '\u00ccS\u00f9\u0108q', '\u0100\u017fV\u017d': None, 'b': None, 'q\u00fb\u00cd': No...\n \n In [18]: special_variables.example()\n Out[18]: \n-<xarray.Variable (x: 2, y: 3)> Size: 24B\n-array([[-2147483516, -2147420238, -2147483516],\n-       [-2147483396, -2147471625, -2147483429]])\n-Attributes:\n-    :         {}\n-    Th\u00c4\u00f8d:    {'\u0171': False, '': array([[b'\\x08a\\xe8', b'\\x0b\\xb0']], dtype='|S...\n-    \u017e\u013a:       {}\n+<xarray.Variable (x: 2, y: 4)> Size: 128B\n+array([[-1.000e+07       +infj, -1.000e+07       +infj,        inf+1.113e-308j,\n+         1.175e-38       +infj],\n+       [ 5.960e-08+3.333e-001j,  5.960e-08+4.941e-324j,       -inf-2.225e-311j,\n+         9.007e+15+6.642e+016j]])\n+Attributes: (12/21)\n+    a\u014c\u017c:      False\n+    :         None\n+    a\u0141q\u00fa\u00aa:    True\n+    \u015a\u00d4:       True\n+    \u0119\u017c\u0123:      ['']\n+    \u0179:        [['NaT']]\n+    ...       ...\n+    \u017b\u0109\u017f\u00f6K:    [[b'']]\n+    \u00c4:        None\n+    \u0105\u010f\u00b2\u015f\u00d4:    [[  0.+3.403e+38j]\\n [-inf-0.000e+00j]]\n+    \u00ea\u0125:       [['\ua231\\x87\u00feM\u00fb\\x9e']\\n ['\\U00060fc0\\U0007a060\\\\\u00f2']]\n+    \u00e6:        \u00ec\u017c0\u0170\u00d9\n+    \u00c9\u017e\u013e\u0148\u00e6:    [[b'\\xbb\\xda']\\n [b'\\xe3\\xd09\\x0f\\xd9.Fr']]\n 
\n
\n

Here we have used one of hypothesis\u2019 built-in strategies hypothesis.strategies.fixed_dictionaries() to create a\n strategy which generates mappings of dimension names to lengths (i.e. the size of the xarray object we want).\n This particular strategy will always generate an x dimension of length 2, and a y dimension of\n length either 3 or 4, and will sometimes also generate a z dimension of length 2.\n By feeding this strategy for dictionaries into the dims argument of xarray\u2019s variables() strategy,\n@@ -362,50 +349,52 @@\n ....: array_strategy_fn=xps.arrays,\n ....: dtype=xps.scalar_dtypes(),\n ....: )\n ....: \n \n In [32]: xp_variables.example()\n Out[32]: \n-<xarray.Variable (\u0132EH\u011d: 2, \u0147\u012e\u00c8: 2, \u00c9\u00eb: 4)> Size: 64B\n-array([[[ 0. , 0. , 0. , 0. ],\n- [ 0. , 0. , 0. , 0. ]],\n-\n- [[ 0.333, 0. , 0. , -0. ],\n- [ 0. , 0. , 0. , 0. ]]], shape=(2, 2, 4), dtype=float32)\n+<xarray.Variable (\u00c5\u017b\u0171: 5, \u0165\u0168\u00ddJ\u010e: 6)> Size: 240B\n+array([[-3.403e+38 -infj, nan-0.000e+00j, -3.403e+38 -infj,\n+ -2.220e-16-5.384e+16j, nan -infj, -3.403e+38 -infj],\n+ [-0.000e+00-0.000e+00j, -3.403e+38 -infj, -3.403e+38 -infj,\n+ nan+3.333e-01j, 3.333e-01 +nanj, inf+1.100e+00j],\n+ [-3.403e+38 -infj, nan-0.000e+00j, 0.000e+00+0.000e+00j,\n+ -3.403e+38 -infj, -3.403e+38 -infj, -3.403e+38 -infj],\n+ [-0.000e+00+0.000e+00j, 0.000e+00 +nanj, -3.403e+38 -infj,\n+ 4.812e+16 +infj, -3.403e+38 -infj, -inf-1.401e-45j],\n+ [ -inf+0.000e+00j, inf+1.000e+07j, nan+1.100e+00j,\n+ 0.000e+00 +nanj, 0.000e+00-3.141e+15j, -inf+4.623e+16j]],\n+ shape=(5, 6), dtype=complex64)\n Attributes:\n- \u015f\u00f9\u017f\u00fd: \n- \u0104\u0170g\u00b2: \u00dc\u017c\u015d\u0168\u0145\n- \u016f: [ 12 -108]\n- \u0156\u017d\u0129\u017ds: \u00f3\u00bc\u0107\u00c5\u017e\n- \u00f6H: [['']]\n+ \u017b\u017d\u017e\u00e7\u017d: {'\u012a\u00db\u0125': True, 'y\u00c8er\u00dd': True, '\u0107U\u0120': array([[ 'NaT...\n \n \n

Another array API-compliant duck array library would replace the import, e.g. import cupy as cp instead.

\n
\n
\n

Testing over Subsets of Dimensions\u00b6

\n

A common task when testing xarray user code is checking that your function works for all valid input dimensions.\n We can chain strategies to achieve this, for which the helper strategy unique_subset_of()\n is useful.

\n

It works for lists of dimension names

\n
In [33]: dims = ["x", "y", "z"]\n \n In [34]: xrst.unique_subset_of(dims).example()\n-Out[34]: ['y', 'z', 'x']\n+Out[34]: ['z', 'y']\n \n In [35]: xrst.unique_subset_of(dims).example()\n-Out[35]: ['x']\n+Out[35]: ['y', 'x', 'z']\n 
\n
\n

as well as for mappings of dimension names to sizes

\n
In [36]: dim_sizes = {"x": 2, "y": 3, "z": 4}\n \n In [37]: xrst.unique_subset_of(dim_sizes).example()\n-Out[37]: {'x': 2, 'y': 3, 'z': 4}\n+Out[37]: {'y': 3}\n \n In [38]: xrst.unique_subset_of(dim_sizes).example()\n Out[38]: {'z': 4, 'y': 3}\n 
\n
\n

This is useful because operations like reductions can be performed over any subset of the xarray object\u2019s dimensions.\n For example we can write a pytest test that tests that a reduction gives the expected result when applying that reduction\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -28,37 +28,49 @@\n To see an example of what each of these strategies might produce, you can call\n one followed by the .example() method, which is a general hypothesis method\n valid for all strategies.\n In [2]: import xarray.testing.strategies as xrst\n \n In [3]: xrst.variables().example()\n Out[3]:\n- Size: 20B\n-array([-2147435733, 48956106, -2147463450, -2147483495, 952662193])\n-Attributes:\n- \u0156\u0147\u00f9: False\n- \u0157T\u010aU\u00e6: None\n- W\u00ed2\u00ba\u00b9: [['(']]\n- \u00ee\u00ff\u00cd\u017f\u00d3: ['NaT' 'NaT']\n- : \u00c3\u0152\u00b2\u0122\u0166\n- pk\u0143: \u017d\u0131\n- \u0170NYS: None\n- \u00ba\u00d55J: G\u00ed\n- b\u017b: False\n- \u017c\u00f9\u016f\u0104m: True\n+ Size: 96B\n+array([[ inf +infj, 1.000e+00 +infj, 6.104e-05+2.220e-16j,\n+ -0.000e+00-1.100e+00j],\n+ [ 0.000e+00 +infj, 0.000e+00-5.000e-01j, -3.381e+16 +infj,\n+ -1.192e-07 +infj],\n+ [ 1.192e-07-1.175e-38j, -5.000e-01+0.000e+00j, 0.000e+00-1.100e+00j,\n+ 1.192e-07-1.175e-38j]], shape=(3, 4), dtype=complex64)\n \n In [4]: xrst.variables().example()\n Out[4]:\n- Size: 8B\n-array([0.+0.j], dtype=complex64)\n+ Size: 4B\n+array([[4052997171]], dtype=uint32)\n+Attributes:\n+ \u017e: \u0161\u00da\u017b\u0129\u00df\n+ \u011d\u0126\u00c7b\u00cc: None\n+ : False\n+ \u017d\u00b3\u015a\u00ca\u017d: None\n+ \u00e2\u00fe\u017bp\u00c1: [['\u00e38\\x08\u00e3\\x1bp\\x1c\\U0010b29f' '\u00bd\\x7f\u00c4\\x03c\u00bd']\\n\n+['.\u00a3\\x0e\u00e6\\U000...\n+ \u0179\u00f4\u017d\u00ec\u0178:\n+ \u00fb\u00f9\u00d4\u0119\u015f: None\n+ \u017f\u012c\u017b\u0137\u00cd: False\n+ \u01678\u011b\u017e\u017b: None\n+ \u010f\u0137: 5\u012f\u00fe\u00d5\u017d\n+ Z: None\n \n In [5]: xrst.variables().example()\n Out[5]:\n- Size: 8B\n-array([0.+0.j], dtype=complex64)\n+ Size: 2B\n+array([36, 36], dtype=int8)\n+Attributes:\n+ Q\u00ee\u0123\u00e1\u00f2: True\n+ : None\n+ \u0145\u0122\u0164\u017b: None\n+ \u00cf: None\n You can see that calling .example() multiple times will generate different\n examples, giving you an idea of the wide range of data that the xarray\n strategies can generate.\n In your tests however you should not use .example() - instead you should\n parameterize your tests with the hypothesis.given() decorator:\n In [6]: from hypothesis import given\n In [7]: @given(xrst.variables())\n@@ -70,96 +82,65 @@\n customise the contents of the generated examples.\n # generate a Variable containing an array with a complex number dtype, but all\n other details still arbitrary\n In [8]: from hypothesis.extra.numpy import complex_number_dtypes\n \n In [9]: xrst.variables(dtype=complex_number_dtypes()).example()\n Out[9]:\n- Size: 480B\n-array([[[ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j]],\n-\n- [[ 2.220e-016 -infj],\n- [-5.960e-008-2.056e-262j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j]],\n-\n- [[ 1.113e-308-4.941e-324j],\n- [ nan +nanj],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j]],\n-\n- [[ 2.225e-309-1.100e+000j],\n- [ 1.113e-308-4.941e-324j],\n- [-5.000e-001-2.225e-313j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j]],\n-\n- [[ 1.113e-308-4.941e-324j],\n- [ 3.949e+014+2.220e-016j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j]],\n-\n- [[ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 1.113e-308-4.941e-324j],\n- [ 5.000e-001-1.000e+000j]]], shape=(6, 5, 1))\n-Attributes:\n- \u00cc7Z\u013b\u015f: {'': array([9223372036854775806], dtype='timedelta64[us]'),\n-'\u00e4q...\n- : {'\u017b': True, '\u0126j\u0173': array(['NaT'], dtype='datetime64[m]'),\n-'dO\u0157\u0168...\n- \u0147\u013az\u0131\u017f: {'\u010e\u017d\u0146': None, '\u00b3\u017d9': array([ 'NaT', -\n-149645564191...\n+ Size: 144B\n+array([[-3.515e+016 -infj, -1.175e-038+1.401e-45j, -\n+inf+1.900e+00j],\n+ [-1.500e+000+1.500e+00j, 1.144e+243 -infj, -3.333e-\n+001+0.000e+00j],\n+ [ inf+1.900e+00j, inf-9.596e+15j, -5.000e-001\n++nanj]], dtype='>c16')\n This also works with custom strategies, or strategies defined in other\n packages. For example you could imagine creating a chunks strategy to specify\n particular chunking patterns for a dask-backed array.\n *\b**\b**\b**\b* F\bFi\bix\bxi\bin\bng\bg A\bAr\brg\bgu\bum\bme\ben\bnt\bts\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n If you want to fix one aspect of the data structure, whilst allowing variation\n in the generated examples over all other aspects, then use\n hypothesis.strategies.just().\n In [10]: import hypothesis.strategies as st\n \n # Generates only variable objects with dimensions [\"x\", \"y\"]\n In [11]: xrst.variables(dims=st.just([\"x\", \"y\"])).example()\n Out[11]:\n- Size: 8B\n-array([[0.+0.j]], dtype=complex64)\n+ Size: 64B\n+array([[-1.113e-308 -1.j, nan+infj],\n+ [ -inf+infj, nan+infj]])\n (This is technically another example of chaining strategies -\n hypothesis.strategies.just() is simply a special strategy that just contains a\n single example.)\n To fix the length of dimensions you can instead pass dims as a mapping of\n dimension names to lengths (i.e. following xarray objects\u2019 .sizes() property),\n e.g.\n # Generates only variables with dimensions [\"x\", \"y\"], of lengths 2 & 3\n respectively\n In [12]: xrst.variables(dims=st.just({\"x\": 2, \"y\": 3})).example()\n Out[12]:\n- Size: 12B\n-array([[-1.500e+00, -1.500e+00, 2.000e+00],\n- [-6.104e-05, inf, 0.000e+00]], dtype=float16)\n+ Size: 48B\n+array([[-9223372036854742917, -7320804107538452131, 3778513437244823336],\n+ [-9223372036854750587, -9223372036854764399, -9223372036854765406]],\n+dtype=int64)\n Attributes:\n- \u0110\u017f: {}\n- \u00dd\u017feG: {}\n- \u017b6: {'\u017d\u017c': array([b'\\x05'], dtype='|S6'), '\u0146\u0162\u017b\u015c': False, '\u017e\u013e\u017e0\u0141':\n-'...\n+ \u017e\u00e8: ['' '\\x15']\n+ \u0107e: None\n+ \u017d\u00f9: None\n+ \u0118\u00e9\u0133\u00caS: \u0130\u00c6\u0149\n You can also use this to specify that you want examples which are missing some\n part of the data structure, for instance\n # Generates a Variable with no attributes\n In [13]: xrst.variables(attrs=st.just({})).example()\n Out[13]:\n- Size: 32B\n-array([ -inf-6.104e-005j, 5.e-324-1.798e+308j])\n+ Size: 72B\n+array([[ 57204, 1339669549717624835, 159],\n+ [ 3389693394, 23216, 3031],\n+ [ 1275883880, 53237, 2035765567]],\n+dtype=uint64)\n Through a combination of chaining strategies and fixing arguments, you can\n specify quite complicated requirements on the objects your chained strategy\n will generate.\n In [14]: fixed_x_variable_y_maybe_z = st.fixed_dictionaries(\n ....: {\"x\": st.just(2), \"y\": st.integers(3, 4)}, optional={\"z\": st.just\n (2)}\n ....: )\n@@ -168,41 +149,49 @@\n In [15]: fixed_x_variable_y_maybe_z.example()\n Out[15]: {'x': 2, 'y': 3, 'z': 2}\n \n In [16]: special_variables = xrst.variables(dims=fixed_x_variable_y_maybe_z)\n \n In [17]: special_variables.example()\n Out[17]:\n- Size: 48B\n-array([[[-4.413e+16, 5.748e+16],\n- [-1.000e-05, -3.333e-01],\n- [ inf, -0.000e+00]],\n-\n- [[-0.000e+00, inf],\n- [ nan, -5.960e-08],\n- [ nan, nan]]], shape=(2, 3, 2), dtype=float32)\n+ Size: 256B\n+array([[[ 1.401e-045-4.941e-324j, 4.771e-206 +nanj],\n+ [ 2.225e-313 -infj, 2.225e-308-1.421e-231j],\n+ [-1.532e+245+1.798e+308j, 3.403e+038+1.798e+308j],\n+ [ 5.960e-008-2.225e-308j, 3.139e+016+2.225e-309j]],\n+\n+ [[ -inf+6.102e+016j, 9.007e+015 +nanj],\n+ [-1.500e+000 +nanj, -1.792e+016 -infj],\n+ [ 1.000e-005-1.401e-045j, 1.000e+000 -infj],\n+ [ nan +infj, 6.104e-005-1.206e+016j]]], shape=(2, 4, 2))\n Attributes:\n- : None\n- \u017b: [b'' b'']\n- \u00e5\u00fc: t\u0121\u015fn\n- \u0136bK\u00ed\u0115: None\n- \u0118\u00d8L\u017bM: True\n- \u00e2:\n- M: \u017f\n+ \u00ff\u017b\u017b\u0140\u017a: {'\u017cQKq\u017d': None, '': '\u00ccS\u00f9\u0108q', '\u0100\u017fV\u017d': None, 'b': None, 'q\u00fb\u00cd':\n+No...\n \n In [18]: special_variables.example()\n Out[18]:\n- Size: 24B\n-array([[-2147483516, -2147420238, -2147483516],\n- [-2147483396, -2147471625, -2147483429]])\n-Attributes:\n- : {}\n- Th\u00c4\u00f8d: {'\u0171': False, '': array([[b'\\x08a\\xe8', b'\\x0b\\xb0']],\n-dtype='|S...\n- \u017e\u013a: {}\n+ Size: 128B\n+array([[-1.000e+07 +infj, -1.000e+07 +infj, inf+1.113e-308j,\n+ 1.175e-38 +infj],\n+ [ 5.960e-08+3.333e-001j, 5.960e-08+4.941e-324j, -inf-2.225e-311j,\n+ 9.007e+15+6.642e+016j]])\n+Attributes: (12/21)\n+ a\u014c\u017c: False\n+ : None\n+ a\u0141q\u00fa\u00aa: True\n+ \u015a\u00d4: True\n+ \u0119\u017c\u0123: ['']\n+ \u0179: [['NaT']]\n+ ... ...\n+ \u017b\u0109\u017f\u00f6K: [[b'']]\n+ \u00c4: None\n+ \u0105\u010f\u00b2\u015f\u00d4: [[ 0.+3.403e+38j]\\n [-inf-0.000e+00j]]\n+ \u00ea\u0125: [['\ua231\\x87\u00feM\u00fb\\x9e']\\n ['\\U00060fc0\\U0007a060\\\\\u00f2']]\n+ \u00e6: \u00ec\u017c0\u0170\u00d9\n+ \u00c9\u017e\u013e\u0148\u00e6: [[b'\\xbb\\xda']\\n [b'\\xe3\\xd09\\x0f\\xd9.Fr']]\n Here we have used one of hypothesis\u2019 built-in strategies\n hypothesis.strategies.fixed_dictionaries() to create a strategy which generates\n mappings of dimension names to lengths (i.e. the size of the xarray object we\n want). This particular strategy will always generate an x dimension of length\n 2, and a y dimension of length either 3 or 4, and will sometimes also generate\n a z dimension of length 2. By feeding this strategy for dictionaries into the\n dims argument of xarray\u2019s variables() strategy, we can generate arbitrary\n@@ -296,45 +285,48 @@\n ....: array_strategy_fn=xps.arrays,\n ....: dtype=xps.scalar_dtypes(),\n ....: )\n ....:\n \n In [32]: xp_variables.example()\n Out[32]:\n- Size: 64B\n-array([[[ 0. , 0. , 0. , 0. ],\n- [ 0. , 0. , 0. , 0. ]],\n-\n- [[ 0.333, 0. , 0. , -0. ],\n- [ 0. , 0. , 0. , 0. ]]], shape=(2, 2, 4), dtype=float32)\n+ Size: 240B\n+array([[-3.403e+38 -infj, nan-0.000e+00j, -3.403e+38 -infj,\n+ -2.220e-16-5.384e+16j, nan -infj, -3.403e+38 -infj],\n+ [-0.000e+00-0.000e+00j, -3.403e+38 -infj, -3.403e+38 -infj,\n+ nan+3.333e-01j, 3.333e-01 +nanj, inf+1.100e+00j],\n+ [-3.403e+38 -infj, nan-0.000e+00j, 0.000e+00+0.000e+00j,\n+ -3.403e+38 -infj, -3.403e+38 -infj, -3.403e+38 -infj],\n+ [-0.000e+00+0.000e+00j, 0.000e+00 +nanj, -3.403e+38 -infj,\n+ 4.812e+16 +infj, -3.403e+38 -infj, -inf-1.401e-45j],\n+ [ -inf+0.000e+00j, inf+1.000e+07j, nan+1.100e+00j,\n+ 0.000e+00 +nanj, 0.000e+00-3.141e+15j, -inf+4.623e+16j]],\n+ shape=(5, 6), dtype=complex64)\n Attributes:\n- \u015f\u00f9\u017f\u00fd:\n- \u0104\u0170g\u00b2: \u00dc\u017c\u015d\u0168\u0145\n- \u016f: [ 12 -108]\n- \u0156\u017d\u0129\u017ds: \u00f3\u00bc\u0107\u00c5\u017e\n- \u00f6H: [['']]\n+ \u017b\u017d\u017e\u00e7\u017d: {'\u012a\u00db\u0125': True, 'y\u00c8er\u00dd': True, '\u0107U\u0120': array([\n+[ 'NaT...\n Another array API-compliant duck array library would replace the import, e.g.\n import cupy as cp instead.\n *\b**\b**\b**\b* T\bTe\bes\bst\bti\bin\bng\bg o\bov\bve\ber\br S\bSu\bub\bbs\bse\bet\bts\bs o\bof\bf D\bDi\bim\bme\ben\bns\bsi\bio\bon\bns\bs_\b?\b\u00b6 *\b**\b**\b**\b*\n A common task when testing xarray user code is checking that your function\n works for all valid input dimensions. We can chain strategies to achieve this,\n for which the helper strategy unique_subset_of() is useful.\n It works for lists of dimension names\n In [33]: dims = [\"x\", \"y\", \"z\"]\n \n In [34]: xrst.unique_subset_of(dims).example()\n-Out[34]: ['y', 'z', 'x']\n+Out[34]: ['z', 'y']\n \n In [35]: xrst.unique_subset_of(dims).example()\n-Out[35]: ['x']\n+Out[35]: ['y', 'x', 'z']\n as well as for mappings of dimension names to sizes\n In [36]: dim_sizes = {\"x\": 2, \"y\": 3, \"z\": 4}\n \n In [37]: xrst.unique_subset_of(dim_sizes).example()\n-Out[37]: {'x': 2, 'y': 3, 'z': 4}\n+Out[37]: {'y': 3}\n \n In [38]: xrst.unique_subset_of(dim_sizes).example()\n Out[38]: {'z': 4, 'y': 3}\n This is useful because operations like reductions can be performed over any\n subset of the xarray object\u2019s dimensions. For example we can write a pytest\n test that tests that a reduction gives the expected result when applying that\n reduction along any possible valid subset of the Variable\u2019s dimensions.\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/whats-new.html", "source2": "./usr/share/doc/python-xarray-doc/html/whats-new.html", "unified_diff": "@@ -7936,15 +7936,15 @@\n

  • New xray.Dataset.where method for masking xray objects according\n to some criteria. This works particularly well with multi-dimensional data:

    \n
    In [44]: ds = xray.Dataset(coords={"x": range(100), "y": range(100)})\n \n In [45]: ds["distance"] = np.sqrt(ds.x**2 + ds.y**2)\n \n In [46]: ds.distance.where(ds.distance < 100).plot()\n-Out[46]: <matplotlib.collections.QuadMesh at 0xe227b5b0>\n+Out[46]: <matplotlib.collections.QuadMesh at 0xdd515ea0>\n 
    \n
    \n \"_build/html/_static/where_example.png\"\n \n
  • \n
  • Added new methods xray.DataArray.diff and xray.Dataset.diff\n for finite difference calculations along a given axis.

  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5100,15 +5100,15 @@\n * New xray.Dataset.where method for masking xray objects according to some\n criteria. This works particularly well with multi-dimensional data:\n In [44]: ds = xray.Dataset(coords={\"x\": range(100), \"y\": range(100)})\n \n In [45]: ds[\"distance\"] = np.sqrt(ds.x**2 + ds.y**2)\n \n In [46]: ds.distance.where(ds.distance < 100).plot()\n- Out[46]: \n+ Out[46]: \n _\b[_\b__\bb_\bu_\bi_\bl_\bd_\b/_\bh_\bt_\bm_\bl_\b/_\b__\bs_\bt_\ba_\bt_\bi_\bc_\b/_\bw_\bh_\be_\br_\be_\b__\be_\bx_\ba_\bm_\bp_\bl_\be_\b._\bp_\bn_\bg_\b]\n * Added new methods xray.DataArray.diff and xray.Dataset.diff for finite\n difference calculations along a given axis.\n * New xray.DataArray.to_masked_array convenience method for returning a\n numpy.ma.MaskedArray.\n In [47]: da = xray.DataArray(np.random.random_sample(size=(5, 4)))\n \n"}]}]}]}]}]}