diff --git a/conf.py b/conf.py index e4345b137..bd057d1a0 100644 --- a/conf.py +++ b/conf.py @@ -30,12 +30,7 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = [ - 'myst_nb', - 'ablog', - 'sphinx_panels', - 'sphinx_comments', -] +extensions = ['myst_nb', 'ablog', 'sphinx_panels', 'sphinx_comments', 'sphinxext.rediraffe'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -60,6 +55,8 @@ 'google_analytics_id': 'G-B50ZRRN69X', } +rediraffe_redirects = 'redirects.txt' + # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -80,7 +77,7 @@ blog_title = 'NCAR ESDS' blog_path = 'blog' fontawesome_included = True -blog_post_pattern = 'posts/*' +blog_post_pattern = 'posts/*/*' post_redirect_refresh = 1 post_auto_image = 1 post_auto_excerpt = 2 diff --git a/environment.yml b/environment.yml index b60f0b442..9264e4187 100644 --- a/environment.yml +++ b/environment.yml @@ -27,5 +27,6 @@ dependencies: - sphinx-panels - sphinxcontrib-bibtex<2.0.0 - xarray>=0.18.2 + - sphinxext-rediraffe - pip: - sphinxext-opengraph diff --git a/posts/we-are-xdev.md b/posts/2019/we-are-xdev.md similarity index 100% rename from posts/we-are-xdev.md rename to posts/2019/we-are-xdev.md diff --git a/posts/Time.ipynb b/posts/2020/Time.ipynb similarity index 100% rename from posts/Time.ipynb rename to posts/2020/Time.ipynb diff --git a/posts/python-tutorial-faq-part-2.md b/posts/2020/python-tutorial-faq-part-2.md similarity index 100% rename from posts/python-tutorial-faq-part-2.md rename to posts/2020/python-tutorial-faq-part-2.md diff --git a/posts/python-tutorial-faq-part-3.md b/posts/2020/python-tutorial-faq-part-3.md similarity index 100% rename from posts/python-tutorial-faq-part-3.md rename to posts/2020/python-tutorial-faq-part-3.md diff --git a/posts/python-tutorial-faq.md b/posts/2020/python-tutorial-faq.md similarity index 100% rename from posts/python-tutorial-faq.md rename to posts/2020/python-tutorial-faq.md diff --git a/posts/templating-isnt-just-for-web-developers.md b/posts/2020/templating-isnt-just-for-web-developers.md similarity index 100% rename from posts/templating-isnt-just-for-web-developers.md rename to posts/2020/templating-isnt-just-for-web-developers.md diff --git a/posts/tutorial-seminar-series.md b/posts/2020/tutorial-seminar-series.md similarity index 100% rename from posts/tutorial-seminar-series.md rename to posts/2020/tutorial-seminar-series.md diff --git a/posts/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb b/posts/2020/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb similarity index 100% rename from posts/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb rename to posts/2020/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb diff --git a/posts/Interactive_Dashboard.md b/posts/2021/Interactive_Dashboard.md similarity index 100% rename from posts/Interactive_Dashboard.md rename to posts/2021/Interactive_Dashboard.md diff --git a/posts/cartopy-tutorial.md b/posts/2021/cartopy-tutorial.md similarity index 100% rename from posts/cartopy-tutorial.md rename to posts/2021/cartopy-tutorial.md diff --git a/posts/casper_pbs_dask.md b/posts/2021/casper_pbs_dask.md similarity index 100% rename from posts/casper_pbs_dask.md rename to posts/2021/casper_pbs_dask.md diff --git a/posts/cesm-datashader.ipynb b/posts/2021/cesm-datashader.ipynb similarity index 100% rename from posts/cesm-datashader.ipynb rename to posts/2021/cesm-datashader.ipynb diff --git a/posts/cesm-workshop-2021-diagnostics.md b/posts/2021/cesm-workshop-2021-diagnostics.md similarity index 100% rename from posts/cesm-workshop-2021-diagnostics.md rename to posts/2021/cesm-workshop-2021-diagnostics.md diff --git a/posts/dask-summit-takeaway.md b/posts/2021/dask-summit-takeaway.md similarity index 100% rename from posts/dask-summit-takeaway.md rename to posts/2021/dask-summit-takeaway.md diff --git a/posts/dask-tutorial-update.md b/posts/2021/dask-tutorial-update.md similarity index 100% rename from posts/dask-tutorial-update.md rename to posts/2021/dask-tutorial-update.md diff --git a/posts/dask-tutorial.md b/posts/2021/dask-tutorial.md similarity index 100% rename from posts/dask-tutorial.md rename to posts/2021/dask-tutorial.md diff --git a/posts/ecgtools-history-files-example.ipynb b/posts/2021/ecgtools-history-files-example.ipynb similarity index 100% rename from posts/ecgtools-history-files-example.ipynb rename to posts/2021/ecgtools-history-files-example.ipynb diff --git a/posts/esds-blog.md b/posts/2021/esds-blog.md similarity index 100% rename from posts/esds-blog.md rename to posts/2021/esds-blog.md diff --git a/posts/git-and-github-tutorial.md b/posts/2021/git-and-github-tutorial.md similarity index 100% rename from posts/git-and-github-tutorial.md rename to posts/2021/git-and-github-tutorial.md diff --git a/posts/graphviz_example.ipynb b/posts/2021/graphviz_example.ipynb similarity index 100% rename from posts/graphviz_example.ipynb rename to posts/2021/graphviz_example.ipynb diff --git a/posts/intake-cesm2-le-glade-example.ipynb b/posts/2021/intake-cesm2-le-glade-example.ipynb similarity index 99% rename from posts/intake-cesm2-le-glade-example.ipynb rename to posts/2021/intake-cesm2-le-glade-example.ipynb index f25fe0228..6937b46b5 100644 --- a/posts/intake-cesm2-le-glade-example.ipynb +++ b/posts/2021/intake-cesm2-le-glade-example.ipynb @@ -16,7 +16,7 @@ "\n", "Within the [intake-esm FAQ](https://intake-esm.readthedocs.io/en/latest/supplemental-guide/faq.html) section, there is a list of existing catalogs, as shown below:\n", "\n", - "![intake-esm catalogs](images/intake_esm_catalogs.png)\n", + "![intake-esm catalogs](../images/intake_esm_catalogs.png)\n", "\n", "At the top of the [\"Is there a list of existing catalogs\"](https://intake-esm.readthedocs.io/en/latest/supplemental-guide/faq.html) section, you can see the `CMIP6-GLADE` catalog, which includes:\n", "* Description of the catalog\n", diff --git a/posts/intake_cmip6_debug.md b/posts/2021/intake_cmip6_debug.md similarity index 100% rename from posts/intake_cmip6_debug.md rename to posts/2021/intake_cmip6_debug.md diff --git a/posts/intake_esm_dask.md b/posts/2021/intake_esm_dask.md similarity index 100% rename from posts/intake_esm_dask.md rename to posts/2021/intake_esm_dask.md diff --git a/posts/jupyter-notebooks-faq.md b/posts/2021/jupyter-notebooks-faq.md similarity index 100% rename from posts/jupyter-notebooks-faq.md rename to posts/2021/jupyter-notebooks-faq.md diff --git a/posts/map_blocks_example.md b/posts/2021/map_blocks_example.md similarity index 99% rename from posts/map_blocks_example.md rename to posts/2021/map_blocks_example.md index 50d9b616a..20f511824 100644 --- a/posts/map_blocks_example.md +++ b/posts/2021/map_blocks_example.md @@ -180,7 +180,7 @@ ylm = plt.ylim() plt.ylim(ylm[::-1]); ``` -![MLD example plot](images/mld_example_plot.png) +![MLD example plot](../images/mld_example_plot.png) ## Running this on the Entire Dataset diff --git a/posts/matplotlib-faq.md b/posts/2021/matplotlib-faq.md similarity index 100% rename from posts/matplotlib-faq.md rename to posts/2021/matplotlib-faq.md diff --git a/posts/matplotlib-tutorial.md b/posts/2021/matplotlib-tutorial.md similarity index 100% rename from posts/matplotlib-tutorial.md rename to posts/2021/matplotlib-tutorial.md diff --git a/posts/model_documentation_jupyterbook.ipynb b/posts/2021/model_documentation_jupyterbook.ipynb similarity index 99% rename from posts/model_documentation_jupyterbook.ipynb rename to posts/2021/model_documentation_jupyterbook.ipynb index 882e6df07..58378d27b 100644 --- a/posts/model_documentation_jupyterbook.ipynb +++ b/posts/2021/model_documentation_jupyterbook.ipynb @@ -15,7 +15,7 @@ "* [Finished website with content](https://mgrover1.github.io/cesm-test-data/)\n", "\n", "By the end of this post, we will cover how to build a webpage that looks like this\n", - "![CESM book page](images/cesm_book_page.png)" + "![CESM book page](../images/cesm_book_page.png)" ] }, { @@ -38,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "![screen_grab](images/github_screen_grab.png)" + "![screen_grab](../images/github_screen_grab.png)" ] }, { @@ -50,7 +50,7 @@ "\n", "### Copy the link from Github\n", "Copy the link from Github by clicking on the green \"Code\" button\n", - "![Github Clone Link](images/github_clone_link.png)" + "![Github Clone Link](../images/github_clone_link.png)" ] }, { diff --git a/posts/multiple_index_xarray_xoak.md b/posts/2021/multiple_index_xarray_xoak.md similarity index 100% rename from posts/multiple_index_xarray_xoak.md rename to posts/2021/multiple_index_xarray_xoak.md diff --git a/posts/ncar-jobqueue-example.md b/posts/2021/ncar-jobqueue-example.md similarity index 100% rename from posts/ncar-jobqueue-example.md rename to posts/2021/ncar-jobqueue-example.md diff --git a/posts/numpy-faq.md b/posts/2021/numpy-faq.md similarity index 100% rename from posts/numpy-faq.md rename to posts/2021/numpy-faq.md diff --git a/posts/numpy-tutorial.md b/posts/2021/numpy-tutorial.md similarity index 100% rename from posts/numpy-tutorial.md rename to posts/2021/numpy-tutorial.md diff --git a/posts/object-oriented-programming-tutorial.md b/posts/2021/object-oriented-programming-tutorial.md similarity index 100% rename from posts/object-oriented-programming-tutorial.md rename to posts/2021/object-oriented-programming-tutorial.md diff --git a/posts/paired_programming_vs.md b/posts/2021/paired_programming_vs.md similarity index 100% rename from posts/paired_programming_vs.md rename to posts/2021/paired_programming_vs.md diff --git a/posts/pandas-tutorial.md b/posts/2021/pandas-tutorial.md similarity index 100% rename from posts/pandas-tutorial.md rename to posts/2021/pandas-tutorial.md diff --git a/posts/project-pythia-overview.md b/posts/2021/project-pythia-overview.md similarity index 93% rename from posts/project-pythia-overview.md rename to posts/2021/project-pythia-overview.md index 903b77332..f6387645c 100644 --- a/posts/project-pythia-overview.md +++ b/posts/2021/project-pythia-overview.md @@ -20,7 +20,7 @@ Last month, the [Project Pythia Team](https://projectpythia.org/index.html#the-p The main landing page for Project Pythia is known as the ["Pythia Portal"](https://projectpythia.org/index.html#). -![Pythia Portal](images/pythia_portal.png) +![Pythia Portal](../images/pythia_portal.png) The main page provides an overview of the project, including the motivation and a summary of what the goals of this project are. What you will see on the Portal is described below. @@ -34,11 +34,11 @@ The [Foundations Book](https://foundations.projectpythia.org/landing-page.html) Clicking on the link on the Pythia Portal will take you to the JupyterBook containing the instructional material - this can also be accessed using [foundations.projectpythia.org](https://foundations.projectpythia.org/landing-page.html). -![foundations link](images/pythia_foundations_link.png) +![foundations link](../images/pythia_foundations_link.png) Once within the [Foundations Book](https://foundations.projectpythia.org/landing-page.html), you will see the typical [Jupyterbook](https://jupyterbook.org/intro.html) interface with a few primary sections. -![foundations sections](images/foundations_diagram.png) +![foundations sections](../images/foundations_diagram.png) Each notebook is its own "page", separated into sections outlined in the table of contents which can be found along the left sidebar. On the right side of the page is the table of contents for a single notebook, which is determined using the header information in each notebook. This can be useful when wanting to navigate to specific section of a notebook. @@ -46,7 +46,7 @@ These notebooks are executable - which is what makes this [Jupyterbook](https:// If you would like to download a local copy of the notebook, select the download button in the top right corner, and select whether to download as a `PDF` or `ipynb` (notebook). -![pandas example](images/pythia_pandas.png) +![pandas example](../images/pythia_pandas.png) Within the foundational content notebooks, you will find that each notebook follows the same format, including the following sections: @@ -63,14 +63,14 @@ Within the foundational content notebooks, you will find that each notebook foll The [Resource Gallery](https://projectpythia.org/gallery.html) includes links to a variety of external (to Project Pythia) material that is useful to the Geoscience community! This is a great place to go if you are looking for additional training or reference materials or more specific examples or galleries. -![pandas example](images/pythia_resource_gallery.png) +![pandas example](../images/pythia_resource_gallery.png) If you continue scrolling down the page, you will find various ways to engage with the project, including via [Github Discussions](https://github.com/ProjectPythia/projectpythia.github.io/discussions) or by checking to the resource gallery or foundations book, using the [contributor's guide](https://projectpythia.org/contributing.html) as a reference. -![Pythia Portal](images/pythia_contribute.png) +![Pythia Portal](../images/pythia_contribute.png) If you are interested in being involved with this project, I encourage you to check out our weekly meetings, separated by working groups, which include an Education Working Group, and an Infrastructure Working Group. -![Pythia Calendar](images/pythia_calendar.png) +![Pythia Calendar](../images/pythia_calendar.png) We look forward to continuing to make progress on this project, and gather input from the community on how to improve our content, and entrain other contributors. diff --git a/posts/python-tutorial-seminar-series-spring-2021.md b/posts/2021/python-tutorial-seminar-series-spring-2021.md similarity index 100% rename from posts/python-tutorial-seminar-series-spring-2021.md rename to posts/2021/python-tutorial-seminar-series-spring-2021.md diff --git a/posts/scaling-with-dask-class-takeaways.md b/posts/2021/scaling-with-dask-class-takeaways.md similarity index 98% rename from posts/scaling-with-dask-class-takeaways.md rename to posts/2021/scaling-with-dask-class-takeaways.md index 88061014b..442a5abcf 100644 --- a/posts/scaling-with-dask-class-takeaways.md +++ b/posts/2021/scaling-with-dask-class-takeaways.md @@ -67,7 +67,7 @@ client = Client(cluster) Once the `Cluster` and `Client` are setup, you can view the dashboard for your setup. This can be accessed by clicking the link next to `Dashboard` as shown below -![NCARCluster view](images/ncar_cluster.png) +![NCARCluster view](../images/ncar_cluster.png) There are a few default graphs you can look at, including the two main @@ -85,7 +85,7 @@ This dashboard shows a comparison between compute vs. transfer, which can be hel An "idealized" case is shown below where most of the time is spent computing -![example aggregate time per action](images/agg_time_per_action.png) +![example aggregate time per action](../images/agg_time_per_action.png) ## Introduction to Distributed Computing diff --git a/posts/scipy-2021-takeaways.md b/posts/2021/scipy-2021-takeaways.md similarity index 100% rename from posts/scipy-2021-takeaways.md rename to posts/2021/scipy-2021-takeaways.md diff --git a/posts/software-citation.md b/posts/2021/software-citation.md similarity index 100% rename from posts/software-citation.md rename to posts/2021/software-citation.md diff --git a/posts/xarray-tutorial.md b/posts/2021/xarray-tutorial.md similarity index 100% rename from posts/xarray-tutorial.md rename to posts/2021/xarray-tutorial.md diff --git a/posts/your-first-package-python-tutorial-faq.md b/posts/2021/your-first-package-python-tutorial-faq.md similarity index 100% rename from posts/your-first-package-python-tutorial-faq.md rename to posts/2021/your-first-package-python-tutorial-faq.md diff --git a/redirects.txt b/redirects.txt new file mode 100644 index 000000000..b5dac5072 --- /dev/null +++ b/redirects.txt @@ -0,0 +1,42 @@ +'posts/we-are-xdev.md' 'posts/2019/we-are-xdev.md' +'posts/Time.ipynb' 'posts/2020/Time.ipynb' +'posts/python-tutorial-faq-part-2.md' 'posts/2020/python-tutorial-faq-part-2.md' +'posts/python-tutorial-faq-part-3.md' 'posts/2020/python-tutorial-faq-part-3.md' +'posts/python-tutorial-faq.md' 'posts/2020/python-tutorial-faq.md' +'posts/templating-isnt-just-for-web-developers.md' 'posts/2020/templating-isnt-just-for-web-developers.md' +'posts/tutorial-seminar-series.md' 'posts/2020/tutorial-seminar-series.md' +'posts/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb' 'posts/2020/writing-multiple-netcdf-files-in-parallel-with-xarray-and-dask.ipynb' +'posts/Interactive_Dashboard.md' 'posts/2021/Interactive_Dashboard.md' +'posts/cartopy-tutorial.md' 'posts/2021/cartopy-tutorial.md' +'posts/casper_pbs_dask.md' 'posts/2021/casper_pbs_dask.md' +'posts/cesm-workshop-2021-diagnostics.md' 'posts/2021/cesm-workshop-2021-diagnostics.md' +'posts/dask-summit-takeaway.md' 'posts/2021/dask-summit-takeaway.md' +'posts/dask-tutorial-update.md' 'posts/2021/dask-tutorial-update.md' +'posts/dask-tutorial.md' 'posts/2021/dask-tutorial.md' +'posts/ecgtools-history-files-example.ipynb' 'posts/2021/ecgtools-history-files-example.ipynb' +'posts/esds-blog.md' 'posts/2021/esds-blog.md' +'posts/git-and-github-tutorial.md' 'posts/2021/git-and-github-tutorial.md' +'posts/graphviz_example.ipynb' 'posts/2021/graphviz_example.ipynb' +'posts/intake-cesm2-le-glade-example.ipynb' 'posts/2021/intake-cesm2-le-glade-example.ipynb' +'posts/intake_cmip6_debug.md' 'posts/2021/intake_cmip6_debug.md' +'posts/intake_esm_dask.md' 'posts/2021/intake_esm_dask.md' +'posts/jupyter-notebooks-faq.md' 'posts/2021/jupyter-notebooks-faq.md' +'posts/map_blocks_example.md' 'posts/2021/map_blocks_example.md' +'posts/matplotlib-faq.md' 'posts/2021/matplotlib-faq.md' +'posts/matplotlib-tutorial.md' 'posts/2021/matplotlib-tutorial.md' +'posts/model_documentation_jupyterbook.ipynb' 'posts/2021/model_documentation_jupyterbook.ipynb' +'posts/multiple_index_xarray_xoak.md' 'posts/2021/multiple_index_xarray_xoak.md' +'posts/ncar-jobqueue-example.md' 'posts/2021/ncar-jobqueue-example.md' +'posts/numpy-faq.md' 'posts/2021/numpy-faq.md' +'posts/numpy-tutorial.md' 'posts/2021/numpy-tutorial.md' +'posts/object-oriented-programming-tutorial.md' 'posts/2021/object-oriented-programming-tutorial.md' +'posts/paired_programming_vs.md' 'posts/2021/paired_programming_vs.md' +'posts/pandas-tutorial.md' 'posts/2021/pandas-tutorial.md' +'posts/project-pythia-overview.md' 'posts/2021/project-pythia-overview.md' +'posts/python-tutorial-seminar-series-spring-2021.md' 'posts/2021/python-tutorial-seminar-series-spring-2021.md' +'posts/scaling-with-dask-class-takeaways.md' 'posts/2021/scaling-with-dask-class-takeaways.md' +'posts/scipy-2021-takeaways.md' 'posts/2021/scipy-2021-takeaways.md' +'posts/software-citation.md' 'posts/2021/software-citation.md' +'posts/xarray-tutorial.md' 'posts/2021/xarray-tutorial.md' +'posts/your-first-package-python-tutorial-faq.md' 'posts/2021/your-first-package-python-tutorial-faq.md' +'posts/cesm-datashader.md' 'posts/2021/cesm-datashader.md'