diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml new file mode 100644 index 0000000..a2dcb76 --- /dev/null +++ b/.github/workflows/deploy-book.yml @@ -0,0 +1,57 @@ +# https://jupyterbook.org/en/stable/publish/gh-pages.html#automatically-host-your-book-with-github-actions +name: deploy-book + +# Only run this when the main branch changes +on: + # Uncomment the 'pull_request' line below to manually re-build Jupyter Book + # pull_request: + push: + branches: + - main + # If your git repository has the Jupyter Book within some-subfolder next to + # unrelated files, you can make this run only if a file within that specific + # folder has been modified. + paths: + - '.github/workflows/deploy-book.yml' + - 'book/**' + +# This job installs dependencies, builds the book, and pushes it to `gh-pages` +jobs: + deploy-book: + runs-on: ubuntu-latest + permissions: + contents: write + pages: write + id-token: write + defaults: + run: + shell: bash -l {0} + + steps: + # Checkout current git repository + - name: Checkout + uses: actions/checkout@v4.1.7 + + # Install Mambaforge with conda-forge dependencies + - name: Setup Mambaforge + uses: mamba-org/setup-micromamba@v1.9.0 + with: + environment-name: agu24workshop + environment-file: conda-lock.yml + create-args: >- + python=${{ matrix.python-version }} + condarc: | + channels: + - conda-forge + - nodefaults + + # Build the book + - name: Build the book + run: jupyter-book build book/ + + # Push the book's HTML to github-pages + - name: GitHub Pages action + uses: peaceiris/actions-gh-pages@v4.0.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: book/_build/html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b833d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Jupyter Book +/book/_build/ + +# Jupyter Notebook +.ipynb_checkpoints/ diff --git a/README.md b/README.md index 1bbbad5..bfdee19 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # AGU24 workshop: Mastering Geospatial Visualizations with GMT/PyGMT +[![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://www.generic-mapping-tools.org/agu24workshop) +[![deploy-book](https://github.com/GenericMappingTools/agu24workshop/actions/workflows/deploy-book.yml/badge.svg)](https://github.com/GenericMappingTools/agu24workshop/actions/workflows/deploy-book.yml) + Material for the [GMT](https://www.generic-mapping-tools.org)/[PyGMT](https://www.pygmt.org) pre-conference workshop at the diff --git a/book/_config.yml b/book/_config.yml new file mode 100644 index 0000000..1615334 --- /dev/null +++ b/book/_config.yml @@ -0,0 +1,47 @@ +# Book settings +# Learn more at https://jupyterbook.org/customize/config.html + +title: Mastering Geospatial Visualizations with GMT/PyGMT +author: The GMT and PyGMT Teams +logo: logo.webp + +# Force re-execution of notebooks on each build. +# See https://jupyterbook.org/content/execute.html +execute: + execute_notebooks: force + +# Define the name of the latex output file for PDF builds +latex: + latex_documents: + targetname: agu24workshop.tex + +# Add a bibtex file so that we can create citations +bibtex_bibfiles: + - references.bib + +# Launch button settings +launch_buttons: + notebook_interface: jupyterlab + binderhub_url: https://mybinder.org + +# Information about where the book exists on the web +repository: + url: https://github.com/GenericMappingTools/agu24workshop # Online location of your book + path_to_book: book # Optional path to your book, relative to the repository root + branch: main # Which branch of the repository should be used when creating links (optional) + +# Add GitHub buttons to your book +# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository +html: + use_edit_page_button: true + use_issues_button: true + use_repository_button: true + extra_footer: | + Creative Commons License
+ This content is licensed under a + Creative Commons Attribution 4.0 International License. + +sphinx: + config: + bibtex_reference_style: author_year + html_show_copyright: false diff --git a/book/_toc.yml b/book/_toc.yml new file mode 100644 index 0000000..51e9a58 --- /dev/null +++ b/book/_toc.yml @@ -0,0 +1,15 @@ +# Table of contents +# Learn more at https://jupyterbook.org/customize/toc.html + +format: jb-book +root: intro +parts: +- caption: Details + chapters: + - title: AGU24 Homepage + url: https://www.agu.org/annual-meeting +- caption: Tutorials + chapters: + - file: markdown + - file: notebooks + - file: markdown-notebooks diff --git a/book/intro.md b/book/intro.md new file mode 100644 index 0000000..f8cdc73 --- /dev/null +++ b/book/intro.md @@ -0,0 +1,11 @@ +# Welcome to your Jupyter Book + +This is a small sample book to give you a feel for how book content is +structured. +It shows off a few of the major file types, as well as some sample content. +It does not go in-depth into any particular topic - check out [the Jupyter Book documentation](https://jupyterbook.org) for more information. + +Check out the content pages bundled with this sample book to see more. + +```{tableofcontents} +``` diff --git a/book/logo.webp b/book/logo.webp new file mode 100644 index 0000000..4e457f7 Binary files /dev/null and b/book/logo.webp differ diff --git a/book/markdown-notebooks.md b/book/markdown-notebooks.md new file mode 100644 index 0000000..a057a32 --- /dev/null +++ b/book/markdown-notebooks.md @@ -0,0 +1,53 @@ +--- +jupytext: + formats: md:myst + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.11.5 +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# Notebooks with MyST Markdown + +Jupyter Book also lets you write text-based notebooks using MyST Markdown. +See [the Notebooks with MyST Markdown documentation](https://jupyterbook.org/file-types/myst-notebooks.html) for more detailed instructions. +This page shows off a notebook written in MyST Markdown. + +## An example cell + +With MyST Markdown, you can define code cells with a directive like so: + +```{code-cell} +print(2 + 2) +``` + +When your book is built, the contents of any `{code-cell}` blocks will be +executed with your default Jupyter kernel, and their outputs will be displayed +in-line with the rest of your content. + +```{seealso} +Jupyter Book uses [Jupytext](https://jupytext.readthedocs.io/en/latest/) to convert text-based files to notebooks, and can support [many other text-based notebook files](https://jupyterbook.org/file-types/jupytext.html). +``` + +## Create a notebook with MyST Markdown + +MyST Markdown notebooks are defined by two things: + +1. YAML metadata that is needed to understand if / how it should convert text files to notebooks (including information about the kernel needed). + See the YAML at the top of this page for example. +2. The presence of `{code-cell}` directives, which will be executed with your book. + +That's all that is needed to get started! + +## Quickly add YAML metadata for MyST Notebooks + +If you have a markdown file and you'd like to quickly add YAML metadata to it, so that Jupyter Book will treat it as a MyST Markdown Notebook, run the following command: + +``` +jupyter-book myst init path/to/markdownfile.md +``` diff --git a/book/markdown.md b/book/markdown.md new file mode 100644 index 0000000..72018e9 --- /dev/null +++ b/book/markdown.md @@ -0,0 +1,55 @@ +# Markdown Files + +Whether you write your book's content in Jupyter Notebooks (`.ipynb`) or +in regular markdown files (`.md`), you'll write in the same flavor of markdown +called **MyST Markdown**. +This is a simple file to help you get started and show off some syntax. + +## What is MyST? + +MyST stands for "Markedly Structured Text". It +is a slight variation on a flavor of markdown called "CommonMark" markdown, +with small syntax extensions to allow you to write **roles** and **directives** +in the Sphinx ecosystem. + +For more about MyST, see [the MyST Markdown Overview](https://jupyterbook.org/content/myst.html). + +## Sample Roles and Directives + +Roles and directives are two of the most powerful tools in Jupyter Book. They +are like functions, but written in a markup language. They both +serve a similar purpose, but **roles are written in one line**, whereas +**directives span many lines**. They both accept different kinds of inputs, +and what they do with those inputs depends on the specific role or directive +that is being called. + +Here is a "note" directive: + +```{note} +Here is a note +``` + +It will be rendered in a special box when you build your book. + +Here is an inline directive to refer to a document: {doc}`markdown-notebooks`. + + +## Citations + +You can also cite references that are stored in a `bibtex` file. For example, +the following syntax: `` {cite}`WesselGenericMappingTools2019` `` will render like +this: {cite}`WesselGenericMappingTools2019`. + +Moreover, you can insert a bibliography into your page with this syntax: +The `{bibliography}` directive must be used for all the `{cite}` roles to +render properly. +For example, if the references for your book are stored in `references.bib`, +then the bibliography is inserted with: + +```{bibliography} +``` + +## Learn more + +This is just a simple starter to get you started. +You can learn a lot more at [jupyterbook.org](https://jupyterbook.org). diff --git a/book/notebooks.ipynb b/book/notebooks.ipynb new file mode 100644 index 0000000..fdb7176 --- /dev/null +++ b/book/notebooks.ipynb @@ -0,0 +1,122 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Content with notebooks\n", + "\n", + "You can also create content with Jupyter Notebooks. This means that you can include\n", + "code blocks and their outputs in your book.\n", + "\n", + "## Markdown + notebooks\n", + "\n", + "As it is markdown, you can embed images, HTML, etc into your posts!\n", + "\n", + "![](https://myst-parser.readthedocs.io/en/latest/_static/logo-wide.svg)\n", + "\n", + "You can also $add_{math}$ and\n", + "\n", + "$$\n", + "math^{blocks}\n", + "$$\n", + "\n", + "or\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "\\mbox{mean} la_{tex} \\\\ \\\\\n", + "math blocks\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "But make sure you \\$Escape \\$your \\$dollar signs \\$you want to keep!\n", + "\n", + "## MyST markdown\n", + "\n", + "MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check\n", + "out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html),\n", + "or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/).\n", + "\n", + "## Code blocks and outputs\n", + "\n", + "Jupyter Book will also embed your code blocks and output in your book.\n", + "For example, here's some sample Matplotlib code:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib import rcParams, cycler\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "plt.ion()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Fixing random state for reproducibility\n", + "np.random.seed(19680801)\n", + "\n", + "N = 10\n", + "data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]\n", + "data = np.array(data).T\n", + "cmap = plt.cm.coolwarm\n", + "rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))\n", + "\n", + "\n", + "from matplotlib.lines import Line2D\n", + "custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),\n", + " Line2D([0], [0], color=cmap(.5), lw=4),\n", + " Line2D([0], [0], color=cmap(1.), lw=4)]\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 5))\n", + "lines = ax.plot(data)\n", + "ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a lot more that you can do with outputs (such as including interactive outputs)\n", + "with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/references.bib b/book/references.bib new file mode 100644 index 0000000..3c8b43e --- /dev/null +++ b/book/references.bib @@ -0,0 +1,17 @@ +--- +--- + +@article{WesselGenericMappingTools2019, + title = {The {{Generic Mapping Tools Version}} 6}, + author = {Wessel, P. and Luis, J. and Uieda, L. and Scharroo, R. and Wobbe, F. and Smith, W.H.F. and Tian, D.}, + year = {2019}, + month = sep, + journal = {Geochemistry, Geophysics, Geosystems}, + volume = {20}, + number = {11}, + pages = {5556--5564}, + issn = {1525-2027, 1525-2027}, + doi = {10.1029/2019GC008515}, + langid = {english}, + keywords = {template} +} diff --git a/conda-lock.yml b/conda-lock.yml index 131829d..15eb2e8 100644 --- a/conda-lock.yml +++ b/conda-lock.yml @@ -13,7 +13,7 @@ version: 1 metadata: content_hash: - linux-64: ee492e7be91d9f4495e3832d297b799cecaf1059f6c692038b9510064a89e90c + linux-64: d408b6889af00f244c260afe045eec67484ac93f7980726dc3654b2bc58fd957 channels: - url: conda-forge used_env_vars: [] @@ -46,6 +46,31 @@ package: sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 category: main optional: false +- name: accessible-pygments + version: 0.0.5 + manager: conda + platform: linux-64 + dependencies: + pygments: '' + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda + hash: + md5: 1bb1ef9806a9a20872434f58b3e7fc1a + sha256: 712c1875bcd32674e8ce2f418f0b2875ecb98e6bcbb21ec7502dae8ff4b0f73c + category: main + optional: false +- name: alabaster + version: 0.7.16 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + hash: + md5: def531a3ac77b7fb8c21d17bb5d0badb + sha256: fd39ad2fabec1569bbb0dfdae34ab6ce7de6ec09dcec8638f83dad0373594069 + category: main + optional: false - name: anyio version: 4.5.0 manager: conda @@ -711,6 +736,31 @@ package: sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9 category: main optional: false +- name: click + version: 8.1.7 + manager: conda + platform: linux-64 + dependencies: + __unix: '' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + hash: + md5: f3ad426304898027fc619827ff428eca + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + category: main + optional: false +- name: colorama + version: 0.4.6 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 3faab06a954c2a04039983f2c4a50d99 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + category: main + optional: false - name: comm version: 0.2.2 manager: conda @@ -823,6 +873,19 @@ package: sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be category: main optional: false +- name: docutils + version: 0.20.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py312h7900ff3_3.conda + hash: + md5: 1b90835ae26b9b8250b302649359a989 + sha256: b9fb75d806afc53d9d7b98edb0c45ac38a3cc983916b8dac4ad7ddac5c18a024 + category: main + optional: false - name: entrypoints version: '0.4' manager: conda @@ -1209,6 +1272,22 @@ package: sha256: 04e8bbd4956d6b354326a92518eca9e9415b10ce23cd370513508bd8dd12f750 category: main optional: false +- name: greenlet + version: 3.1.0 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc: '>=13' + libstdcxx: '>=13' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.1.0-py312h2ec8cdc_2.conda + hash: + md5: 8ca26bbb0260f5e88616daee2f762f00 + sha256: 5bcdb8f092b0aa8139df5868581d9782258a142fcc30cd94aacd0c330b1f7038 + category: main + optional: false - name: gshhg-gmt version: 2.3.7 manager: conda @@ -1365,6 +1444,18 @@ package: sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 category: main optional: false +- name: imagesize + version: 1.4.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.4' + url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 7de5386c8fea29e76b303f37dde4c352 + sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 + category: main + optional: false - name: importlib-metadata version: 8.5.0 manager: conda @@ -1594,6 +1685,57 @@ package: sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 category: main optional: false +- name: jupyter-book + version: 1.0.2 + manager: conda + platform: linux-64 + dependencies: + click: '>=7.1,<9' + importlib-metadata: '>=4.8.3' + jinja2: '' + jsonschema: <5 + linkify-it-py: '>=2,<3' + myst-nb: '>=1,<3' + myst-parser: '>=1,<3' + python: '>=3.9' + pyyaml: '' + sphinx: '>=5,<8' + sphinx-book-theme: '>=1.1.0,<2' + sphinx-comments: '' + sphinx-copybutton: '' + sphinx-design: '>=0.5,<1' + sphinx-external-toc: '>=1.0.1,<2' + sphinx-jupyterbook-latex: '>=1,<2' + sphinx-multitoc-numbering: '>=0.1.3,<1' + sphinx-thebe: '>=0.3,<1' + sphinx-togglebutton: '' + sphinxcontrib-bibtex: '>=2.5.0,<3' + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-book-1.0.2-pyhd8ed1ab_0.conda + hash: + md5: e4a36396e4705c2d845ae07d34b16a1d + sha256: eb699f63791b989fb1ae8113643096253906483dc0672b4c7077c779ddeef9a8 + category: main + optional: false +- name: jupyter-cache + version: 1.0.0 + manager: conda + platform: linux-64 + dependencies: + attrs: '' + click: '' + importlib-metadata: '' + nbclient: '>=0.2' + nbformat: '' + python: '>=3.9' + pyyaml: '' + sqlalchemy: '>=1.3.12,<3' + tabulate: '' + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-cache-1.0.0-pyhd8ed1ab_0.conda + hash: + md5: b667cf7b57baa559f628d374f017fa32 + sha256: 16dd4d3601d0532bbe755267486d62f7c77e099d0f0517e20ef635f836425d57 + category: main + optional: false - name: jupyter-lsp version: 2.2.5 manager: conda @@ -1823,6 +1965,19 @@ package: sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 category: main optional: false +- name: latexcodec + version: 2.0.1 + manager: conda + platform: linux-64 + dependencies: + python: '' + six: '' + url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 8d67904973263afd2985ba56aa2d6bb4 + sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f + category: main + optional: false - name: lcms2 version: '2.16' manager: conda @@ -2895,6 +3050,19 @@ package: sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d category: main optional: false +- name: linkify-it-py + version: 2.0.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + uc-micro-py: '' + url: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda + hash: + md5: f1b64ca4faf563605cf6f6ca93f9ff3f + sha256: aa99d44e8c83865026575a8af253141c53e0b3ab05f053befaa7757c8525064f + category: main + optional: false - name: lz4-c version: 1.9.4 manager: conda @@ -2937,6 +3105,19 @@ package: sha256: e24778b8e965ae188ef268c52f4b55e340b6a194db57481f640f7d2b0a6e57a2 category: main optional: false +- name: markdown-it-py + version: 3.0.0 + manager: conda + platform: linux-64 + dependencies: + mdurl: '>=0.1,<1' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + hash: + md5: 93a8e71256479c62074356ef6ebf501b + sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 + category: main + optional: false - name: markupsafe version: 2.1.5 manager: conda @@ -2994,6 +3175,31 @@ package: sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab category: main optional: false +- name: mdit-py-plugins + version: 0.4.2 + manager: conda + platform: linux-64 + dependencies: + markdown-it-py: '>=1.0.0,<4.0.0' + python: '>=3.8' + url: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_0.conda + hash: + md5: 5387f2cfa28f8a3afa3368bb4ba201e8 + sha256: 5cedc99412278b37e9596f1f991d49f5a1663fe79767cf814a288134a1400ba9 + category: main + optional: false +- name: mdurl + version: 0.1.2 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + hash: + md5: 776a8dd9e824f77abac30e6ef43a8f7a + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + category: main + optional: false - name: minizip version: 4.0.7 manager: conda @@ -3037,6 +3243,46 @@ package: sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306 category: main optional: false +- name: myst-nb + version: 1.1.1 + manager: conda + platform: linux-64 + dependencies: + importlib-metadata: '' + ipykernel: '' + ipython: '' + jupyter-cache: '>=0.5' + myst-parser: '>=1.0.0' + nbclient: '' + nbformat: '>=5.0' + python: '>=3.9' + pyyaml: '' + sphinx: '>=5' + typing_extensions: '' + url: https://conda.anaconda.org/conda-forge/noarch/myst-nb-1.1.1-pyhd8ed1ab_0.conda + hash: + md5: b64c4473b48dd13ac9af794121488fa4 + sha256: 9af9e6d66260064f2d47453df53174c0060bd30a967e38f8299cf770537b8929 + category: main + optional: false +- name: myst-parser + version: 2.0.0 + manager: conda + platform: linux-64 + dependencies: + docutils: '>=0.16,<0.21' + jinja2: '' + markdown-it-py: '>=3.0.0,<4.0.0' + mdit-py-plugins: '>=0.4,<1' + python: '>=3.8' + pyyaml: '' + sphinx: '>=6,<8' + url: https://conda.anaconda.org/conda-forge/noarch/myst-parser-2.0.0-pyhd8ed1ab_0.conda + hash: + md5: 70699181909e468875f12076e1b0a8a9 + sha256: 59cdc52d9875f623a4df82896d80f304e436138f8410cbef969a7e4452c6bab7 + category: main + optional: false - name: nbclient version: 0.10.0 manager: conda @@ -3588,6 +3834,38 @@ package: sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 category: main optional: false +- name: pybtex + version: 0.24.0 + manager: conda + platform: linux-64 + dependencies: + latexcodec: '>=1.0.4' + python: '>=3.6' + pyyaml: '>=3.01' + setuptools: '' + six: '' + url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2 + hash: + md5: 2099b86a7399c44c0c61cdb6de6915ba + sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc + category: main + optional: false +- name: pybtex-docutils + version: 1.0.3 + manager: conda + platform: linux-64 + dependencies: + docutils: '>=0.14' + pybtex: '>=0.16' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + setuptools: '' + url: https://conda.anaconda.org/conda-forge/linux-64/pybtex-docutils-1.0.3-py312h7900ff3_2.conda + hash: + md5: 0472f87b9dc0b1db7b501f4d814ba90b + sha256: bf9c8f4c5282d46ce54bd2c6837fa5ff7a1c112382be3d13a7a0ae038d92b7c7 + category: main + optional: false - name: pycparser version: '2.22' manager: conda @@ -3600,6 +3878,26 @@ package: sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 category: main optional: false +- name: pydata-sphinx-theme + version: 0.15.4 + manager: conda + platform: linux-64 + dependencies: + accessible-pygments: '' + babel: '' + beautifulsoup4: '' + docutils: '!=0.17.0' + packaging: '' + pygments: '>=2.7' + python: '>=3.9' + sphinx: '>=5.0' + typing_extensions: '' + url: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda + hash: + md5: c7c50dd5192caa58a05e6a4248a27acb + sha256: 5ec877142ded763061e114e787a4e201c2fb3f0b1db2f04ace610a1187bb34ae + category: main + optional: false - name: pygments version: 2.18.0 manager: conda @@ -4072,6 +4370,18 @@ package: sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b category: main optional: false +- name: snowballstemmer + version: 2.2.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=2' + url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 4d22a9315e78c6827f806065957d566e + sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 + category: main + optional: false - name: soupsieve version: '2.5' manager: conda @@ -4099,6 +4409,269 @@ package: sha256: 0c604fe3f78ddb2b612841722bd9b5db24d0484e30ced89fac78c0a3f524dfd6 category: main optional: false +- name: sphinx + version: 7.4.7 + manager: conda + platform: linux-64 + dependencies: + alabaster: '>=0.7.14,<0.8.dev0' + babel: '>=2.13' + colorama: '>=0.4.6' + docutils: '>=0.20,<0.22' + imagesize: '>=1.3' + importlib-metadata: '>=6.0' + jinja2: '>=3.1' + packaging: '>=23.0' + pygments: '>=2.17' + python: '>=3.9' + requests: '>=2.30.0' + snowballstemmer: '>=2.2' + sphinxcontrib-applehelp: '' + sphinxcontrib-devhelp: '' + sphinxcontrib-htmlhelp: '>=2.0.0' + sphinxcontrib-jsmath: '' + sphinxcontrib-qthelp: '' + sphinxcontrib-serializinghtml: '>=1.1.9' + tomli: '>=2.0' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + hash: + md5: c568e260463da2528ecfd7c5a0b41bbd + sha256: 0de25d561b20dd06982df45a2c3cef490e45b0d4bae8d2c290030721bdadecd6 + category: main + optional: false +- name: sphinx-book-theme + version: 1.1.3 + manager: conda + platform: linux-64 + dependencies: + pydata-sphinx-theme: '>=0.15.2' + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.3-pyhd8ed1ab_0.conda + hash: + md5: 54e574ecd914ea059b29887a93463d79 + sha256: 300aacc36eb33502f640398b83a50a878c869c4fbd6a713d89e04234da8c8bba + category: main + optional: false +- name: sphinx-comments + version: 0.0.3 + manager: conda + platform: linux-64 + dependencies: + python: '' + sphinx: '>=1.8' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-comments-0.0.3-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 2ae3ce35de0c1cec45c94182694f8d1b + sha256: 2578e9a84f3d4435ad1065daa55ad22a401968c09842220337e8195336f94839 + category: main + optional: false +- name: sphinx-copybutton + version: 0.5.2 + manager: conda + platform: linux-64 + dependencies: + python: '>=3' + sphinx: '>=1.8' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_0.conda + hash: + md5: ac832cc43adc79118cf6e23f1f9b8995 + sha256: 7ea21f009792e7c69612ddba367afe0412b3fdff2e92f439e8cd222de4b40bfe + category: main + optional: false +- name: sphinx-design + version: 0.6.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=6,<9' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_1.conda + hash: + md5: db0f1eb28b6df3a11e89437597309009 + sha256: 3db5d78271e3b0761db591111153f80428733972cab0bfdcf24b352133c85de9 + category: main + optional: false +- name: sphinx-external-toc + version: 1.0.1 + manager: conda + platform: linux-64 + dependencies: + click: '>=7.1' + python: '>=3.9' + pyyaml: '' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-external-toc-1.0.1-pyhd8ed1ab_0.conda + hash: + md5: 7a8b55d920fa30a68a2da808abf57291 + sha256: 1436741a948742862e69554f02b855cada81643b10c7dd632c29b1b28aa0ce96 + category: main + optional: false +- name: sphinx-jupyterbook-latex + version: 1.0.0 + manager: conda + platform: linux-64 + dependencies: + packaging: '' + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-jupyterbook-latex-1.0.0-pyhd8ed1ab_0.conda + hash: + md5: 90b6071fb02e56a1aafc85e52721fa0e + sha256: 648307f83e8843b9685a6d979e6bffd7cb0a0d6b81d62b64cbd7c843f87abeb6 + category: main + optional: false +- name: sphinx-multitoc-numbering + version: 0.1.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + sphinx: '>=3' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-multitoc-numbering-0.1.3-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 40749a4d0f0d2e11c65fb26c1cd16a90 + sha256: 6c8241fdb4222799c04677b06b2e1f480a6c11f27c8fccc9f73f98798d3c44d8 + category: main + optional: false +- name: sphinx-thebe + version: 0.3.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.8' + sphinx: '>=4' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-thebe-0.3.1-pyhd8ed1ab_0.conda + hash: + md5: c7895f70474a3883c9ff75c290dff551 + sha256: a6c9c15b59edcf957cc6e6122269c07164a08d71754852f65819375844fd843d + category: main + optional: false +- name: sphinx-togglebutton + version: 0.3.2 + manager: conda + platform: linux-64 + dependencies: + docutils: '' + python: '>=3.6' + sphinx: '' + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-togglebutton-0.3.2-pyhd8ed1ab_0.tar.bz2 + hash: + md5: 382738101934261ea7931d1460e64868 + sha256: 0dcee238aae6337fae5eaf1f9a29b0c51ed9834ae501fccb2cde0fed8dae1a88 + category: main + optional: false +- name: sphinxcontrib-applehelp + version: 2.0.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + hash: + md5: 9075bd8c033f0257122300db914e49c9 + sha256: 8ac476358cf26098e3a360b2a9037bd809243f72934c103953e25f4fda4b9f31 + category: main + optional: false +- name: sphinxcontrib-bibtex + version: 2.6.3 + manager: conda + platform: linux-64 + dependencies: + docutils: '>=0.8,!=0.18.*,!=0.19.*' + importlib-metadata: '>=3.6' + pybtex: '>=0.24' + pybtex-docutils: '>=1.0.0' + python: '>=3.7' + sphinx: '>=3.5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.3-pyhd8ed1ab_0.conda + hash: + md5: 2925be8d19542dd116775f1b9c55bb50 + sha256: 49bac08adb8ae32197c7b9b13219f91332b60e69771122f870c79abcf5611a55 + category: main + optional: false +- name: sphinxcontrib-devhelp + version: 2.0.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + hash: + md5: b3bcc38c471ebb738854f52a36059b48 + sha256: 6790efe55f168816dfc9c14235054d5156e5150d28546c5baf2ff4973eff8f6b + category: main + optional: false +- name: sphinxcontrib-htmlhelp + version: 2.1.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + hash: + md5: e25640d692c02e8acfff0372f547e940 + sha256: 55e14b77ed786ab6ff752b8d75f8448536f385ed250f432bd408d2eff5ea4a9e + category: main + optional: false +- name: sphinxcontrib-jsmath + version: 1.0.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + hash: + md5: da1d979339e2714c30a8e806a33ec087 + sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 + category: main + optional: false +- name: sphinxcontrib-qthelp + version: 2.0.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + hash: + md5: d6e5ea5fe00164ac6c2dcc5d76a42192 + sha256: 7ae639b729844de2ec74dbaf1acccc14843868a82fa46cd2ceb735bc8266af5b + category: main + optional: false +- name: sphinxcontrib-serializinghtml + version: 1.1.10 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + sphinx: '>=5' + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + hash: + md5: e507335cb4ca9cff4c3d0fa9cdab255e + sha256: bf80e4c0ff97d5e8e5f6db0831ba60007e820a3a438e8f1afd868aa516d67d6f + category: main + optional: false +- name: sqlalchemy + version: 2.0.35 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + greenlet: '!=0.4.17' + libgcc: '>=13' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + typing-extensions: '>=4.6.0' + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.35-py312h66e93f0_0.conda + hash: + md5: 9821abaefc619a87de4a41086dde2c00 + sha256: 4a352a9f1a6747ce1fe61a1722bf428e02364810a78919dae5acfa44b8fc510b + category: main + optional: false - name: sqlite version: 3.46.1 manager: conda @@ -4131,6 +4704,18 @@ package: sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec category: main optional: false +- name: tabulate + version: 0.9.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + hash: + md5: 4759805cce2d914c38472f70bf4d8bcb + sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 + category: main + optional: false - name: terminado version: 0.18.1 manager: conda @@ -4327,6 +4912,18 @@ package: sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e category: main optional: false +- name: uc-micro-py + version: 1.0.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.6' + url: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda + hash: + md5: 3b7fc78d7be7b450952aaa916fb78877 + sha256: 54293cd94da3a6b978b353eb7897555055d925ad0008bc73e85cca19e2587ed0 + category: main + optional: false - name: uri-template version: 1.3.0 manager: conda diff --git a/environment.yml b/environment.yml index 2b1b5bf..f18c451 100644 --- a/environment.yml +++ b/environment.yml @@ -9,3 +9,4 @@ dependencies: - python=3.12 # Optional dependencies - geopandas=1.0.1 + - jupyter-book=1.0.2