diff --git a/.gitignore b/.gitignore
index 293e79fe806..21c18c17ff7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,3 +75,7 @@ xarray/tests/data/*.grib.*.idx
Icon*
.ipynb_checkpoints
+doc/team-panel.txt
+doc/external-examples-gallery.txt
+doc/notebooks-examples-gallery.txt
+doc/videos-gallery.txt
diff --git a/ci/requirements/doc.yml b/ci/requirements/doc.yml
index 4c4f5fe3025..437c493c92c 100644
--- a/ci/requirements/doc.yml
+++ b/ci/requirements/doc.yml
@@ -32,7 +32,7 @@ dependencies:
- sphinx-autosummary-accessors
- sphinx-book-theme >= 0.0.38
- sphinx-copybutton
- - sphinx-panels
+ - sphinx-design
- sphinx!=4.4.0
- zarr>=2.4
- pip:
diff --git a/doc/_static/index_api.svg b/doc/_static/index_api.svg
new file mode 100644
index 00000000000..87013d24ce3
--- /dev/null
+++ b/doc/_static/index_api.svg
@@ -0,0 +1,97 @@
+
+
+
+
diff --git a/doc/_static/index_contribute.svg b/doc/_static/index_contribute.svg
new file mode 100644
index 00000000000..399f1d7630b
--- /dev/null
+++ b/doc/_static/index_contribute.svg
@@ -0,0 +1,76 @@
+
+
+
+
diff --git a/doc/_static/index_getting_started.svg b/doc/_static/index_getting_started.svg
new file mode 100644
index 00000000000..d1c7b08a2a1
--- /dev/null
+++ b/doc/_static/index_getting_started.svg
@@ -0,0 +1,66 @@
+
+
+
+
diff --git a/doc/_static/index_user_guide.svg b/doc/_static/index_user_guide.svg
new file mode 100644
index 00000000000..bff2482423d
--- /dev/null
+++ b/doc/_static/index_user_guide.svg
@@ -0,0 +1,67 @@
+
+
+
+
diff --git a/doc/_static/style.css b/doc/_static/style.css
index 833b11a83ab..3c21d7ac7c9 100644
--- a/doc/_static/style.css
+++ b/doc/_static/style.css
@@ -261,3 +261,13 @@ body {
.bd-toc .nav > .active > ul {
display: block;
}
+
+/* Main index page overview cards */
+
+.sd-card-img-top {
+ width: 33% !important;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 10px;
+}
diff --git a/doc/conf.py b/doc/conf.py
index 8ce9efdce88..7e28953bc7f 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -15,14 +15,21 @@
import datetime
import inspect
import os
+import pathlib
import subprocess
import sys
from contextlib import suppress
+from textwrap import dedent, indent
import sphinx_autosummary_accessors
+import yaml
+from sphinx.application import Sphinx
+from sphinx.util import logging
import xarray
+LOGGER = logging.getLogger("conf")
+
allowed_failures = set()
print("python exec:", sys.executable)
@@ -60,6 +67,8 @@
]
)
+nbsphinx_allow_errors = True
+
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
@@ -80,12 +89,13 @@
"nbsphinx",
"sphinx_autosummary_accessors",
"sphinx.ext.linkcode",
- "sphinx_panels",
"sphinxext.opengraph",
"sphinx_copybutton",
"sphinxext.rediraffe",
+ "sphinx_design",
]
+
extlinks = {
"issue": ("https://github.com/pydata/xarray/issues/%s", "GH"),
"pull": ("https://github.com/pydata/xarray/pull/%s", "PR"),
@@ -186,7 +196,7 @@
# General information about the project.
project = "xarray"
-copyright = "2014-%s, xarray Developers" % datetime.datetime.now().year
+copyright = f"2014-{datetime.datetime.now().year}, xarray Developers"
# The short X.Y version.
version = xarray.__version__.split("+")[0]
@@ -383,5 +393,109 @@ def html_page_context(app, pagename, templatename, context, doctree):
context["theme_use_edit_page_button"] = False
-def setup(app):
+def update_team(app: Sphinx):
+ """Update the team members list."""
+
+ LOGGER.info("Updating team members page...")
+
+ team = yaml.safe_load(pathlib.Path(app.srcdir, "team.yml").read_bytes())
+ items = []
+ for member in team:
+ item = f"""
+ .. grid-item-card::
+ :text-align: center
+ :link: https://github.com/{member['gh_login']}
+
+ .. image:: {member['avatar']}
+ :alt: {member['name']}
+ +++
+ {member['name']}
+ """
+ items.append(item)
+
+ items_md = indent(dedent("\n".join(items)), prefix=" ")
+
+ markdown = f"""
+.. grid:: 1 2 3 3
+ :gutter: 2
+
+ {items_md}
+ """
+
+ pathlib.Path(app.srcdir, "team-panel.txt").write_text(markdown)
+ LOGGER.info("Team members page updated.")
+
+
+def update_gallery(app: Sphinx):
+ """Update the gallery page."""
+
+ LOGGER.info("Updating gallery page...")
+
+ gallery = yaml.safe_load(pathlib.Path(app.srcdir, "gallery.yml").read_bytes())
+
+ for key in gallery:
+ items = [
+ f"""
+ .. grid-item-card::
+ :text-align: center
+ :link: {item['path']}
+
+ .. image:: {item['thumbnail']}
+ :alt: {item['title']}
+ +++
+ {item['title']}
+ """
+ for item in gallery[key]
+ ]
+
+ items_md = indent(dedent("\n".join(items)), prefix=" ")
+ markdown = f"""
+.. grid:: 1 2 2 2
+ :gutter: 2
+
+ {items_md}
+ """
+ pathlib.Path(app.srcdir, f"{key}-gallery.txt").write_text(markdown)
+ LOGGER.info(f"{key} gallery page updated.")
+ LOGGER.info("Gallery page updated.")
+
+
+def update_videos(app: Sphinx):
+ """Update the videos page."""
+
+ LOGGER.info("Updating videos page...")
+
+ videos = yaml.safe_load(pathlib.Path(app.srcdir, "videos.yml").read_bytes())
+
+ items = []
+ for video in videos:
+
+ authors = " | ".join(video["authors"])
+ item = f"""
+.. grid-item-card:: {" ".join(video["title"].split())}
+ :text-align: center
+
+ .. raw:: html
+
+ {video['src']}
+ +++
+ {authors}
+ """
+ items.append(item)
+
+ items_md = indent(dedent("\n".join(items)), prefix=" ")
+ markdown = f"""
+.. grid:: 1 2 2 2
+ :gutter: 2
+
+ {items_md}
+ """
+ pathlib.Path(app.srcdir, "videos-gallery.txt").write_text(markdown)
+ LOGGER.info("Videos page updated.")
+
+
+def setup(app: Sphinx):
app.connect("html-page-context", html_page_context)
+ app.connect("builder-inited", update_team)
+ app.connect("builder-inited", update_gallery)
+ app.connect("builder-inited", update_videos)
diff --git a/doc/gallery.rst b/doc/gallery.rst
index 22cf0c1c379..61ec45c7bda 100644
--- a/doc/gallery.rst
+++ b/doc/gallery.rst
@@ -10,75 +10,7 @@ Contributions are highly welcomed and appreciated. So, if you are interested in
Notebook Examples
-----------------
-.. panels::
- :column: text-center col-lg-6 col-md-6 col-sm-12 col-xs-12 p-2
- :card: +my-2
- :img-top-cls: w-75 m-auto p-2
- :body: d-none
-
- ---
- :img-top: _static/thumbnails/toy-weather-data.png
- ++++
- .. link-button:: examples/weather-data
- :type: ref
- :text: Toy weather data
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/monthly-means.png
- ++++
- .. link-button:: examples/monthly-means
- :type: ref
- :text: Calculating Seasonal Averages from Timeseries of Monthly Means
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/area_weighted_temperature.png
- ++++
- .. link-button:: examples/area_weighted_temperature
- :type: ref
- :text: Compare weighted and unweighted mean temperature
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/multidimensional-coords.png
- ++++
- .. link-button:: examples/multidimensional-coords
- :type: ref
- :text: Working with Multidimensional Coordinates
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/visualization_gallery.png
- ++++
- .. link-button:: examples/visualization_gallery
- :type: ref
- :text: Visualization Gallery
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/ROMS_ocean_model.png
- ++++
- .. link-button:: examples/ROMS_ocean_model
- :type: ref
- :text: ROMS Ocean Model Example
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/thumbnails/ERA5-GRIB-example.png
- ++++
- .. link-button:: examples/ERA5-GRIB-example
- :type: ref
- :text: GRIB Data Example
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/dataset-diagram-square-logo.png
- ++++
- .. link-button:: examples/apply_ufunc_vectorize_1d
- :type: ref
- :text: Applying unvectorized functions with apply_ufunc
- :classes: btn-outline-dark btn-block stretched-link
+.. include:: notebooks-examples-gallery.txt
.. toctree::
@@ -100,32 +32,4 @@ External Examples
-----------------
-.. panels::
- :column: text-center col-lg-6 col-md-6 col-sm-12 col-xs-12 p-2
- :card: +my-2
- :img-top-cls: w-75 m-auto p-2
- :body: d-none
-
- ---
- :img-top: _static/dataset-diagram-square-logo.png
- ++++
- .. link-button:: https://corteva.github.io/rioxarray/stable/examples/examples.html
- :type: url
- :text: Managing raster data with rioxarray
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: https://avatars.githubusercontent.com/u/60833341?s=200&v=4
- ++++
- .. link-button:: https://gallery.pangeo.io/
- :type: url
- :text: Xarray and dask on the cloud with Pangeo
- :classes: btn-outline-dark btn-block stretched-link
-
- ---
- :img-top: _static/dataset-diagram-square-logo.png
- ++++
- .. link-button:: https://examples.dask.org/xarray.html
- :type: url
- :text: Xarray with Dask Arrays
- :classes: btn-outline-dark btn-block stretched-link
+.. include:: external-examples-gallery.txt
diff --git a/doc/gallery.yml b/doc/gallery.yml
new file mode 100644
index 00000000000..1f122eac378
--- /dev/null
+++ b/doc/gallery.yml
@@ -0,0 +1,45 @@
+notebooks-examples:
+ - title: Toy weather data
+ path: examples/weather-data
+ thumbnail: _static/thumbnails/toy-weather-data.png
+
+ - title: Calculating Seasonal Averages from Timeseries of Monthly Means
+ path: examples/monthly-means
+ thumbnail: _static/thumbnails/monthly-means.png
+
+ - title: Compare weighted and unweighted mean temperature
+ path: examples/area_weighted_temperature
+ thumbnail: _static/thumbnails/area_weighted_temperature.png
+
+ - title: Working with Multidimensional Coordinates
+ path: examples/multidimensional-coords
+ thumbnail: _static/thumbnails/multidimensional-coords.png
+
+ - title: Visualization Gallery
+ path: examples/visualization_gallery
+ thumbnail: _static/thumbnails/visualization_gallery.png
+
+ - title: GRIB Data Example
+ path: examples/ERA5-GRIB-example
+ thumbnail: _static/thumbnails/ERA5-GRIB-example.png
+
+ - title: Applying unvectorized functions with apply_ufunc
+ path: examples/apply_ufunc_vectorize_1d
+ thumbnail: _static/dataset-diagram-square-logo.png
+
+external-examples:
+ - title: Managing raster data with rioxarray
+ path: https://corteva.github.io/rioxarray/stable/examples/examples.html
+ thumbnail: _static/dataset-diagram-square-logo.png
+
+ - title: Xarray and dask on the cloud with Pangeo
+ path: https://gallery.pangeo.io/
+ thumbnail: https://avatars.githubusercontent.com/u/60833341?s=200&v=4
+
+ - title: Xarray with Dask Arrays
+ path: https://examples.dask.org/xarray.html_
+ thumbnail: _static/dataset-diagram-square-logo.png
+
+ - title: Project Pythia Foundations Book
+ path: https://foundations.projectpythia.org/core/xarray.html
+ thumbnail: https://raw.githubusercontent.com/ProjectPythia/projectpythia.github.io/main/portal/_static/images/logos/pythia_logo-blue-btext-twocolor.svg
diff --git a/doc/index.rst b/doc/index.rst
index c549c33aa62..973f4c2c6d1 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -1,27 +1,56 @@
-xarray: N-D labeled arrays and datasets in Python
-=================================================
+Xarray documentation
+====================
-**xarray** (formerly **xray**) is an open source project and Python package
-that makes working with labelled multi-dimensional arrays simple,
+Xarray makes working with labelled multi-dimensional arrays in Python simple,
efficient, and fun!
-Xarray introduces labels in the form of dimensions, coordinates and
-attributes on top of raw NumPy_-like arrays, which allows for a more
-intuitive, more concise, and less error-prone developer experience.
-The package includes a large and growing library of domain-agnostic functions
-for advanced analytics and visualization with these data structures.
+**Useful links**:
+`Home `__ |
+`Code Repository `__ |
+`Issues `__ |
+`Discussions `__ |
+`Releases `__ |
+`Stack Overflow `__ |
+`Mailing List `__ |
+`Blog `__
-Xarray is inspired by and borrows heavily from pandas_, the popular data
-analysis package focused on labelled tabular data.
-It is particularly tailored to working with netCDF_ files, which were the
-source of xarray's data model, and integrates tightly with dask_ for parallel
-computing.
-.. _NumPy: https://www.numpy.org
-.. _pandas: https://pandas.pydata.org
-.. _dask: https://dask.org
-.. _netCDF: https://www.unidata.ucar.edu/software/netcdf
+.. grid:: 1 1 2 2
+ :gutter: 2
+ .. grid-item-card:: Getting started
+ :img-top: _static/index_getting_started.svg
+ :link: getting-started-guide/index
+ :link-type: doc
+
+ New to *xarray*? Check out the getting started guides. They contain an
+ introduction to *Xarray's* main concepts and links to additional tutorials.
+
+ .. grid-item-card:: User guide
+ :img-top: _static/index_user_guide.svg
+ :link: user-guide/index
+ :link-type: doc
+
+ The user guide provides in-depth information on the
+ key concepts of Xarray with useful background information and explanation.
+
+ .. grid-item-card:: API reference
+ :img-top: _static/index_api.svg
+ :link: api
+ :link-type: doc
+
+ The reference guide contains a detailed description of the Xarray API.
+ The reference describes how the methods work and which parameters can
+ be used. It assumes that you have an understanding of the key concepts.
+
+ .. grid-item-card:: Developer guide
+ :img-top: _static/index_contribute.svg
+ :link: contributing
+ :link-type: doc
+
+ Saw a typo in the documentation? Want to improve existing functionalities?
+ The contributing guidelines will guide you through the process of improving
+ Xarray.
.. toctree::
:maxdepth: 2
@@ -56,54 +85,3 @@ computing.
GitHub discussions
StackOverflow
-
-
-
-
-Get in touch
-------------
-
-- If you have a question like "How do I concatenate a list of datasets?", ask on `GitHub discussions`_ or `StackOverflow`_.
- Please include a self-contained reproducible example if possible.
-- Report bugs, suggest features or view the source code `on GitHub`_.
-- For less well defined questions or ideas, or to announce other projects of
- interest to xarray users, use `GitHub discussions`_ or the `mailing list`_.
-
-.. _StackOverFlow: https://stackoverflow.com/questions/tagged/python-xarray
-.. _Github discussions: https://github.com/pydata/xarray/discussions
-.. _mailing list: https://groups.google.com/forum/#!forum/xarray
-.. _on GitHub: https://github.com/pydata/xarray
-
-NumFOCUS
---------
-
-.. image:: _static/numfocus_logo.png
- :scale: 50 %
- :target: https://numfocus.org/
-
-Xarray is a fiscally sponsored project of NumFOCUS_, a nonprofit dedicated
-to supporting the open source scientific computing community. If you like
-Xarray and want to support our mission, please consider making a donation_
-to support our efforts.
-
-.. _donation: https://numfocus.salsalabs.org/donate-to-xarray/
-
-
-History
--------
-
-Xarray is an evolution of an internal tool developed at `The Climate
-Corporation`__. It was originally written by Climate Corp researchers Stephan
-Hoyer, Alex Kleeman and Eugene Brevdo and was released as open source in
-May 2014. The project was renamed from "xray" in January 2016. Xarray became a
-fiscally sponsored project of NumFOCUS_ in August 2018.
-
-__ https://climate.com/
-.. _NumFOCUS: https://numfocus.org
-
-License
--------
-
-Xarray is available under the open source `Apache License`__.
-
-__ https://www.apache.org/licenses/LICENSE-2.0.html
diff --git a/doc/team.rst b/doc/team.rst
index 937d16627c7..ce0cb33c6ba 100644
--- a/doc/team.rst
+++ b/doc/team.rst
@@ -8,84 +8,7 @@ Xarray core developers are responsible for the ongoing organizational maintenanc
The current core developers team comprises:
-.. panels::
- :column: col-lg-4 col-md-4 col-sm-6 col-xs-12 p-2
- :card: text-center
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/1217238?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/shoyer,"Stephan Hoyer",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/1197350?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/rabernat,"Ryan Abernathey",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/2443309?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/jhamman,"Joe Hamman",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/4160723?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/benbovy,"Benoit Bovy",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/10050469?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/fmaussion,"Fabien Maussion",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/6815844?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/fujiisoup,"Keisuke Fujii",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/5635139?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/max-sixty,"Maximilian Roos",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/2448579?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/dcherian,"Deepak Cherian",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/6628425?v=4
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/spencerkclark,"Spencer Clark",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/35968931?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/TomNicholas,"Tom Nicholas",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/6213168?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/crusaderky,"Guido Imperiale",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/14808389?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/keewis,"Justus Magin",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/10194086?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/mathause,"Mathias Hauser",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/13301940?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/andersy005,"Anderson Banihirwe",cls=btn badge-light`
-
- ---
- .. image:: https://avatars.githubusercontent.com/u/14371165?v=4
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- :link-badge:`https://github.com/Illviljan,"Jimmy Westling",cls=btn badge-light`
+.. include:: team-panel.txt
The full list of contributors is on our `GitHub Contributors Page `__.
diff --git a/doc/team.yml b/doc/team.yml
new file mode 100644
index 00000000000..56ccc457420
--- /dev/null
+++ b/doc/team.yml
@@ -0,0 +1,59 @@
+- name: Stephan Hoyer
+ gh_login: shoyer
+ avatar: https://avatars.githubusercontent.com/u/1217238?v=4
+
+- name: Joe Hamman
+ gh_login: jhamman
+ avatar: https://avatars.githubusercontent.com/u/2443309?v=4
+
+- name: Ryan Abernathey
+ gh_login: rabernat
+ avatar: https://avatars.githubusercontent.com/u/1197350?v=4
+
+- name: Benoit Bovy
+ gh_login: genbovy
+ avatar: https://avatars.githubusercontent.com/u/4160723?v=4
+
+- name: Fabien Maussion
+ gh_login: fmaussion
+ avatar: https://avatars.githubusercontent.com/u/10050469?v=4
+
+- name: Keisuke Fujii
+ gh_login: fujiisoup
+ avatar: https://avatars.githubusercontent.com/u/6815844?v=4
+
+- name: Maximilian Roos
+ gh_login: max-sixty
+ avatar: https://avatars.githubusercontent.com/u/5635139?v=4
+
+- name: Deepak Cherian
+ gh_login: dcherian
+ avatar: https://avatars.githubusercontent.com/u/2448579?v=4
+
+- name: Spencer Clark
+ gh_login: spencerkclark
+ avatar: https://avatars.githubusercontent.com/u/6628425?v=4
+
+- name: Tom Nicholas
+ gh_login: TomNicholas
+ avatar: https://avatars.githubusercontent.com/u/35968931?v=4
+
+- name: Guido Imperiale
+ gh_login: crusaderky
+ avatar: https://avatars.githubusercontent.com/u/6213168?v=4
+
+- name: Justus Magin
+ gh_login: keewis
+ avatar: https://avatars.githubusercontent.com/u/14808389?v=4
+
+- name: Mathias Hauser
+ gh_login: mathause
+ avatar: https://avatars.githubusercontent.com/u/10194086?v=4
+
+- name: Anderson Banihirwe
+ gh_login: andersy005
+ avatar: https://avatars.githubusercontent.com/u/13301940?v=4
+
+- name: Jimmy Westling
+ gh_login: Illviljan
+ avatar: https://avatars.githubusercontent.com/u/14371165?v=4
diff --git a/doc/tutorials-and-videos.rst b/doc/tutorials-and-videos.rst
index 37b8d1968eb..7a9e524340b 100644
--- a/doc/tutorials-and-videos.rst
+++ b/doc/tutorials-and-videos.rst
@@ -15,59 +15,8 @@ Tutorials
Videos
-------
-.. panels::
- :card: text-center
+.. include:: videos-gallery.txt
- ---
- Xdev Python Tutorial Seminar Series 2022 Thinking with Xarray : High-level computation patterns | Deepak Cherian
- ^^^
- .. raw:: html
-
-
-
- ---
- Xdev Python Tutorial Seminar Series 2021 seminar introducing xarray (2 of 2) | Anderson Banihirwe
- ^^^
- .. raw:: html
-
-
-
- ---
- Xdev Python Tutorial Seminar Series 2021 seminar introducing xarray (1 of 2) | Anderson Banihirwe
- ^^^
- .. raw:: html
-
-
-
- ---
- Xarray's virtual tutorial | October 2020 | Anderson Banihirwe, Deepak Cherian, and Martin Durant
- ^^^
- .. raw:: html
-
-
-
- ---
- Xarray's Tutorial presented at the 2020 SciPy Conference | Joe Hamman, Ryan Abernathey,
- Deepak Cherian, and Stephan Hoyer
- ^^^
- .. raw:: html
-
-
-
- ---
- Scipy 2015 talk introducing xarray to a general audience | Stephan Hoyer
- ^^^
- .. raw:: html
-
-
-
- ---
- 2015 Unidata Users Workshop talk and tutorial with (`with answers`_) introducing
- xarray to users familiar with netCDF | Stephan Hoyer
- ^^^
- .. raw:: html
-
-
Books, Chapters and Articles
-----------------------------
diff --git a/doc/videos.yml b/doc/videos.yml
new file mode 100644
index 00000000000..62c89563a56
--- /dev/null
+++ b/doc/videos.yml
@@ -0,0 +1,38 @@
+- title: "Xdev Python Tutorial Seminar Series 2022 Thinking with Xarray : High-level computation patterns"
+ src: ''
+ authors:
+ - Deepak Cherian
+- title: "Xdev Python Tutorial Seminar Series 2021 seminar introducing xarray (2 of 2)"
+ src: ''
+ authors:
+ - Anderson Banihirwe
+
+- title: "Xdev Python Tutorial Seminar Series 2021 seminar introducing xarray (1 of 2)"
+ src: ''
+ authors:
+ - Anderson Banihirwe
+
+- title: "Xarray's 2020 virtual tutorial"
+ src: ''
+ authors:
+ - Anderson Banihirwe
+ - Deepak Cherian
+ - Martin Durant
+
+- title: "Xarray's Tutorial presented at the 2020 SciPy Conference"
+ src: ' '
+ authors:
+ - Joe Hamman
+ - Deepak Cherian
+ - Ryan Abernathey
+ - Stephan Hoyer
+
+- title: "Scipy 2015 talk introducing xarray to a general audience"
+ src: ''
+ authors:
+ - Stephan Hoyer
+
+- title: " 2015 Unidata Users Workshop talk and tutorial with (`with answers`_) introducing xarray to users familiar with netCDF"
+ src: ''
+ authors:
+ - Stephan Hoyer