From 0cc7dcd644a81edc6180d25a1f2452b3492bdb15 Mon Sep 17 00:00:00 2001 From: NoamCodes <146910715+NoamCodes@users.noreply.github.com> Date: Thu, 15 Feb 2024 13:41:30 -0800 Subject: [PATCH] Initial commit --- .editorconfig | 35 + .github/actions/README.md | 46 + .github/actions/buildresources/action.yaml | 56 + .github/actions/setupconda/action.yaml | 44 + .github/workflows/binder-badge.yaml | 38 + .github/workflows/deploy.yaml | 26 + .github/workflows/ensure_clean_notebooks.py | 42 + .github/workflows/manual.yaml | 18 + .github/workflows/netlifypreview.yaml | 40 + .github/workflows/qaqc.yaml | 54 + .github/workflows/test.yaml | 39 + .gitignore | 144 + CODE_OF_CONDUCT.md | 128 + CONTRIBUTING.md | 57 + LICENSE | 21 + README.md | 11 + binder/environment.yml | 1 + book/_config.yml | 69 + book/_toc.yml | 70 + book/chapters/about.ipynb | 83 + book/chapters/conclusion.ipynb | 56 + book/chapters/data.ipynb | 42 + book/chapters/development.ipynb | 42 + book/chapters/evaluation.ipynb | 42 + book/chapters/example.ipynb | 1921 ++++++++ book/chapters/methods.ipynb | 42 + book/chapters/motivation.ipynb | 42 + book/chapters/questions.ipynb | 42 + book/chapters/reproducibility.ipynb | 42 + book/chapters/todo.ipynb | 42 + book/chapters/training.ipynb | 42 + book/chapters/troubleshooting.ipynb | 66 + book/chapters/util.py | 6 + book/chapters/workflow.ipynb | 43 + book/img/GeoSMART_logo.svg | 19 + book/img/logo.png | Bin 0 -> 7957 bytes book/img/use_case_badge.svg | 33 + book/intro.md | 3 + book/reference/bibliography.md | 5 + book/reference/glossary.md | 65 + book/references.bib | 33 + conda/README.md | 30 + conda/conda-linux-64.lock.yml | 168 + conda/conda-lock.yml | 4471 +++++++++++++++++++ conda/conda-osx-64.lock.yml | 162 + conda/environment.yml | 14 + conda/lock-environment.sh | 44 + 47 files changed, 8539 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/actions/README.md create mode 100644 .github/actions/buildresources/action.yaml create mode 100644 .github/actions/setupconda/action.yaml create mode 100644 .github/workflows/binder-badge.yaml create mode 100644 .github/workflows/deploy.yaml create mode 100644 .github/workflows/ensure_clean_notebooks.py create mode 100644 .github/workflows/manual.yaml create mode 100644 .github/workflows/netlifypreview.yaml create mode 100644 .github/workflows/qaqc.yaml create mode 100644 .github/workflows/test.yaml create mode 100644 .gitignore create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 120000 binder/environment.yml create mode 100644 book/_config.yml create mode 100644 book/_toc.yml create mode 100644 book/chapters/about.ipynb create mode 100644 book/chapters/conclusion.ipynb create mode 100644 book/chapters/data.ipynb create mode 100644 book/chapters/development.ipynb create mode 100644 book/chapters/evaluation.ipynb create mode 100644 book/chapters/example.ipynb create mode 100644 book/chapters/methods.ipynb create mode 100644 book/chapters/motivation.ipynb create mode 100644 book/chapters/questions.ipynb create mode 100644 book/chapters/reproducibility.ipynb create mode 100644 book/chapters/todo.ipynb create mode 100644 book/chapters/training.ipynb create mode 100644 book/chapters/troubleshooting.ipynb create mode 100644 book/chapters/util.py create mode 100644 book/chapters/workflow.ipynb create mode 100644 book/img/GeoSMART_logo.svg create mode 100644 book/img/logo.png create mode 100644 book/img/use_case_badge.svg create mode 100644 book/intro.md create mode 100644 book/reference/bibliography.md create mode 100644 book/reference/glossary.md create mode 100644 book/references.bib create mode 100644 conda/README.md create mode 100644 conda/conda-linux-64.lock.yml create mode 100644 conda/conda-lock.yml create mode 100644 conda/conda-osx-64.lock.yml create mode 100644 conda/environment.yml create mode 100644 conda/lock-environment.sh diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..48b11d2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,35 @@ +# https://EditorConfig.org + +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 4 + +[*.ipynb] +# Content is json, but it seems to be minimally formatted +indent_size = unset + +[*.js] +indent_size = 2 + +[*.json] +indent_size = 2 + +[*.md] +indent_size = unset + +[*.py] +# yapf and black will use indents other than 4 spaces +indent_size = unset + +[*.rst] +indent_size = unset + +[{*.yml, *.yaml}] +indent_size = 2 diff --git a/.github/actions/README.md b/.github/actions/README.md new file mode 100644 index 0000000..77d821f --- /dev/null +++ b/.github/actions/README.md @@ -0,0 +1,46 @@ +# eScience Hackweek Jupyterbook Template GitHub Actions + +This folder contains continuous integration workflows to perform a variety of tasks such as checking for spelling errors and broken links, ensuring HTML is generated without errors, and publishing the website. + +## Actions + +the `actions/` subfolder contains common [composite actions steps](https://docs.github.com/en/actions/creating-actions/creating-a-composite-action) that any workflow can use. + +#### [setupconda](./actions/setupconda/action.yaml) +Steps to configure conda environment required to build the website. + +#### [buildresources](./actions/buildresources/action.yaml) +Steps to build the hackweek landing webpage and JupyterBook. + + +## Workflows + +The `workflows/` subfolder contains continuous integration workflows + +#### [binder-badge.yaml](./actions/workflows/binder-badge.yaml) +Create [binder](https://mybinder.readthedocs.io/en/latest/howto/gh-actions-badges.html) badges with links to test tutorial notebooks + +#### [deploy.yaml](./actions/workflows/deploy.yaml) +Render and publish the websites (JupyterBook and landing page) to GitHub Pages + +#### [manual.yaml](./actions/workflows/manual.yaml) +Bypass usage of the cache to manually trigger a full rebuild of the JupyterBook and landing page + +#### [netlifypreview.yaml](./actions/workflows/netlifypreview.yaml) +Creates public preview, via [netlify](https://jupyterbook.org/publish/netlify.html), of changes by building from a PR + +#### [qaqc.yaml](./actions/workflows/qaqc.yaml) +Quality assessment and quality control. Standardizes formatting including spell check, hyperlink check, and clearing notebook outputs + +#### [repo2docker.yaml](./actions/workflows/repo2docker.yaml) +[Build a Docker image](https://github.com/jupyterhub/repo2docker-action) for JupyterHub/BinderHub + +#### [test.yaml](./actions/workflows/test.yaml) +Build the websites (JupyterBook and front page). Run on Pull Requests against every commit and via a 'cron' schedule to maintain caching [since otherwise the cache expires if untouched in 7 days](https://docs.github.com/en/actions/advanced-guides/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy) + +#### [update_fr_template.yaml](./actions/workflows/update_fr_template.yaml) +Update the current repo from the original template (`uwhackweek/jupyterbook-template`). Run manually to collect any updates made to template files listed in `.templaterc.json`, commit them to a new branch, and submit a PR the repo created from the template. + +## Security + +It's desirable for hackweek websites to have contributions from anyone, so the website repository should allow for changes via pull requests from forks. By default workflows running off forked repositories do not have access to secrets, but [following security best practices](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) you can require adding a label to a pull request in order to run a workflow that requires secrets. For an example, see the [netlifypreview.yaml](./actions/workflows/netlifypreview.yaml) workflow. diff --git a/.github/actions/buildresources/action.yaml b/.github/actions/buildresources/action.yaml new file mode 100644 index 0000000..7a63c7f --- /dev/null +++ b/.github/actions/buildresources/action.yaml @@ -0,0 +1,56 @@ +name: 'Build Jupyterbook' +description: 'Build the Jupyterbook with desired run features' + +inputs: + jb-cache: + description: “Set up the Jupyterbook Cache (boolean)” + required: true + publish-to-gh: + description: “Publish to GitHub Pages (boolean)” + required: true + jb-save: + description: "Save the Jupyterbook Build (boolean)" + required: true + token: + description: 'A GitHub Personal Access Token (for publishing)' + required: false + default: '0' + +runs: + using: "composite" + steps: + - name: Setup JupyterBook Cache + if: inputs.jb-cache == 'true' + uses: actions/cache@v3 + with: + path: ./book/_build + # NOTE: change key to "jupyterbook-N+1" to force rebuilding cache + key: jupyterbook-0 + + - uses: ./.github/actions/setupconda + + - name: Build JupyterBook + shell: bash -l {0} + run: | + jupyter-book build book + + - name: Dump Build Logs + if: always() + shell: bash -l {0} + run: | + if (test -a book/_build/html/reports/*log); then cat book/_build/html/reports/*log ; fi + + - name: Publish to GitHub Pages + if: inputs.publish-to-gh == 'true' + uses: peaceiris/actions-gh-pages@v3 + with: + personal_token: ${{inputs.token}} + publish_dir: book/_build/html + publish_branch: gh-pages + + - name: Save Build + if: ${{ always() && inputs.jb-save == 'true'}} + uses: actions/upload-artifact@v2 + with: + name: build + path: book/_build/ diff --git a/.github/actions/setupconda/action.yaml b/.github/actions/setupconda/action.yaml new file mode 100644 index 0000000..4b5de71 --- /dev/null +++ b/.github/actions/setupconda/action.yaml @@ -0,0 +1,44 @@ +name: 'Setup Conda' +description: 'Create conda environment for GitHub Action Job' + +runs: + using: "composite" + steps: + - name: Cache Conda Packages + id: cache-packages + uses: actions/cache@v3 + env: + # Increase this value to reset cache if conda/conda-lock.yml has not changed + CACHE_NUMBER: 0 + with: + path: ~/conda_pkgs_dir + key: + ${{ runner.os }}-conda-packages-${{ env.CACHE_NUMBER }}-${{ hashFiles('conda/conda-lock.yml') }} + + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v2 + with: + miniforge-version: latest + miniforge-variant: Mambaforge + use-mamba: true + auto-update-conda: false + activate-environment: geosmart + use-only-tar-bz2: true # IMPORTANT: This needs to be set for conda package cache to work properly! + + - name: Cache Entire Conda Environment + id: cache-env + uses: actions/cache@v3 + env: + CACHE_NUMBER: 0 + with: + path: ${{ env.CONDA }}/envs + key: + ${{ runner.os }}-conda-environment-${{ env.CACHE_NUMBER }}-${{ hashFiles('conda/conda-lock.yml') }} + + - name: Update Conda Environment + if: steps.cache-env.outputs.cache-hit != 'true' + env: + # ENVFILE: conda/conda-${{ runner.os == 'Linux' && 'linux' || 'osx' }}-64.lock.yml + ENVFILE: conda/environment.yml + shell: bash -l {0} + run: mamba env update -n geosmart -f $ENVFILE diff --git a/.github/workflows/binder-badge.yaml b/.github/workflows/binder-badge.yaml new file mode 100644 index 0000000..ef34d92 --- /dev/null +++ b/.github/workflows/binder-badge.yaml @@ -0,0 +1,38 @@ +name: AddBinderBadge +# https://github.com/jupyterhub/repo2docker-action#cache-builds-on-mybinderorg-and-provide-a-link +on: + pull_request: + types: [opened, reopened] + paths: + - 'book/tutorials/**' + - '.github/workflows/binder-badge.yml' + - 'conda/**' +jobs: + add-badge: + runs-on: ubuntu-22.04 + steps: + - name: Checkout PR + uses: actions/checkout@v3 + + - name: cache binder build on mybinder.org + uses: jupyterhub/repo2docker-action@master + with: + NO_PUSH: true + MYBINDERORG_TAG: ${{ github.event.pull_request.head.ref }} + + - name: Comment on PR with Binder link + uses: actions/github-script@v3 + env: + BRANCH_NAME: ${{ github.event.pull_request.head.ref }} + CONTENT_REPO: ${{github.event.pull_request.head.repo.full_name}} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + var BRANCH_NAME = process.env.BRANCH_NAME; + var CONTENT_REPO = process.env.CONTENT_REPO; + github.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/${context.repo.owner}/${context.repo.repo}/${BRANCH_NAME}) :point_left: Launch a binder notebook on this branch` + }) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..479e7dd --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,26 @@ +name: Deploy + +on: + push: + paths: + - 'book/**' + - '.github/workflows/deploy.yaml' + - '.github/actions/**' + + branches: + - main + +jobs: + build-and-deploy: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - uses: ./.github/actions/buildresources + with: + jb-cache: false + publish-to-gh: true + jb-save: true + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ensure_clean_notebooks.py b/.github/workflows/ensure_clean_notebooks.py new file mode 100644 index 0000000..d3c298b --- /dev/null +++ b/.github/workflows/ensure_clean_notebooks.py @@ -0,0 +1,42 @@ +import sys +from pathlib import Path + +import nb_clean as nbc +import nbformat +import yaml + +with open('./book/_config.yml') as f: + data = yaml.safe_load(f) + +# Sometimes we use rendered notebooks instead of executing them +exclude_paths = [] +for pattern in data['execute']['exclude_patterns']: + exclude_paths += list(Path('book/tutorials').glob(pattern)) + exclude_notebooks = [path.as_posix() for path in exclude_paths] +print('Excluded from execution:\n', '\n'.join(exclude_notebooks)) + +# Scrub outputs for spellcheck and linkcheck +for notebook in exclude_notebooks: + print(f'Scrubbing outputs: {notebook}...') + nb = nbformat.read(notebook, as_version=nbformat.NO_CONVERT) + cleaned = nbc.clean_notebook(nb, + remove_empty_cells=True, + preserve_cell_metadata=True) + nbformat.write(cleaned, notebook) + + +all_ipynbs = [path.as_posix() for path in Path('book/tutorials').rglob('*.ipynb')] +ipynbs = [p for p in all_ipynbs if not '.ipynb_checkpoints' in p] + +results = [] +for notebook in ipynbs: + #if not notebook in exclude_notebooks: + print(f'Checking {notebook}...') + nb = nbformat.read(notebook, as_version=nbformat.NO_CONVERT) + result = nbc.check_notebook(nb, + remove_empty_cells=True, + preserve_cell_metadata=True) + results.append(result) + +if False in results: + sys.exit(1) diff --git a/.github/workflows/manual.yaml b/.github/workflows/manual.yaml new file mode 100644 index 0000000..eff74c5 --- /dev/null +++ b/.github/workflows/manual.yaml @@ -0,0 +1,18 @@ +name: Build Without Cache + +on: + workflow_dispatch: + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - uses: ./.github/actions/buildresources + with: + jb-cache: false + publish-to-gh: false + jb-save: true diff --git a/.github/workflows/netlifypreview.yaml b/.github/workflows/netlifypreview.yaml new file mode 100644 index 0000000..ba0a046 --- /dev/null +++ b/.github/workflows/netlifypreview.yaml @@ -0,0 +1,40 @@ +name: NetlifyPreview + +on: + pull_request_target: + types: [labeled, synchronize] + +jobs: + add-preview: + runs-on: ubuntu-latest + # This workflow accesses secrets and checks out a PR, so only run if labelled + # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ + if: contains(github.event.pull_request.labels.*.name, 'preview') + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - uses: ./.github/actions/buildresources + with: + jb-cache: false + publish-to-gh: false + jb-save: false + + - name: Deploy Website Preview + uses: nwtgck/actions-netlify@v1.2 + with: + publish-dir: './book/_build/html' + production-deploy: false + github-token: ${{ secrets.GITHUB_TOKEN }} + deploy-message: "Deploy from GitHub Actions" + enable-commit-comment: false + enable-pull-request-comment: true + overwrites-pull-request-comment: true + alias: deploy-preview-${{ github.event.number }} + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + timeout-minutes: 1 diff --git a/.github/workflows/qaqc.yaml b/.github/workflows/qaqc.yaml new file mode 100644 index 0000000..e77bd16 --- /dev/null +++ b/.github/workflows/qaqc.yaml @@ -0,0 +1,54 @@ +name: QualityContol + +on: + pull_request: + branches: + - main + +jobs: + quality-control: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + + steps: + - uses: actions/checkout@v3 + + - uses: ./.github/actions/setupconda + + - name: Install NB-Clean + run: | + pip install nb-clean==2.0.2 + + - name: Ensure clean notebooks + run: | + python .github/workflows/ensure_clean_notebooks.py + + # NOTE: this isn't a comprehensive spellcheck, just common typos + - name: Spellcheck + if: always() + uses: codespell-project/actions-codespell@master + with: + check_filenames: true + check_hidden: true + skip: '.git,qaqc.yml' + ignore_words_list: slippy,hist + + # borrowed from https://github.com/ProjectPythia/pythia-foundations/blob/main/.github/workflows/link-checker.yaml + - name: Disable Notebook Execution Before Linkcheck + if: always() + shell: python + run: | + import yaml + with open('./book/_config.yml') as f: + data = yaml.safe_load(f) + data['execute']['execute_notebooks'] = 'off' + with open('./book/_config.yml', 'w') as f: + yaml.dump(data, f) + + - name: Check External Links + continue-on-error: true + if: always() + run: | + jb build book --builder linkcheck diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..8c34035 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,39 @@ +name: Test + +on: + schedule: + # run this once a week (sunday midnight) to preserve cache + # https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy + - cron: '0 0 * * 0' + pull_request_target: + types: [labeled, synchronize] + paths: + - '.github/**/*' + - 'book/**' + - 'conda/**' + branches: + - main + +jobs: + build-and-test: + # This workflow accesses secrets (~/.netrc) so only run if labelled by repo owner + # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ + if: contains(github.event.pull_request.labels.*.name, 'preview') + name: Build and test on OS - ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ "ubuntu-latest", "macos-latest" ] + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - uses: ./.github/actions/buildresources + with: + jb-cache: false + publish-to-gh: false + jb-save: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d48f08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,144 @@ +.DS_Store + +# Jupyter Book things +.bash_history +*_build +.jupyter-server-log.txt +.config/ +.jupyter/ +.local/ +.viminfo + +# cookiecutter webpage things +cookiecutter.json +/book/_build/html/assets + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..61c150f --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +uwhackweek@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2281341 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# Contributing + +Contributions are welcome, and they are greatly appreciated! Every little bit +helps, and credit will always be given. + +- Report bugs, request features or submit feedback as a [GitHub Issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues). +- Make fixes, add content or improvements using [GitHub Pull Requests](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests) + +Ready to contribute? Here's a quick guide + + +## Contributing website changes + +To build our website, we need specific Python packages which are managed with the `conda` and `mamba` tools. If you already do not already have those tools installed, we recommend using the [Mambaforge Installer](https://github.com/conda-forge/miniforge#mambaforge): + + +1. Fork this geosmart's website repo on GitHub. + +1. Clone your fork locally: + + ```sh + git clone https://github.com/geo-smart/use_case_template.git + cd book + ``` + +1. Create a branch to add your changes: + + ```sh + git checkout -b name-of-your-bugfix-or-feature + ``` + +1. Create and activate the "geosmart" conda environment. + + __NOTE__: If you're running linux or Windows use `conda/conda-linux-64.lock.yml` + ```sh + mamba env create --name geosmart --file conda/conda-osx-64.lock.yml + mamba activate geosmart + ``` + __NOTE__: If you want to add packages or change the environment, + you must follow the procedure outlined in [./conda/README.md](./conda/README.md). + +1. Make your desired changes and build the book locally + + ```sh + jb build book + ``` + __NOTE__: to preview the changes open `book/build/html/index.html` + +1. Push your branch to GitHub when you're ready: + + ```sh + git add . + git commit -m "Your detailed description of your changes." + git push origin name-of-your-bugfix-or-feature + ``` + +1. Open a pull request through the GitHub website: https://github.com/geo-smart/use_case_template diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d6a6152 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 GeoSMART + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..87b872f --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Geosmart Use Case Jupyter Book + +[![Deploy](https://github.com/geo-smart/use_case_template/actions/workflows/deploy.yaml/badge.svg)](https://github.com/geo-smart/use_case_template/actions/workflows/deploy.yaml) +[![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://geo-smart.github.io/use_case_template) +[![GeoSMART Use Case](./book/img/use_case_badge.svg)](https://geo-smart.github.io/usecases) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/geo-smart/use_case_template/HEAD?urlpath=lab) +[![Open in Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/geo-smart/use_case_template) + + +This repository stores a skeleton of a GeoSMART use case book.
+Click on "use this template" to get started. \ No newline at end of file diff --git a/binder/environment.yml b/binder/environment.yml new file mode 120000 index 0000000..faafc0c --- /dev/null +++ b/binder/environment.yml @@ -0,0 +1 @@ +../conda/environment.yml \ No newline at end of file diff --git a/book/_config.yml b/book/_config.yml new file mode 100644 index 0000000..37d1256 --- /dev/null +++ b/book/_config.yml @@ -0,0 +1,69 @@ +# Book settings +# Learn more at https://jupyterbook.org/customize/config.html + +title: "Use Case Template" +author: eScience Institute, University of Washington +logo: img/GeoSMART_logo.svg +only_build_toc_files: true + +# 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 + home_page_in_navbar: false + # google_analytics_id: G-XXXXXXXXX + +parse: + # https://jupyterbook.org/content/content-blocks.html?highlight=myst%20substitution#define-substitutions-for-your-whole-book + # https://jupyterbook.org/content/content-blocks.html#using-substitutions-in-links + myst_substitutions: + website_url: "https://geo-smart.github.io/use_case_template" + myst_enable_extensions: + # Defaults + - dollarmath + - linkify + - substitution + - colon_fence + # Extras + - html_image + +# Force re-execution of notebooks on each build. +# See https://jupyterbook.org/content/execute.html +execute: + # NOTE: 'cache' to use jupyter-cache, or 'force' to run all + execute_notebooks: 'cache' + exclude_patterns: ["*rendered*", "*skip*"] + allow_errors: false + # Per-cell notebook execution limit (seconds) + timeout: 300 + +# Define the name of the latex output file for PDF builds +latex: + latex_documents: + targetname: book.tex + +# Configure your Binder links, such as the URL of the BinderHub. +launch_buttons: + notebook_interface: jupyterlab + binderhub_url: "https://mybinder.org" + +# Information about where the book exists on the web +repository: + url: https://github.com/geo-smart/use_case_template # 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) + +# Bibliography +bibtex_bibfiles: + - references.bib +sphinx: + config: + html_js_files: + - https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js + bibtex_reference_style: author_year # or label, super, \supercite + nb_custom_formats: + .py: + - jupytext.reads + - fmt: py:percent diff --git a/book/_toc.yml b/book/_toc.yml new file mode 100644 index 0000000..dc5d40a --- /dev/null +++ b/book/_toc.yml @@ -0,0 +1,70 @@ +# Table of contents +# Learn more at https://jupyterbook.org/customize/toc.html +root: intro +format: jb-book +parts: +- caption: About + chapters: + - title: Geosmart Website + url: https://geo-smart.github.io/index.html + - title: Project Pythia Foundations + url: https://foundations.projectpythia.org/landing-page.html + - title: About Use Case Library + file: chapters/about + +- caption: Chapter One + chapters: + - file: chapters/motivation + +- caption: Chapter Two + chapters: + - file: chapters/methods + +- caption: Chapter Three + chapters: + - file: chapters/data + +- caption: Chapter Four + chapters: + - file: chapters/development + +- caption: Chapter Five + chapters: + - file: chapters/training + +- caption: Chapter Six + chapters: + - file: chapters/evaluation + +- caption: Chapter Seven + chapters: + - file: chapters/workflow + +- caption: Chapter Eight + chapters: + - file: chapters/reproducibility + +- caption: Chapter Nine + chapters: + - file: chapters/conclusion + +- caption: Chapter Ten (optional) + chapters: + - file: chapters/todo + +- caption: Chapter Eleven (optional) + chapters: + - file: chapters/questions + +- caption: Chapter Twelve (optional) + chapters: + - file: chapters/troubleshooting + +- caption: Chapter Thirteen + chapters: + - file: chapters/example + +- caption: Reference + chapters: + - file: reference/glossary + - file: reference/bibliography diff --git a/book/chapters/about.ipynb b/book/chapters/about.ipynb new file mode 100644 index 0000000..adc78c3 --- /dev/null +++ b/book/chapters/about.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# About the GeoSMART Use Case Library\n", + "\n", + "### General Overview\n", + "\n", + "The GeoSMART use case library is a collection of books demonstrating various machine learning workflows relevant to the geosciences, with the goal of fostering further adoption and growth in the space. Books in the library can be identified by the badge:\n", + "\n", + "[![GeoSMART Use Case](../img/use_case_badge.svg)](https://geo-smart.github.io/usecases)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contributing Content\n", + "\n", + "Tutorial content can be integrated into jupyterbooks in one of two ways:\n", + "* Do it yourself (use this template book and add your content)\n", + "* Provide use your content (preferably in a github repo) and we will integrate it\n", + "\n", + "The goal is to provide executable code on some platform. The contributor can choose between:\n", + "* Binder\n", + "* Google Colab\n", + "* Free AWS (smaller cloud-based examples)\n", + "If none of the above options work for you, please contact us directly to discuss further.\n", + "\n", + "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/geo-smart/use_case_template/HEAD?urlpath=lab)\n", + "[![Open in Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/geo-smart/use_case_template)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Technical Details\n", + "\n", + "The following section is dedicated to helping anyone who might be looking to use this template to contribute a use case. We recommend that you clone this navigating to use case template repository and clicking the \"Use this template\" button, the follow along locally. Much of the important information for succesufully using the template is in `README.md` files, and familiarizing oneself with the project structure is also important. \n", + "\n", + "The `.github` folder already contains the github actions that will handle CI/CD deployment to github pages. There is no need to create a gh-pages branch, the first run of the github actions should handle that automatically.\n", + "\n", + "The `binder` folder should store symlink(s) to environment configuration files in the `conda` folder. We recommend you use a package manager to both make your work more reproducible and make running your work with Binder as painless as possible. See the `conda/README.md` file for more detailed information.\n", + "\n", + "The `book` folder houses the content of the project. Inside there, you will find two very important files, `_config.yml` and `_toc.yml`. The config file tells jupyter how to compile your notebook to html (for display on github pages). You probably won't need to change anything in here except the title, author and website_url. The table of contents file will require some more changes. We have already laid out a basic project structure, and we recommend you at least look through it, even if you don't end up following it exactly. Chapters can contain more than one file, although if you want to make significant changes you should check [this](https://jupyterbook.org/en/stable/structure/toc.html) page out first." + ] + } + ], + "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.9.0" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/conclusion.ipynb b/book/chapters/conclusion.ipynb new file mode 100644 index 0000000..68ccb1f --- /dev/null +++ b/book/chapters/conclusion.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Discussion / Conclusion \n", + "\n", + "### Conclusion\n", + "\n", + "Is ML the right tool for the research?/How to identify the best ML tool for my problem? \n", + "Can a simple model be as good as a complex one? ML model discovery \t\t\t\n", + "Do I have enough confidence to extrapolate the results? Is the model transferable?\t\n", + "\n", + "### Discussion\n", + "\n", + "This chapter has two parts: lessons learnt and open questions. \n", + "\n", + "Learns learnt should summerize the new stuff we learn from this use case of AI. What new contribution does AI give to solve this problem? Is it good enough to achieve your expected goal? What part of work is unexpected before you dive in? Do you think the model can work in your production environment? etc.\n", + "\n", + "Open questions should focus on future possibilities like if your team wants to adopt this model, what else you should do to make it fully work? How should we better tackle the data bias problem? How should we address the generalization issue on spatial and temporal extent in practice?\n", + "\n", + "Please elaborate a little bit on these questions with your real thoughts, which will be very helpful for us to tell the final story to students. \n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/data.ipynb b/book/chapters/data.ipynb new file mode 100644 index 0000000..c30086e --- /dev/null +++ b/book/chapters/data.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Data Preparation\n", + "\n", + "Data description include source, size, type, attributes, modality, etc. Data retrieval from community data centers, personal cloud storage, or published datasets. Feature extraction and engineering.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/development.ipynb b/book/chapters/development.ipynb new file mode 100644 index 0000000..b6afd01 --- /dev/null +++ b/book/chapters/development.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Model Development and Paramter Tuning\n", + "\n", + "Explain the effects of parameter tuning and how it was performed. If you used a tool to perform automatic tuning , explaing that as well. If it is the case, explain model under or over fitting and the consequences.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/evaluation.ipynb b/book/chapters/evaluation.ipynb new file mode 100644 index 0000000..09280a1 --- /dev/null +++ b/book/chapters/evaluation.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Performance Evaluation\n", + "\n", + "Testing of the model on independent datasets.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/example.ipynb b/book/chapters/example.ipynb new file mode 100644 index 0000000..c0ee06e --- /dev/null +++ b/book/chapters/example.ipynb @@ -0,0 +1,1921 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Sample Jupyter Notebook" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Demo of executability below.\n", + "Loading and plotting sample data from plotly express." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.4 + ], + [ + 0.3 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.1 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.1 + ], + [ + 0.1 + ], + [ + 0.2 + ], + [ + 0.4 + ], + [ + 0.4 + ], + [ + 0.3 + ], + [ + 0.3 + ], + [ + 0.3 + ], + [ + 0.2 + ], + [ + 0.4 + ], + [ + 0.2 + ], + [ + 0.5 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.4 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.4 + ], + [ + 0.1 + ], + [ + 0.2 + ], + [ + 0.1 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.1 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.3 + ], + [ + 0.3 + ], + [ + 0.2 + ], + [ + 0.6 + ], + [ + 0.4 + ], + [ + 0.3 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ], + [ + 0.2 + ] + ], + "hovertemplate": "species=setosa
sepal_width=%{x}
sepal_length=%{y}
petal_length=%{marker.size}
petal_width=%{customdata[0]}", + "legendgroup": "setosa", + "marker": { + "color": "#636efa", + "size": [ + 1.4, + 1.4, + 1.3, + 1.5, + 1.4, + 1.7, + 1.4, + 1.5, + 1.4, + 1.5, + 1.5, + 1.6, + 1.4, + 1.1, + 1.2, + 1.5, + 1.3, + 1.4, + 1.7, + 1.5, + 1.7, + 1.5, + 1, + 1.7, + 1.9, + 1.6, + 1.6, + 1.5, + 1.4, + 1.6, + 1.6, + 1.5, + 1.5, + 1.4, + 1.5, + 1.2, + 1.3, + 1.5, + 1.3, + 1.5, + 1.3, + 1.3, + 1.3, + 1.6, + 1.9, + 1.4, + 1.6, + 1.4, + 1.5, + 1.4 + ], + "sizemode": "area", + "sizeref": 0.01725, + "symbol": "circle" + }, + "mode": "markers", + "name": "setosa", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 3.5, + 3, + 3.2, + 3.1, + 3.6, + 3.9, + 3.4, + 3.4, + 2.9, + 3.1, + 3.7, + 3.4, + 3, + 3, + 4, + 4.4, + 3.9, + 3.5, + 3.8, + 3.8, + 3.4, + 3.7, + 3.6, + 3.3, + 3.4, + 3, + 3.4, + 3.5, + 3.4, + 3.2, + 3.1, + 3.4, + 4.1, + 4.2, + 3.1, + 3.2, + 3.5, + 3.1, + 3, + 3.4, + 3.5, + 2.3, + 3.2, + 3.5, + 3.8, + 3, + 3.8, + 3.2, + 3.7, + 3.3 + ], + "xaxis": "x", + "y": [ + 5.1, + 4.9, + 4.7, + 4.6, + 5, + 5.4, + 4.6, + 5, + 4.4, + 4.9, + 5.4, + 4.8, + 4.8, + 4.3, + 5.8, + 5.7, + 5.4, + 5.1, + 5.7, + 5.1, + 5.4, + 5.1, + 4.6, + 5.1, + 4.8, + 5, + 5, + 5.2, + 5.2, + 4.7, + 4.8, + 5.4, + 5.2, + 5.5, + 4.9, + 5, + 5.5, + 4.9, + 4.4, + 5.1, + 5, + 4.5, + 4.4, + 5, + 5.1, + 4.8, + 5.1, + 4.6, + 5.3, + 5 + ], + "yaxis": "y" + }, + { + "customdata": [ + [ + 1.4 + ], + [ + 1.5 + ], + [ + 1.5 + ], + [ + 1.3 + ], + [ + 1.5 + ], + [ + 1.3 + ], + [ + 1.6 + ], + [ + 1 + ], + [ + 1.3 + ], + [ + 1.4 + ], + [ + 1 + ], + [ + 1.5 + ], + [ + 1 + ], + [ + 1.4 + ], + [ + 1.3 + ], + [ + 1.4 + ], + [ + 1.5 + ], + [ + 1 + ], + [ + 1.5 + ], + [ + 1.1 + ], + [ + 1.8 + ], + [ + 1.3 + ], + [ + 1.5 + ], + [ + 1.2 + ], + [ + 1.3 + ], + [ + 1.4 + ], + [ + 1.4 + ], + [ + 1.7 + ], + [ + 1.5 + ], + [ + 1 + ], + [ + 1.1 + ], + [ + 1 + ], + [ + 1.2 + ], + [ + 1.6 + ], + [ + 1.5 + ], + [ + 1.6 + ], + [ + 1.5 + ], + [ + 1.3 + ], + [ + 1.3 + ], + [ + 1.3 + ], + [ + 1.2 + ], + [ + 1.4 + ], + [ + 1.2 + ], + [ + 1 + ], + [ + 1.3 + ], + [ + 1.2 + ], + [ + 1.3 + ], + [ + 1.3 + ], + [ + 1.1 + ], + [ + 1.3 + ] + ], + "hovertemplate": "species=versicolor
sepal_width=%{x}
sepal_length=%{y}
petal_length=%{marker.size}
petal_width=%{customdata[0]}", + "legendgroup": "versicolor", + "marker": { + "color": "#EF553B", + "size": [ + 4.7, + 4.5, + 4.9, + 4, + 4.6, + 4.5, + 4.7, + 3.3, + 4.6, + 3.9, + 3.5, + 4.2, + 4, + 4.7, + 3.6, + 4.4, + 4.5, + 4.1, + 4.5, + 3.9, + 4.8, + 4, + 4.9, + 4.7, + 4.3, + 4.4, + 4.8, + 5, + 4.5, + 3.5, + 3.8, + 3.7, + 3.9, + 5.1, + 4.5, + 4.5, + 4.7, + 4.4, + 4.1, + 4, + 4.4, + 4.6, + 4, + 3.3, + 4.2, + 4.2, + 4.2, + 4.3, + 3, + 4.1 + ], + "sizemode": "area", + "sizeref": 0.01725, + "symbol": "circle" + }, + "mode": "markers", + "name": "versicolor", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 3.2, + 3.2, + 3.1, + 2.3, + 2.8, + 2.8, + 3.3, + 2.4, + 2.9, + 2.7, + 2, + 3, + 2.2, + 2.9, + 2.9, + 3.1, + 3, + 2.7, + 2.2, + 2.5, + 3.2, + 2.8, + 2.5, + 2.8, + 2.9, + 3, + 2.8, + 3, + 2.9, + 2.6, + 2.4, + 2.4, + 2.7, + 2.7, + 3, + 3.4, + 3.1, + 2.3, + 3, + 2.5, + 2.6, + 3, + 2.6, + 2.3, + 2.7, + 3, + 2.9, + 2.9, + 2.5, + 2.8 + ], + "xaxis": "x", + "y": [ + 7, + 6.4, + 6.9, + 5.5, + 6.5, + 5.7, + 6.3, + 4.9, + 6.6, + 5.2, + 5, + 5.9, + 6, + 6.1, + 5.6, + 6.7, + 5.6, + 5.8, + 6.2, + 5.6, + 5.9, + 6.1, + 6.3, + 6.1, + 6.4, + 6.6, + 6.8, + 6.7, + 6, + 5.7, + 5.5, + 5.5, + 5.8, + 6, + 5.4, + 6, + 6.7, + 6.3, + 5.6, + 5.5, + 5.5, + 6.1, + 5.8, + 5, + 5.6, + 5.7, + 5.7, + 6.2, + 5.1, + 5.7 + ], + "yaxis": "y" + }, + { + "customdata": [ + [ + 2.5 + ], + [ + 1.9 + ], + [ + 2.1 + ], + [ + 1.8 + ], + [ + 2.2 + ], + [ + 2.1 + ], + [ + 1.7 + ], + [ + 1.8 + ], + [ + 1.8 + ], + [ + 2.5 + ], + [ + 2 + ], + [ + 1.9 + ], + [ + 2.1 + ], + [ + 2 + ], + [ + 2.4 + ], + [ + 2.3 + ], + [ + 1.8 + ], + [ + 2.2 + ], + [ + 2.3 + ], + [ + 1.5 + ], + [ + 2.3 + ], + [ + 2 + ], + [ + 2 + ], + [ + 1.8 + ], + [ + 2.1 + ], + [ + 1.8 + ], + [ + 1.8 + ], + [ + 1.8 + ], + [ + 2.1 + ], + [ + 1.6 + ], + [ + 1.9 + ], + [ + 2 + ], + [ + 2.2 + ], + [ + 1.5 + ], + [ + 1.4 + ], + [ + 2.3 + ], + [ + 2.4 + ], + [ + 1.8 + ], + [ + 1.8 + ], + [ + 2.1 + ], + [ + 2.4 + ], + [ + 2.3 + ], + [ + 1.9 + ], + [ + 2.3 + ], + [ + 2.5 + ], + [ + 2.3 + ], + [ + 1.9 + ], + [ + 2 + ], + [ + 2.3 + ], + [ + 1.8 + ] + ], + "hovertemplate": "species=virginica
sepal_width=%{x}
sepal_length=%{y}
petal_length=%{marker.size}
petal_width=%{customdata[0]}", + "legendgroup": "virginica", + "marker": { + "color": "#00cc96", + "size": [ + 6, + 5.1, + 5.9, + 5.6, + 5.8, + 6.6, + 4.5, + 6.3, + 5.8, + 6.1, + 5.1, + 5.3, + 5.5, + 5, + 5.1, + 5.3, + 5.5, + 6.7, + 6.9, + 5, + 5.7, + 4.9, + 6.7, + 4.9, + 5.7, + 6, + 4.8, + 4.9, + 5.6, + 5.8, + 6.1, + 6.4, + 5.6, + 5.1, + 5.6, + 6.1, + 5.6, + 5.5, + 4.8, + 5.4, + 5.6, + 5.1, + 5.1, + 5.9, + 5.7, + 5.2, + 5, + 5.2, + 5.4, + 5.1 + ], + "sizemode": "area", + "sizeref": 0.01725, + "symbol": "circle" + }, + "mode": "markers", + "name": "virginica", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 3.3, + 2.7, + 3, + 2.9, + 3, + 3, + 2.5, + 2.9, + 2.5, + 3.6, + 3.2, + 2.7, + 3, + 2.5, + 2.8, + 3.2, + 3, + 3.8, + 2.6, + 2.2, + 3.2, + 2.8, + 2.8, + 2.7, + 3.3, + 3.2, + 2.8, + 3, + 2.8, + 3, + 2.8, + 3.8, + 2.8, + 2.8, + 2.6, + 3, + 3.4, + 3.1, + 3, + 3.1, + 3.1, + 3.1, + 2.7, + 3.2, + 3.3, + 3, + 2.5, + 3, + 3.4, + 3 + ], + "xaxis": "x", + "y": [ + 6.3, + 5.8, + 7.1, + 6.3, + 6.5, + 7.6, + 4.9, + 7.3, + 6.7, + 7.2, + 6.5, + 6.4, + 6.8, + 5.7, + 5.8, + 6.4, + 6.5, + 7.7, + 7.7, + 6, + 6.9, + 5.6, + 7.7, + 6.3, + 6.7, + 7.2, + 6.2, + 6.1, + 6.4, + 7.2, + 7.4, + 7.9, + 6.4, + 6.3, + 6.1, + 7.7, + 6.3, + 6.4, + 6, + 6.9, + 6.7, + 6.9, + 5.8, + 6.8, + 6.7, + 6.7, + 6.3, + 6.5, + 6.2, + 5.9 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "itemsizing": "constant", + "title": { + "text": "species" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "sepal_width" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "sepal_length" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas\n", + "import plotly.express as px\n", + "df = px.data.iris()\n", + "fig = px.scatter(df, x=\"sepal_width\", y=\"sepal_length\", color=\"species\",\n", + " size='petal_length', hover_data=['petal_width'])\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n" + ] + } + ], + "source": [ + "import util\n", + "\n", + "x = 10\n", + "y = 20\n", + "print(util.dummy_method(x, y))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "geosmart", + "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.10.8" + }, + "vscode": { + "interpreter": { + "hash": "a0d8bf954ea6db8eac7eea84f0a01b1ff10874f08007b8fbfb0c71c8847e6862" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/methods.ipynb b/book/chapters/methods.ipynb new file mode 100644 index 0000000..63df639 --- /dev/null +++ b/book/chapters/methods.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Machine Learning Methods and Tools\n", + "\n", + "Explain the method and why you think it's suitable for your use case. Explain the choice of tools/packages/data and the reason for use.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/motivation.ipynb b/book/chapters/motivation.ipynb new file mode 100644 index 0000000..8f0ef2a --- /dev/null +++ b/book/chapters/motivation.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Motivation (Science or Utility)\n", + "\n", + "Explain the science motivation, data challenge and any existing attempts. Explain why you need ML to solve the problem as opposed to a conventional approach.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/questions.ipynb b/book/chapters/questions.ipynb new file mode 100644 index 0000000..92c141b --- /dev/null +++ b/book/chapters/questions.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Open questions\n", + "\n", + "More future oriented tasks that require deeper and long term research, and will have big returns.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/reproducibility.ipynb b/book/chapters/reproducibility.ipynb new file mode 100644 index 0000000..609f7d8 --- /dev/null +++ b/book/chapters/reproducibility.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Reproducibility\n", + "\n", + "How to get credit for the work. Steps for getting a DOI. Discuss workflow adaptation to other datasets and science questions if suitable.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/todo.ipynb b/book/chapters/todo.ipynb new file mode 100644 index 0000000..eb1b021 --- /dev/null +++ b/book/chapters/todo.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Try something on your own\n", + "\n", + "Interesting and meaningful tasks that the tutorials didn’t do, but you could try and they should be achievable with reasonably small amount of time and effort\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/training.ipynb b/book/chapters/training.ipynb new file mode 100644 index 0000000..ba800a2 --- /dev/null +++ b/book/chapters/training.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Model Training\n", + "\n", + "Explain how you split the data into training, testing and validation sets. Explore feature importance. Save the model.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/chapters/troubleshooting.ipynb b/book/chapters/troubleshooting.ipynb new file mode 100644 index 0000000..c6b8b67 --- /dev/null +++ b/book/chapters/troubleshooting.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Trouble Shooting\n", + "\n", + "This page lists all the issues we have met when creating or following tutorials.\n", + "\n", + "If you have no issues with running the tutorials, you can skip this chapter. It is very likely that some platform specific issues happen now and then, we would love to collect those knowledge to help students in future to avoid wasting time on them. \n", + "\n", + "In this chapter, each section should address one techincal issue/concern. Please list your running environment in many details as possible. The following is an example:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example Issue: Cannot run the `model.train` in Chapter 2. It omits error: \"xxxxx\".\n", + "\n", + "#### Environment\n", + "Machine: Apple M1 laptop\n", + "Python: 3.10\n", + "Conda: 4.12\n", + "Scikit-learn: 1.0.2\n", + "...\n", + "\n", + "#### Code\n", + "Line 1xxx in Chapter 2 (link)\n", + "```\n", + "clf = RandomForestClassifier(max_depth=2, random_state=0)\n", + "clf.train(X, y)\n", + "```\n", + "\n", + "#### Error\n", + "raised Error xxxx\n", + "\n", + "#### Diagnose\n", + "This might be caused by the incompatibility among xxxx\n", + "\n", + "#### Solution\n", + "Please remove xxx, install xxx, and do xxx to try again. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/book/chapters/util.py b/book/chapters/util.py new file mode 100644 index 0000000..a57942f --- /dev/null +++ b/book/chapters/util.py @@ -0,0 +1,6 @@ +''' +This script includes all packages and functions required by book chapters +''' + +def dummy_method(a, b): + return (a + 5) % b \ No newline at end of file diff --git a/book/chapters/workflow.ipynb b/book/chapters/workflow.ipynb new file mode 100644 index 0000000..3a67d0b --- /dev/null +++ b/book/chapters/workflow.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Workflow Management / Cloud Computing\n", + "\n", + "Explain cloud-based workflows and compute requirements.\n", + "If you seek to make the model run in production or achieve higher productivity and scalability, use GeoWeaver or other tools.\n" + ] + } + ], + "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.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)]" + }, + "vscode": { + "interpreter": { + "hash": "c446eef832ec964573dc49f36fd16bdbed40cbfbefbf557bc2dc78d9e7968689" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/book/img/GeoSMART_logo.svg b/book/img/GeoSMART_logo.svg new file mode 100644 index 0000000..d77f37d --- /dev/null +++ b/book/img/GeoSMART_logo.svg @@ -0,0 +1,19 @@ + + + diff --git a/book/img/logo.png b/book/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd3061f6b89a98bfb4e933f3e07cfe8f6f7ed07 GIT binary patch literal 7957 zcmV+wAL`(VP)3i1Gvw#zs>p#lbdtj`@847=WXX4h7bb& z2MM5VwgCV2_#cB(@jnKog1OlOGy`eU%3kUjHvS)8{owxJ9|<>^L4t8nMd_uy?CM%m zNmZH2YA&y?#2A?^wU#=Ihbxsr6%iT^Ar-CbE|)2EVc}`Z9W{D)qIdz|El+ z-juo6?r`k-ZqN5e_n*0R9uR`Ch%o^KcZLK42u(8-MNu>r8WcL~uBp?;PEL%~dwz>B zrl}jMnr<9}yuhE&PCs(y`1gnQolieaF*MC^G(}5klK>(JJaV~`l2S(xy?ykMk;D59 z4%P`f2IPF6R-TK_aYkDT6C>4t9+9j_SgLy^ytKV3c ze(7Spt)8K8!hD4ZqA5C2Z+K$;uwe>98N8%m|>^NrgF_UbPp!~|$W2gY>Tvirj!vqqOz z6#tRw0|40U4R@cN5ZI- zs>2`s7!ek3b2?RWxfFRMF_>RkICu4*3rg}iRwhM=c7U*mL_scB>0=YZL&IYtqYcps zX~`)HPL`UOLQxR7#fKCuudb+TXt-RIUs_XcSj z^?Po=OGKEV{U3||GnijoFmBm&o85MudY^y1qHozU!#rqH+sgZJTpAeC#RH$O3;~$(j`@w1R000gil^cx(RmKxpxfk+_ z&SvHDb_b*y%@W|{0uzKhp^C7G&_O9leUlRg8T2usq0wR88W}Gw+VaJYgQt#^mzQ9I zuTTkrD2l5Vu6SbM!+s0w4}-s+IP$=nzhbw<0R$#k6oiE{9#}H-!NeFn03fR%vW z(hG|&l?PW<3lu{DY^1LJc8D8*5D1|*ND~~S9n&Y};VJiMl!^v>LuOv~OYgsW?DSEY zOz!bhFu@BZ&s)E8t$$*7nZbj{56yaXjzX;kfwLnCARH?j(5v6uYc@tkMAqA_=W|bg z^8I_|rs9y`WR)TULR?|0EHuS9oFYQFt0plHSS*6(t-iLl`~1=19dr{K7TRAId8tDT+QeA>5 z>)deeEQ8CQTlvi|-?p}@`~$+`jIq-;u6{wraohL4x&OpojK!d!9zA;8kFnsnMig!7 z7vI9@vXg6iz`Z}Jvy(Vrb5Qb z@_)L>iz3%KMM1Ayx30sBKG?JKjSpU9IZ3vA6DXQqwQ$8h9$8acZ`%Cn+F#E6z|ahY zl*?toSfpr|UMEcp;_e^bYIJrhsyaROH2Txu&HGB1*+e`HC2eJ$o+ZSWVN!0thDV&xD{z-EfQ> z$2dcwp1NEa>-2kygAks&kah36O*W_NqxJ7i`qRX}Z+^C}p^<{rCnX!GamT%xlrvkpSq(BpoFQA61HY$>S^QWQrB5=DnjH$th< zd5DhC4ZG%0LSTriRVtBj!6~VWSyo91s;eu&L{O{ZXj)cY zekeG&heo4snrZ+5l@&+I$`85U1c8u_iyQy*nHrm|!S5(EM!2^je)ltvGc+~of$_`d zESWv-UYoK97M*T5%c!;5Z>H7}vlb$US1b)M+7keeAezt#m zX2JPRri>|y5kC@=Bhk92WPREkM0>@zYZDmb+xz!dNXsHI9Q(p2d(75)0Dz2T5cUzp z@WJ5QpS{nvp*1@X3Q}*bdD-Tu-}CFIZCii-fDj~;g-7Uyb$F$S@zB0~iG*(0*cAxb z{GWZE&vus&*R~~tdByqp1pyesqlf<~IwI<9?x`wsxx}WLgD92Jy?ZaGsE*$;AtW{; zLamXS%=ziWS*xv43x#OZb@rAnN=pV`{pcM|p_F(_0LYZv$I&#s`{x~jiYK}UrVt$5 zD<$OtLOPo%SIA^>-MdT7iJOeIJNEtR`Rw9b+5pWSkLUTrXO7X7)KV*oW@e6?dLsR3 zVR>%greG2p+RtE^Lv=+wjPbCvG>HS5;n*!-Um3{Z!P*w@qZxxaMR`tV2aa@y;04zs zbN>ne*nMzEpfn&tuBhBDN+)a57G@f9 zhfT_z8lRSTEuH;fb!}y}r7|EL5MwbueoFVKQB8hZmmrE_-(&-j#vsMeyN{h}d>=HW zkTtWEn=yDg{jBsy9x`x*Mx{y5JL_~w?arQ=HzwvzooW+t7HA{J`mE~qepu(Are6d=^h#? z(WZeE^?w;z0DvG>Gi&b}gIW1GP_pmEFmy_MQf_&Tr@AFEafUm|+ZhrG!zg6jHEl&v zj9eZnQJyA*O4frA!ra^<&u4GD`Wl0$GtT-QP-_APgkiaYs#@A@NXulwDJc(zg$?Rx zBod7#AtiND&t89x2p{UXm=GlJ^%CW2f?BDRab2k8@Clk@kEJ(uLrZ-_)0fv6EUqkr z(!xOqi?{Z@rE%IaTRah6LNLp!_4@H&y z?e-1=+MNf+xLa^=>w)a4h4l#^tw2~-V+H^;c$tLP?E4G38ML&89|$2sd@=yQYIk{C zMTB6jCZSKC6(z+#8cke=%zO|>$j=u9@u$N;`_C&gK`*{L_dauT;!6%FGtC#EF<-tdEKp zeJMRc5Jj;GiPH%nCet}D5=pnm$|t<>c*HyNG|r^!ty z_L^{rS{>8B|0;}8=Yt3xh($=KRtq{k9TP$@YPHrBg51g)06;=_UDJ107;LaL-~g6X zwkH{ii5Z)px0_tK9c*YQ$jsal8#`91jA9r$A;?{@fckNja@=;aB5W49i?SIyVK+p0MPCzzjSFE0hpoX-MXbkM&7Da>LmIh z645_7;fu8^eg29N;H~AaFsMjY(QH0%wPqW7%vY;o2*FLYTW%xcMsS){T>8YDAHY^6gkid{I|ui3@`9YZ z5+uJio&%x>X^N&h`yvQJE{0JiCeBPsoYAo2uW=j|7Fk?TB&AA~ zqUf_(=kJ?19m39+XE$D^)#!WoemFnxOPjsSol5ttr-p>!l9KPr%6@Wt$Iw%}OH*8M zx1N!a!{zcY2$@cHNq1DLb&?*|+8s4@4I)Be8WqbhHP(93y@J+U?<+(=NVq%eqE%jV zjju7-GchHVQS}ZO4Aj7d6KmF>JkG}*Ee)0UOfjyF@ zJo8FrWwmFm55u)gW?_WW;-VT|h6Y>rkSoESYkc)Jq!DS0Y$!fHq7%1skV3%5JH-wn1+VpOP97foW{NAC(OXVsIT?GYb~ZE7$jz7JXXH7&Z5_KlT!3W2oBOF$H!0Z zFfL7qa4GYBqv;$)vF!(R>l*woDr^FTFisZ^08o0lH(m@TCKF#d`7S{e(B+bXl;{YF z1}4UQw{EE{(_tkbBm@-~eRux+t7dZsA;@E3w!Y3(=eusGDeJ`(rua5OsJgbc z_1}mN*QcwOiEi!hanxQ}JP!aOi0HlzZ)aUDY$3~-fxQ6$yx4Z8Db3JJYA77QBPV|Y z0O%uv17M*0qq!Q*Ag9w@V?5pT0tAHWe2-${PGHguO?!GML%a84qJ69%4G#~E2@P?Z zGHv8Z004t}^_N(42LQO7pOs%y7!%fwWh6zsDag3jLHGj*p~%~tJ{v6-M@J?39U?JG z7aF8-@9WjrCjhAE;t5in${pSpKrKiv|eLg2g z;zW!^an8u0p82G`QJk94gJoHX{xM6l-~9T$&2Aghw}+I?G$3T6qemgXa&?4|(2zc! zL0VT|Ur|*hg+W3{SZKEiBL=&Zk+ib;+S%q~7J~c7&z8Ob3}gJ|{=MNrs-7_s5)>;@ zsbZ6o?(1r`0>)x&>;wo|PyYJ1^mK_CG%Sjb-aF3oxv;Xjg`#Vz^%hQ>CrHj30|0jK z|5^}*A%-|){2y1|~{w$0(FF`NAsz=O!hh-tSC^?cTKYngax z6@v}a-8FhVmQbYP!O3&SbBpp5b)g|@Ns5&a6r@e=)pJQFdm@BXbj+BmJ~hlMFL&6x zT*A#>otizEHgc$EDMY!^tZ0>N@exG%>cDr)pIaeuB?%^|M?&f^AAVCENbVh={mFub=GRRRHn=zw5_+V%yF>gwR#r;KS;KfRW27_fjT}TJ`%s zpJ&{GLYKhH*p@k49}hOX-{6QaT^F9u7br+y%FEpL#mD-HkUsIsR@Me;HlGs*xpn|2;tN!POWVDqf%1tS1#Bc@2yzGFf<{=;o^N-_&ykn z4Ab2jenFq}@;;gmg^IT}}TitEs8<<;isk)9)TN zB*llW$2&hzRko5eO-#y{4_-vWzl0d6p<% z38iG@=jRm_Nwfi1&6zqZE%nWvTPEExp0x6Xz0oFvy3p`h_e>8+V$51+S^nZG2;syb zY5qFP(CIS!3^WjeW8=ng?)nf2VZF_ED*d8F4`fi!h|8{O7fgYL&7jV}~g?wyP~d2yG1|tseqo6c;}+G^C$9BMR#p z8ooMs(C?jmJnqN15raN^>XD+dqI(~kw_wT~PdP$6ucSQ&H7fO|uWWY)!bOqE6#I|t zU%&M=jY2l_*1lag4=JZtsm)c8#H1PFVFNsIK!?lq-EY6O|FrFc5HNCJpUq3=JDiS% zYadOCH{3Do_G*h&?ki`~gbwzbiH(fTD$36<&i7BI7C3t9C`Ge(55L{eJ*=S0Y;y^n z$>%{xSuEM++Kb-yAj2s23DZJD`ns#as5+bN+apKpcDvv7iM(*vumM{iU*h6j_dmTX zw=nm>_PvOZb~NA>@jCSUYs|*Mvu?+}7KZwV2kyQ9g-4&ZIr&cyoiWwhI(%k|V)OI% zn9SZabFgR6#R^44Q!4$3-+tpI1Vk`GOQ+ub__PTQmt*`xvkHszKiRN#)R2)5m#eiK z*HXL=TMrKj+y0NY5eiHd8USGX7au(K@>3iQmfSroEiSUd>oFEA)=N$F5rUEpb5*J+ z4}FD|mERuv)#dUtCqoEPDC93Kp1W%1r1I+WF^eW=<)lx)``%GQMml++L;AX~@7Bf- z{`vaH{|wYJLlKGn(*}IHeoIJjNM5D!Uq{XZ2-+IaPNyj=YunZ0Y8(+hBrbjeA&6ty zgQrjD78Lj|1}~%}#=P_BVtr)9{-Xz1ZdzkBR`*XE@Z**}PF|3)OlNdLXBi|I-?Myn z`lWLnIj5ZkCOAkPwC#nrNAw>G0Qmgy*!z`y^+j_2QA&v9IEaLAF5eo(12o(N56n(D&-gAS+T zuEkUHOY)>I{`7z}z85@m+>AH=z8(NjVyxYNHmA&7$2GSZEtc$pf`5A$lyT~0!@^@3 zmy65F5JG;;8}5Dc(EJHw7K|C05E+q?d+CvvpUlioXIT!3;@9u|YiOTAPM(){y70ei zdtlaDEn}D7TUiyb5_=Diq9A;>X~%7YhqDZOskCbU*&L@JVnRIhSS&dO1$#VuP&e?w zMWzIV+T7@)y&Dn2vW&jF?wv;##YcwQ9QGHtY}&SayG*9=Y)i8D-7kjr8RQa#wl+rb zi7xNMdN%X?tS26@JL~~mdJO<@xf~;J8MR>I?5SfW001sm8gojGS!GoXPM#q1h4fFV z>s3~Ju*0RIs4fQmMG=cAE-q@)twSdb>1T-P&hxJKcJKK3n_VSk1sp4f6m&Z5uRpzc z?t~c*7cb}7E_H2x_5v=eD!*gVB)dHTmUaseKy+ccS5`hhX80&i<#SG1^}Bob@B96< zfB6=Mp~v4c;IV1rW5Pq-tAoW2@4x!te|CDCJ}#$y$NH_~N8jD0%|n~eWd@0Rm*SJ@ zXI5-@DzETzz|U};RA-Ml`2oi z6cP3Wp9O?G;!_l4s77;$W!R0{6*M}&k$>!L6rG2uFlF@OLe zRB1M`G@Y53ZL*j%FJC&Hai-2s=z=v;?l{L_n2F?Fk)WOdJl|)w3bM)#D+24-S{hKKah6Z$9<1OeU9p zG+SU!csX?9$iwTOG}jsfJ3$8=m>{J>wS3Of6$_S$2vLygaF6;95wJ6IEOpim+h5=M z*%pObbCXUlY!?vnF2~@0w`_QPU2j9r0Ge-LHoN`bKYz1++h&ugnv=&|a?|NFqV z8QB*gMcsfS*f7Do)2@#q+`|K^t;_x$p0X=Pb?MF}tPG)+?! z?T1(6iHu={FcPC<^l?#fBl--UGk$tp)Rlt{+S$D~u(%257ZXCP^;VO$_V~Gz$IhMj z@#y|Ks~J)>q$oF`l+U$&Zpsiwn2^T*DwOKs{cjmLaKzY=e+ml@4N_|v34VnX+?*4j zTfkChDJU(Z#stxD4;v1epRc;D2t#FzwKctq2m z->lQKJ@`W~=o^H%cpg9?3&gI(*AIVS2LDU&hjwHCEAamV00960HnNfcS=Onw00000 LNkvXXu0mjf9%N$h literal 0 HcmV?d00001 diff --git a/book/img/use_case_badge.svg b/book/img/use_case_badge.svg new file mode 100644 index 0000000..e101ce4 --- /dev/null +++ b/book/img/use_case_badge.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/book/intro.md b/book/intro.md new file mode 100644 index 0000000..080ec22 --- /dev/null +++ b/book/intro.md @@ -0,0 +1,3 @@ +# Welcome to the GeoSMART Jupyter Book! + +**GeoS**cience **MA**chine Learning **R**esources and **T**raining (GeoSMART) framework provides an educational pathway that provides a foundation in open source scientific ecosystems and progresses through general ML theory, toolkits and deployment on Cloud computing. diff --git a/book/reference/bibliography.md b/book/reference/bibliography.md new file mode 100644 index 0000000..c4375e2 --- /dev/null +++ b/book/reference/bibliography.md @@ -0,0 +1,5 @@ +# Bibliography + +```{bibliography} +:style: plain +``` diff --git a/book/reference/glossary.md b/book/reference/glossary.md new file mode 100644 index 0000000..21f704d --- /dev/null +++ b/book/reference/glossary.md @@ -0,0 +1,65 @@ +# Glossaries + +## Tools and Technology + +```{glossary} +[Binder](https://mybinder.org) + A free, public service for running reproducible interactive computing + environments. Binder is a 100% open source infrastructure that is run by + members of the Jupyter community. The underlying technology behind the Binder + project is BinderHub. + +[BinderHub](https://binderhub.readthedocs.io) + The underlying technology of mybinder.org, BinderHub is an open source tool + that utilizes a JupyterHub`= in order to provide live, reproducible + interactive computing environments that users define on GitHub. + +[Conda](https://docs.conda.io) + Package, dependency and environment management for any language—Python, R, + Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN, and more. + +[Docker](https://www.docker.com) + Docker provides the ability to package and run an application in a loosely + isolated environment called a container. It is widely used for creating + reproducible software environments to run code on different computers. + +[Git](https://git-scm.com) + A popular version control system that is used in many open source software + projects to manage their software code base. + +[GitHub](https://github.com) + Provider of Internet hosting for software development and distributed version + control using the "git" command line tool. + +[Project Jupyter](https://jupyter.org) + Project Jupyter (name derived from "JUlia PYThon and R") exists to develop + open-source software, open-standards, and services for interactive computing + across dozens of programming languages. + +[Jupyter Book](https://jupyterbook.org/intro.html) + Jupyter Book is an open source project for building beautiful, + publication-quality books and documents from computational material. + +[JupyterHub](https://jupyterhub.readthedocs.io) + A core open source tool from the Jupyter community, JupyterHub allows you to + deploy an application that provides remote data science environments to + multiple users. It can be deployed in the cloud, or on your own hardware. + +[JupyterLab](https://jupyterlab.readthedocs.io) + JupyterLab is the next-generation web-based user interface for Project Jupyter + intended to replace the JupyterNotebook interface. + +[Jupyter Notebook](https://jupyterbook.org) + open-source web application that allows you to create and share documents that + contain live code, equations, visualizations and narrative text. + +[MyST](https://myst-parser.readthedocs.io) + Markedly Structured Text (MyST) is a rich and extensible flavor of Markdown + meant for technical documentation and publishing. It is used by Jupyter Book. + +``` + +## Topical (Use Case Specific) +```{glossary} +< TODO: Fill Out > +``` \ No newline at end of file diff --git a/book/references.bib b/book/references.bib new file mode 100644 index 0000000..926a685 --- /dev/null +++ b/book/references.bib @@ -0,0 +1,33 @@ +@article {Huppenkothen2018, +author = {Huppenkothen, Daniela and Arendt, Anthony and Hogg, David W. and Ram, Karthik and VanderPlas, Jacob T. and Rokem, Ariel}, +title = {Hack weeks as a model for data science education and collaboration}, +volume = {115}, +number = {36}, +pages = {8872--8877}, +year = {2018}, +doi = {10.1073/pnas.1717196115}, +publisher = {National Academy of Sciences}, +issn = {0027-8424}, +journal = {Proceedings of the National Academy of Sciences} +} + +@article{huppenkothen_entrofy_2020, + title = {Entrofy your cohort: {A} transparent method for diverse cohort selection}, + volume = {15}, + issn = {1932-6203}, + shorttitle = {Entrofy your cohort}, + url = {https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0231939}, + doi = {10.1371/journal.pone.0231939}, + abstract = {Selecting a cohort from a set of candidates is a common task within and beyond academia. Admitting students, awarding grants, and choosing speakers for a conference are situations where human biases may affect the selection of any particular candidate, and, thereby the composition of the final cohort. In this paper, we propose a new algorithm, entrofy, designed to be part of a human-in-the-loop decision making strategy aimed at making cohort selection as just, transparent, and accountable as possible. We suggest embedding entrofy in a two-step selection procedure. During a merit review, the committee selects all applicants, submissions, or other entities that meet their merit-based criteria. This often yields a cohort larger than the admissible number. In the second stage, the target cohort can be chosen from this meritorious pool via a new algorithm and software tool called entrofy. entrofy optimizes differences across an assignable set of categories selected by the human committee. Criteria could include academic discipline, home country, experience with certain technologies, or other quantifiable characteristics. The entrofy algorithm then yields the approximation of pre-defined target proportions for each category by solving the tie-breaking problem with provable performance guarantees. We show how entrofy selects cohorts according to pre-determined characteristics in simulated sets of applications and demonstrate its use in a case study of Astro Hack Week. This two stage candidate and cohort selection process allows human judgment and debate to guide the assessment of candidates’ merit in step 1. Then the human committee defines relevant diversity criteria which will be used as computational parameters in entrofy. Once the parameters are defined, the set of candidates who meet the minimum threshold for merit are passed through the entrofy cohort selection procedure in step 2 which yields a cohort of a composition as close as possible to the computational parameters defined by the committee. This process has the benefit of separating the meritorious assessment of candidates from certain elements of their diversity and from some considerations around cohort composition. It also increases the transparency and auditability of the process, which enables, but does not guarantee, fairness. Splitting merit and diversity considerations into their own assessment stages makes it easier to explain why a given candidate was selected or rejected, though it does not eliminate the possibility of objectionable bias.}, + language = {en}, + number = {7}, + urldate = {2021-01-04}, + journal = {PLOS ONE}, + author = {Huppenkothen, Daniela and McFee, Brian and Norén, Laura}, + month = jul, + year = {2020}, + note = {Publisher: Public Library of Science}, + keywords = {Algorithms, Careers, Culture, Decision making, Employment, Human learning, Statistical distributions, Workshops}, + pages = {e0231939}, + file = {Snapshot:C\:\\Users\\arend\\Zotero\\storage\\CYPGLSAA\\article.html:text/html}, +} diff --git a/conda/README.md b/conda/README.md new file mode 100644 index 0000000..ebad34f --- /dev/null +++ b/conda/README.md @@ -0,0 +1,30 @@ +# Environment Management + +Environment management is crucial to reproducibility of work and for making your work runnable in hosted containers such as through Binder or Collab. This folder should be used for keeping track of your dependencies. We STRONGLY advise that you use some kind of dependency manager and not just pip install stuff locally! + +If you would prefer to work with something other than conda environments, be sure to check out [this](https://mybinder.readthedocs.io/en/latest/using/config_files.html#config-files) page on what kind of files can be used to configure a Binder environment. If you choose to go with a conda environment, then the only file that needs to be edited is `conda/environment.yml`. However if you use anything else some extra setup is going to be required. This is because Binder checks the root folder and the `binder` folder for configuration files. The `binder` folder already contains a symlink pointing to `conda/environment.yml`, but if you choose to use say, `conda/requirements.txt` instead you will need a symlink pointing to that file from the `binder` folder instead. + +To create a symlink on windows, use the command `mklink`, of the form `mklink {link_path} {relative_path}`. As an example, the following command is how the existing binder symlink was created: +``` +mklink binder\environment.yml ..\conda\environment.yml +``` + +Although we refer to "conda" environments, we recommend using [mamba](https://github.com/mamba-org/mamba) as a drop in replacement for the `conda` package manager. Mamba performs operations in parallel, which we've found to be faster for creating complex environments involving many packages! + +**The only file you should need to edit in this folder is `conda/environment.yml`. This file defines the set of conda-packages needed to render the full website.** + +``` +conda env create --name geosmart --file=environment.yml +conda activate geosmart +conda env update --file environment.yml --prune +``` + +Lockfiles ensure that everyone working on this project has an identical development environment, whether working on a personal computer or running on our hosted JupyterHub cloud infrastructure. + +If you edit `conda/environment.yml` to change package versions or add new ones, be sure to _re-lock_ the environment by running `./lock-environment.sh`: + +``` +mamba remove --name geosmart --all +mamba env create --name geosmart --file conda-linux-64.lock.yml +mamba activate geosmart +``` diff --git a/conda/conda-linux-64.lock.yml b/conda/conda-linux-64.lock.yml new file mode 100644 index 0000000..ce3e613 --- /dev/null +++ b/conda/conda-linux-64.lock.yml @@ -0,0 +1,168 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 155a9c99b7917806d1d560d872f5002fd8cf0716cbb6816fada0b9ced170a32c + +channels: + - conda-forge +dependencies: + - _libgcc_mutex=0.1=conda_forge + - ca-certificates=2022.5.18.1=ha878542_0 + - ld_impl_linux-64=2.36.1=hea4e1c9_2 + - libstdcxx-ng=12.1.0=ha89aaad_16 + - pandoc=2.18=ha770c72_0 + - tzdata=2022a=h191b570_0 + - libgomp=12.1.0=h8d9b700_16 + - _openmp_mutex=4.5=2_gnu + - libgcc-ng=12.1.0=h8d9b700_16 + - bzip2=1.0.8=h7f98852_4 + - libffi=3.4.2=h7f98852_5 + - libnsl=2.0.0=h7f98852_0 + - libsodium=1.0.18=h36c2ea0_1 + - libuuid=2.32.1=h7f98852_1000 + - libzlib=1.2.12=h166bdaf_0 + - ncurses=6.3=h27087fc_1 + - openssl=1.1.1o=h166bdaf_0 + - xz=5.2.5=h516909a_1 + - yaml=0.2.5=h7f98852_2 + - readline=8.1.2=h0f457ee_0 + - tk=8.6.12=h27826a3_0 + - zeromq=4.3.4=h9c3ff4c_1 + - zlib=1.2.12=h166bdaf_0 + - sqlite=3.38.5=h4ff8645_0 + - python=3.10.5=h582c2e5_0_cpython + - alabaster=0.7.12=py_0 + - attrs=21.4.0=pyhd8ed1ab_0 + - backcall=0.2.0=pyh9f0ad1d_0 + - backports=1.0=py_2 + - charset-normalizer=2.0.12=pyhd8ed1ab_0 + - colorama=0.4.4=pyh9f0ad1d_0 + - dataclasses=0.8=pyhc8e2a94_3 + - decorator=5.1.1=pyhd8ed1ab_0 + - defusedxml=0.7.1=pyhd8ed1ab_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - executing=0.8.3=pyhd8ed1ab_0 + - flit-core=3.7.1=pyhd8ed1ab_0 + - idna=3.3=pyhd8ed1ab_0 + - imagesize=1.3.0=pyhd8ed1ab_0 + - ipython_genutils=0.2.0=py_1 + - jupyterlab_widgets=1.1.0=pyhd8ed1ab_0 + - nest-asyncio=1.5.5=pyhd8ed1ab_0 + - pandocfilters=1.5.0=pyhd8ed1ab_0 + - parso=0.8.3=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - prometheus_client=0.14.1=pyhd8ed1ab_0 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - pycparser=2.21=pyhd8ed1ab_0 + - pyparsing=3.0.9=pyhd8ed1ab_0 + - python-fastjsonschema=2.15.3=pyhd8ed1ab_0 + - python_abi=3.10=2_cp310 + - pytz=2022.1=pyhd8ed1ab_0 + - send2trash=1.8.0=pyhd8ed1ab_0 + - shellingham=1.4.0=pyh44b312d_0 + - six=1.16.0=pyh6c4a22f_0 + - smmap=3.0.5=pyh44b312d_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.3.1=pyhd8ed1ab_0 + - sphinxcontrib-applehelp=1.0.2=py_0 + - sphinxcontrib-devhelp=1.0.2=py_0 + - sphinxcontrib-htmlhelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-jsmath=1.0.1=py_0 + - sphinxcontrib-qthelp=1.0.3=py_0 + - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2 + - toml=0.10.2=pyhd8ed1ab_0 + - traitlets=5.2.2.post1=pyhd8ed1ab_0 + - typing_extensions=4.2.0=pyha770c72_1 + - uc-micro-py=1.0.1=pyhd8ed1ab_0 + - webencodings=0.5.1=py_1 + - websocket-client=1.3.2=pyhd8ed1ab_0 + - zipp=3.8.0=pyhd8ed1ab_0 + - asttokens=2.0.5=pyhd8ed1ab_0 + - babel=2.10.2=pyhd8ed1ab_0 + - beautifulsoup4=4.11.1=pyha770c72_0 + - certifi=2022.5.18.1=py310hff52083_0 + - cffi=1.15.0=py310h0fdd8cc_0 + - click=8.1.3=py310hff52083_0 + - debugpy=1.6.0=py310hd8f1fbe_0 + - docutils=0.17.1=py310hff52083_2 + - gitdb=4.0.9=pyhd8ed1ab_0 + - greenlet=1.1.2=py310hd8f1fbe_2 + - importlib-metadata=4.11.4=py310hff52083_0 + - importlib_resources=5.7.1=pyhd8ed1ab_1 + - jedi=0.18.1=py310hff52083_1 + - jupyter_core=4.10.0=py310hff52083_0 + - latexcodec=2.0.1=pyh9f0ad1d_0 + - linkify-it-py=1.0.3=pyhd8ed1ab_0 + - markdown-it-py=1.1.0=pyhd8ed1ab_0 + - markupsafe=2.1.1=py310h5764c6d_1 + - matplotlib-inline=0.1.3=pyhd8ed1ab_0 + - mistune=0.8.4=py310h6acc77f_1005 + - packaging=21.3=pyhd8ed1ab_0 + - pexpect=4.8.0=pyh9f0ad1d_2 + - psutil=5.9.1=py310h5764c6d_0 + - pyrsistent=0.18.1=py310h5764c6d_1 + - pysocks=1.7.1=py310hff52083_5 + - python-dateutil=2.8.2=pyhd8ed1ab_0 + - pyyaml=6.0=py310h5764c6d_4 + - pyzmq=23.1.0=py310h330234f_0 + - setuptools=62.3.4=py310hff52083_0 + - sniffio=1.2.0=py310hff52083_3 + - tinycss2=1.1.1=pyhd8ed1ab_0 + - tornado=6.1=py310h5764c6d_3 + - anyio=3.6.1=py310hff52083_0 + - argon2-cffi-bindings=21.2.0=py310h5764c6d_2 + - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 + - bleach=5.0.0=pyhd8ed1ab_0 + - brotlipy=0.7.0=py310h5764c6d_1004 + - click-log=0.3.2=pyh9f0ad1d_0 + - cryptography=37.0.2=py310h597c629_0 + - gitpython=3.1.27=pyhd8ed1ab_0 + - jinja2=3.1.2=pyhd8ed1ab_1 + - jsonschema=3.2.0=pyhd8ed1ab_3 + - jupyter_client=7.3.4=pyhd8ed1ab_0 + - mdit-py-plugins=0.2.8=pyhd8ed1ab_0 + - pybtex=0.24.0=pyhd8ed1ab_2 + - pygments=2.12.0=pyhd8ed1ab_0 + - sqlalchemy=1.4.37=py310h5764c6d_0 + - stack_data=0.2.0=pyhd8ed1ab_0 + - terminado=0.15.0=py310hff52083_0 + - argon2-cffi=21.3.0=pyhd8ed1ab_0 + - click-completion=0.5.2=py310hff52083_3 + - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 + - nbformat=5.4.0=pyhd8ed1ab_0 + - pybtex-docutils=1.0.2=py310hff52083_1 + - pyopenssl=22.0.0=pyhd8ed1ab_0 + - wcwidth=0.2.5=pyh9f0ad1d_2 + - jupytext=1.13.8=pyh4b9bcc7_0 + - nbclient=0.5.13=pyhd8ed1ab_0 + - prompt-toolkit=3.0.29=pyha770c72_0 + - urllib3=1.26.9=pyhd8ed1ab_0 + - ipython=8.4.0=py310hff52083_0 + - nbconvert-core=6.5.0=pyhd8ed1ab_0 + - requests=2.28.0=pyhd8ed1ab_0 + - ipykernel=6.13.1=py310hfdc917e_0 + - jupyter_server=1.17.1=pyhd8ed1ab_0 + - nbconvert-pandoc=6.5.0=pyhd8ed1ab_0 + - sphinx=4.5.0=pyh6c4a22f_0 + - jupyter-server-mathjax=0.2.5=pyhc268e32_0 + - myst-parser=0.15.2=pyhd8ed1ab_0 + - nbconvert=6.5.0=pyhd8ed1ab_0 + - pydata-sphinx-theme=0.8.1=pyhd8ed1ab_0 + - sphinx-comments=0.0.3=pyh9f0ad1d_0 + - sphinx-copybutton=0.5.0=pyhd8ed1ab_0 + - sphinx-design=0.1.0=pyhd8ed1ab_0 + - sphinx-external-toc=0.2.4=pyhd8ed1ab_0 + - sphinx-jupyterbook-latex=0.4.6=pyhd8ed1ab_0 + - sphinx-multitoc-numbering=0.1.3=pyhd8ed1ab_0 + - sphinx-thebe=0.1.2=pyhd8ed1ab_0 + - sphinx-togglebutton=0.3.1=pyhd8ed1ab_0 + - sphinxcontrib-bibtex=2.4.2=pyhd8ed1ab_0 + - nbdime=3.1.1=pyhd8ed1ab_0 + - notebook=6.4.12=pyha770c72_0 + - sphinx-book-theme=0.3.2=pyhd8ed1ab_0 + - jupyter-cache=0.4.3=pyhd8ed1ab_0 + - widgetsnbextension=3.6.0=py310hff52083_0 + - ipywidgets=7.7.0=pyhd8ed1ab_0 + - jupyter-sphinx=0.3.2=pyhd8ed1ab_1 + - myst-nb=0.13.2=pyhd8ed1ab_0 + - jupyter-book=0.13.0=pyhd8ed1ab_0 diff --git a/conda/conda-lock.yml b/conda/conda-lock.yml new file mode 100644 index 0000000..1e64ada --- /dev/null +++ b/conda/conda-lock.yml @@ -0,0 +1,4471 @@ +# This lock file was generated by conda-lock (https://github.com/conda-incubator/conda-lock). DO NOT EDIT! +# +# A "lock file" contains a concrete list of package versions (with checksums) to be installed. Unlike +# e.g. `conda env create`, the resulting environment will not change as new package versions become +# available, unless you explicitly update the lock file. +# +# Install this environment as "YOURENV" with: +# conda-lock install -n YOURENV --file conda-lock.yml +# To update a single package to the latest version compatible with the version constraints in the source: +# conda-lock lock --lockfile conda-lock.yml --update PACKAGE +# To re-solve the entire environment, e.g. after changing a version constraint in the source file: +# conda-lock -f environment.yml --lockfile conda-lock.yml +metadata: + channels: + - url: conda-forge + used_env_vars: [] + content_hash: + linux-64: 155a9c99b7917806d1d560d872f5002fd8cf0716cbb6816fada0b9ced170a32c + osx-64: 144c1aff3d186a22267fde83238c2c1d2709d1683e4d514907386bad21f58279 + platforms: + - linux-64 + - osx-64 + sources: + - environment.yml +package: +- category: main + dependencies: {} + hash: + md5: d7c89558ba9fa0495403155b64376d81 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + manager: conda + name: _libgcc_mutex + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + version: '0.1' +- category: main + dependencies: {} + hash: + md5: 352e93bbe1d604002b11bbcf425bf866 + sha256: bb28f81d8dd75c36c216dfc6a337d901a1124f506eca9475071dbd986dd66538 + manager: conda + name: ca-certificates + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2 + version: 2022.5.18.1 +- category: main + dependencies: {} + hash: + md5: bd4f2e711b39af170e7ff15163fe87ee + sha256: ad7985a9ff622880cf87c42db1ffe2dfb040d8175c1bb352fc8f3705c7e0962f + manager: conda + name: ld_impl_linux-64 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2 + version: 2.36.1 +- category: main + dependencies: {} + hash: + md5: 6f5ba041a41eb102a1027d9e68731be7 + sha256: c2483256b324253599bdbe6ddb4a04f7a154259473e626aacbfdee7686a994d2 + manager: conda + name: libstdcxx-ng + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2 + version: 12.1.0 +- category: main + dependencies: {} + hash: + md5: 518b07342786b362238d22f76789ed59 + sha256: ade6601174f4e3193ec7458f9d4f5075bb457238134339590c3b6432f1ca40f8 + manager: conda + name: pandoc + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.18-ha770c72_0.tar.bz2 + version: '2.18' +- category: main + dependencies: {} + hash: + md5: 84be5301069417a2221187d2f435e0f7 + sha256: 74d8c1fbccae1a78c9bd2b2d1cda73df425cc28717a637198c23bd1c9b53b60e + manager: conda + name: tzdata + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2 + version: 2022a +- category: main + dependencies: + _libgcc_mutex: 0.1 conda_forge + hash: + md5: f013cf7749536ce43d82afbffdf499ab + sha256: 499fab15d3897a7bf7a1d82dd44c76dad1ceeaec0b71e348e77fb8a753ff898d + manager: conda + name: libgomp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2 + version: 12.1.0 +- category: main + dependencies: + _libgcc_mutex: 0.1 conda_forge + libgomp: '>=7.5.0' + hash: + md5: 73aaf86a425cc6e73fcf236a5a46396d + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + manager: conda + name: _openmp_mutex + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + version: '4.5' +- category: main + dependencies: + _libgcc_mutex: 0.1 conda_forge + _openmp_mutex: '>=4.5' + hash: + md5: 4f05bc9844f7c101e6e147dab3c88d5c + sha256: 2fde3d9f0199bf4f5447b35d3fd74d058c17ef2b6c68815eb1b469f2aec138b9 + manager: conda + name: libgcc-ng + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2 + version: 12.1.0 +- category: main + dependencies: + libgcc-ng: '>=9.3.0' + hash: + md5: a1fd65c7ccbf10880423d82bca54eb54 + sha256: cb521319804640ff2ad6a9f118d972ed76d86bea44e5626c09a13d38f562e1fa + manager: conda + name: bzip2 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 + version: 1.0.8 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + hash: + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + manager: conda + name: libffi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + version: 3.4.2 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + hash: + md5: 39b1328babf85c7c3a61636d9cd50206 + sha256: 32f4fb94d99946b0dabfbbfd442b25852baf909637f2eed1ffe3baea15d02aad + manager: conda + name: libnsl + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2 + version: 2.0.0 +- category: main + dependencies: + libgcc-ng: '>=7.5.0' + hash: + md5: c3788462a6fbddafdb413a9f9053e58d + sha256: 53da0c8b79659df7b53eebdb80783503ce72fb4b10ed6e9e05cc0e9e4207a130 + manager: conda + name: libsodium + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2 + version: 1.0.18 +- category: main + dependencies: + libgcc-ng: '>=9.3.0' + hash: + md5: 772d69f030955d9646d3d0eaf21d859d + sha256: 54f118845498353c936826f8da79b5377d23032bcac8c4a02de2019e26c3f6b3 + manager: conda + name: libuuid + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 + version: 2.32.1 +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 6c06394781511bdc3c37512ed7b16730 + sha256: 0b05a169613a5596f1947b6ddd6065a28685016fd9869c736bbcd5c82ce515fa + manager: conda + name: libzlib + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_0.tar.bz2 + version: 1.2.12 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + hash: + md5: 4acfc691e64342b9dae57cf2adc63238 + sha256: b801e8cf4b2c9a30bce5616746c6c2a4e36427f045b46d9fc08a4ed40a9f7065 + manager: conda + name: ncurses + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2 + version: '6.3' +- category: main + dependencies: + ca-certificates: '' + libgcc-ng: '>=10.3.0' + hash: + md5: 6172048796b123e542945d998f5150b7 + sha256: 83220dba1fa87708e7af3bd4d3c5eb295ed370d3c4177647978d67c96af668be + manager: conda + name: openssl + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2 + version: 1.1.1o +- category: main + dependencies: + libgcc-ng: '>=7.5.0' + hash: + md5: 33f601066901f3e1a85af3522a8113f9 + sha256: 1e2823cb2a526bc3a7031ad5dbfb992891f9ff9740d1c17cb6dbb8ebdfd33b27 + manager: conda + name: xz + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2 + version: 5.2.5 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + hash: + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + manager: conda + name: yaml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + libgcc-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + hash: + md5: db2ebbe2943aae81ed051a6a9af8e0fa + sha256: f5f383193bdbe01c41cb0d6f99fec68e820875e842e6e8b392dbe1a9b6c43ed8 + manager: conda + name: readline + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2 + version: 8.1.2 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + libzlib: '>=1.2.11,<1.3.0a0' + hash: + md5: 5b8c42eb62e9fc961af70bdd6a26e168 + sha256: 032fd769aad9d4cad40ba261ab222675acb7ec951a8832455fce18ef33fa8df0 + manager: conda + name: tk + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2 + version: 8.6.12 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + libsodium: '>=1.0.18,<1.0.19.0a0' + libstdcxx-ng: '>=9.4.0' + hash: + md5: 21743a8d2ea0c8cfbbf8fe489b0347df + sha256: 525315b0df21866d4c3d68bc2ff987d26c2fdf0e3e8fd242c49b7255adef04c6 + manager: conda + name: zeromq + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2 + version: 4.3.4 +- category: main + dependencies: + libgcc-ng: '>=12' + libzlib: 1.2.12 h166bdaf_0 + hash: + md5: c6b89248778ae9a05320f19eb212ad90 + sha256: dc05bb807ce08b14d5ce6dd8b6789bb72388f224b8b9bd4ad85e585596bb44d9 + manager: conda + name: zlib + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_0.tar.bz2 + version: 1.2.12 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + libzlib: '>=1.2.11,<1.3.0a0' + ncurses: '>=6.3,<7.0a0' + readline: '>=8.1,<9.0a0' + zlib: '>=1.2.11,<1.3.0a0' + hash: + md5: a1448f0c31baec3946d2dcf09f905c9e + sha256: 5c1ccc6c076c3b9a6463e7784b934870142e2a630b504c5a1a4c9cbdb645884d + manager: conda + name: sqlite + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2 + version: 3.38.5 +- category: main + dependencies: + bzip2: '>=1.0.8,<2.0a0' + ld_impl_linux-64: '>=2.36.1' + libffi: '>=3.4.2,<3.5.0a0' + libgcc-ng: '>=12' + libnsl: '>=2.0.0,<2.1.0a0' + libuuid: '>=2.32.1,<3.0a0' + libzlib: '>=1.2.12,<1.3.0a0' + ncurses: '>=6.3,<7.0a0' + openssl: '>=1.1.1o,<1.1.2a' + readline: '>=8.1.2,<9.0a0' + sqlite: '>=3.38.5,<4.0a0' + tk: '>=8.6.12,<8.7.0a0' + tzdata: '' + xz: '>=5.2.5,<5.3.0a0' + hash: + md5: ccbed83043b9b7b5693164591317f327 + sha256: 4ed095f50321cfc9d60080e9f68c8cd185ca2b61616d8bd11ef038e8cc32d9b0 + manager: conda + name: python + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.5-h582c2e5_0_cpython.tar.bz2 + version: 3.10.5 +- category: main + dependencies: + python: '' + hash: + md5: 2489a97287f90176ecdc3ca982b4b0a0 + sha256: 662690cace8f8a3e1358d01ddb8c019bf70ddfccd250220a6a488efc93ea5baf + manager: conda + name: alabaster + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2 + version: 0.7.12 +- category: main + dependencies: + python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' + hash: + md5: f70280205d7044c8b8358c8de3190e5d + sha256: 79cc289deb95b30d4bdedbba5d5dbdcd0ed95b3c306757dc1f83d9164f0c2d88 + manager: conda + name: attrs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2 + version: 21.4.0 +- category: main + dependencies: + python: '' + hash: + md5: 6006a6d08a3fa99268a2681c7fb55213 + sha256: ee62d6434090c1327a48551734e06bd10e65a64ef7f3b6e68719500dab0e42b9 + manager: conda + name: backcall + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + python: '' + hash: + md5: 0da16b293affa6ac31812376f8eb79dd + sha256: a584e690dbb042779af83abaa87a54764278c0a53bf5256ff8f5b0f0061ac283 + manager: conda + name: backports + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2 + version: '1.0' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 1f5b32dabae0f1893ae3283dac7f799e + sha256: 30484cbce01cd7c0e660e4549c95a417c09aa98f6270616adc2530dccf16fb96 + manager: conda + name: charset-normalizer + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2 + version: 2.0.12 +- category: main + dependencies: + python: '' + hash: + md5: c08b4c1326b880ed44f3ffb04803332f + sha256: ddf1749f0fd5a098a7954d98267cebca83a36b86719ce4ab6fc4aa94ef518432 + manager: conda + name: colorama + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 + version: 0.4.4 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: a362b2124b06aad102e2ee4581acee7d + sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92 + manager: conda + name: dataclasses + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2 + version: '0.8' +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 43afe5ab04e35e17ba28649471dd7364 + sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 + manager: conda + name: decorator + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + version: 5.1.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 961b3a227b437d82ad7054484cfa71b2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + manager: conda + name: defusedxml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + version: 0.7.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 3cf04868fee0a029769bd41f4b2fbf2d + sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af + manager: conda + name: entrypoints + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + version: '0.4' +- category: main + dependencies: + python: '>=2.7' + hash: + md5: 8d70f4543c1f701b946f85e9f9a00800 + sha256: 5cca228b0af8825cd18f43eaba689825392a20976541f36d6ed71d620a4a0833 + manager: conda + name: executing + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/executing-0.8.3-pyhd8ed1ab_0.tar.bz2 + version: 0.8.3 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: f93822cba5c20161560661988a88f2c0 + sha256: f56157ce4b55ef46a4fa4fe875703468e362b983099f864b740fd99aa80bbdbb + manager: conda + name: flit-core + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/flit-core-3.7.1-pyhd8ed1ab_0.tar.bz2 + version: 3.7.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 40b50b8b030f5f2f22085c062ed013dd + sha256: d697b7db5194d5248850b57fd313ecbb29bba9aaab0346ee55816589afbd1d0e + manager: conda + name: idna + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2 + version: '3.3' +- category: main + dependencies: + python: '>=3.4' + hash: + md5: be807e7606fff9436e5e700f6bffb7c6 + sha256: 30e06a54ef5d9584e14c0a70a21946b2ffcf58729fe8ff54226ad6f3bd7f298b + manager: conda + name: imagesize + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2 + version: 1.3.0 +- category: main + dependencies: + python: '' + hash: + md5: 5071c982548b3a20caf70462f04f5287 + sha256: 0fafbc60209f1d8c0b89a2f79f3ff0f7bc45589a23da1d2e5cc55bcca906707b + manager: conda + name: ipython_genutils + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: e963a4a39cf442dbe5503f66edda083d + sha256: f3d3b55d1cfa9d57b014cb1a1a32f49a55fb0dc720c1107362e7f97bfd8e49bd + manager: conda + name: jupyterlab_widgets + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.0-pyhd8ed1ab_0.tar.bz2 + version: 1.1.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: dc36c992aec485c0efff619ed2e63957 + sha256: adefa33879e35375ec8cae910af6823534056900ff3a90c0c1ef8ffaab5b0d8a + manager: conda + name: nest-asyncio + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.5-pyhd8ed1ab_0.tar.bz2 + version: 1.5.5 +- category: main + dependencies: + python: '!=3.0,!=3.1,!=3.2,!=3.3' + hash: + md5: 457c2c8c08e54905d6954e79cb5b5db9 + sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f + manager: conda + name: pandocfilters + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + version: 1.5.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 17a565a0c3899244e938cdf417e7b094 + sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4 + manager: conda + name: parso + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2 + version: 0.8.3 +- category: main + dependencies: + python: '>=3' + hash: + md5: 415f0ebb6198cc2801c73438a9fb5761 + sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 + manager: conda + name: pickleshare + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + version: 0.7.5 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: b7fa7d86530b8de805268e48988eb483 + sha256: 66d41fd720b39faad502ea4f67cf70c797ff4a4c5bc01fef536a0880e882713e + manager: conda + name: prometheus_client + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 + version: 0.14.1 +- category: main + dependencies: + python: '' + hash: + md5: 359eeb6536da0e687af562ed265ec263 + sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a + manager: conda + name: ptyprocess + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + version: 0.7.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 6784285c7e55cb7212efabc79e4c2883 + sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44 + manager: conda + name: pure_eval + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 + version: 0.2.2 +- category: main + dependencies: + python: 2.7.*|>=3.4 + hash: + md5: 076becd9e05608f8dc72757d5f3a91ff + sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc + manager: conda + name: pycparser + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 + version: '2.21' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: e8fbc1b54b25f4b08281467bc13b70cc + sha256: 4acc7151cef5920d130f2e0a7615559cce8bfb037aeecb14d4d359ae3d9bc51b + manager: conda + name: pyparsing + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2 + version: 3.0.9 +- category: main + dependencies: + python: '>=3.3' + hash: + md5: fae309d1cc996da1f63de9d321e65e27 + sha256: f63f583a384576a7db573016cf726ba961c11700636206d1a09e8dff6120aca3 + manager: conda + name: python-fastjsonschema + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.15.3-pyhd8ed1ab_0.tar.bz2 + version: 2.15.3 +- category: main + dependencies: + python: 3.10.* + hash: + md5: 9e7160cd0d865e98f6803f1fe15c8b61 + sha256: e7e52aaec7cba6e17e45d731f9d38ede007aea0d72aee66670ab71016f5783ed + manager: conda + name: python_abi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-2_cp310.tar.bz2 + version: '3.10' +- category: main + dependencies: + python: '>=3' + hash: + md5: b87d66d6d3991d988fb31510c95a9267 + sha256: 082043d171a5055d679bd01ad9f5f39125a7aef894049ce7f035bd7134dffd21 + manager: conda + name: pytz + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2 + version: '2022.1' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: edab14119efe85c3bf131ad747e9005c + sha256: 1a8e79f256e747bae4e7aefd3b06261f428f30cdd14e61fbe7bbe628b31df224 + manager: conda + name: send2trash + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2 + version: 1.8.0 +- category: main + dependencies: + python: '' + hash: + md5: 437655338696f9d0dfdb0a024e66b255 + sha256: 7d79f4500b4267414a2bd6a08e74aedc1629feb890efec71b0480501d37f148a + manager: conda + name: shellingham + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.4.0-pyh44b312d_0.tar.bz2 + version: 1.4.0 +- category: main + dependencies: + python: '' + hash: + md5: e5f25f8dbc060e9a8d912e432202afc2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + manager: conda + name: six + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + version: 1.16.0 +- category: main + dependencies: + python: '' + hash: + md5: 3a8dc70789709aa315325d5df06fb7e4 + sha256: 091de70ee6bfe063e0c0f77336975d124fd1e3f49b9c58d97c0c7b3d287c0002 + manager: conda + name: smmap + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2 + version: 3.0.5 +- category: main + dependencies: + python: '>=2' + hash: + md5: 4d22a9315e78c6827f806065957d566e + sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 + manager: conda + name: snowballstemmer + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + version: 2.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: d821b295c4bd18ad27e1e19543a5784a + sha256: 84b3aa89dd44813d80c208d6a956ab881552da9bfc78c304b12a432406131c46 + manager: conda + name: soupsieve + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.1-pyhd8ed1ab_0.tar.bz2 + version: 2.3.1 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 20b2eaeaeea4ef9a9a0d99770620fd09 + sha256: bd7838485e34e7ec5717552f83fa4a02623ff5fb854c10f2f57080b85d13c69e + manager: conda + name: sphinxcontrib-applehelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 68e01cac9d38d0e717cd5c87bc3d2cc9 + sha256: 66cca7eccb7f92eee53f9f5a552e3e1d643daa3a1ebd03c185e2819e5c491576 + manager: conda + name: sphinxcontrib-devhelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 77dad82eb9c8c1525ff7953e0756d708 + sha256: 3c1170f3a3170e59b156e375c949db98941892850e59fa4085c437a5df0e767d + manager: conda + name: sphinxcontrib-htmlhelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8ed1ab_0.tar.bz2 + version: 2.0.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 67cd9d9c0382d37479b4d306c369a2d4 + sha256: a42415fc789e9f6ae2e18f07ac143d2e9ce73a35a55ecf1dd1b3d055dd1e6dbe + manager: conda + name: sphinxcontrib-jsmath + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2 + version: 1.0.1 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: d01180388e6d1838c3e1ad029590aa7a + sha256: 35d8f01fc798d38b72ae003c040d2dee650d315f904268a1f793d4d59460d1e2 + manager: conda + name: sphinxcontrib-qthelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2 + version: 1.0.3 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 9ff55a0901cf952f05c654394de76bf7 + sha256: 890bbf815cff114ddbb618b9876d492fce07d02956c1d7b3d46cb7f835f563f6 + manager: conda + name: sphinxcontrib-serializinghtml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2 + version: 1.1.5 +- category: main + dependencies: + python: '>=2.7' + hash: + md5: f832c45a477c78bebd107098db465095 + sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 + manager: conda + name: toml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + version: 0.10.2 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: 2b06b17ee111c3df688affbe3964a3b3 + sha256: 5c1dc557377ea61a569ef82bbe3100ecfa7cc1418f9be81692038cd210e62d33 + manager: conda + name: traitlets + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.2.2.post1-pyhd8ed1ab_0.tar.bz2 + version: 5.2.2.post1 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: f0f7e024f94e23d3bfee0ab777bf335a + sha256: d4bf2f15e9794a76a9e52f77fcdfe5d6d4ff4436d02353d3a655354376688ec8 + manager: conda + name: typing_extensions + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.2.0-pyha770c72_1.tar.bz2 + version: 4.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 3ddf6684d9b274a12c94e509ca45656c + sha256: 04b6f17a9ff2bd36f70076dd1761408de1d38c6c791849a02c3a1d28ad466d00 + manager: conda + name: uc-micro-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.1-pyhd8ed1ab_0.tar.bz2 + version: 1.0.1 +- category: main + dependencies: + python: '' + hash: + md5: 3563be4c5611a44210d9ba0c16113136 + sha256: 302f4f4bd1ad00c0be1426ecf6bb01db59cfd8aff3de0cf1596526dca1a6b70e + manager: conda + name: webencodings + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 + version: 0.5.1 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: da6f472c62b4eda0caf05e223729efcd + sha256: 58409ebd377ef1e888cac917cb4e27e5eff314be07b037a94c53c2b2a643bcea + manager: conda + name: websocket-client + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.3.2-pyhd8ed1ab_0.tar.bz2 + version: 1.3.2 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: 050b94cf4a8c760656e51d2d44e4632c + sha256: 378efc066a74d273774a30481132023ff07197241e3a85202cde512f6cf14500 + manager: conda + name: zipp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2 + version: 3.8.0 +- category: main + dependencies: + python: '>=3.5' + six: '' + hash: + md5: 74badce16f060701fee55c39332f5253 + sha256: 4da0fe03babc950532513e9165dbc337a663880352392f496992776608dd77ca + manager: conda + name: asttokens + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2 + version: 2.0.5 +- category: main + dependencies: + python: '>=3.6' + pytz: '' + hash: + md5: 8bdb046f8fa454bd4da1c48aa9e20f1d + sha256: 47cd4beb5d1f52628ebb227bb98fee68ee66a1fc70498eb29ac01a709943078e + manager: conda + name: babel + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.10.2-pyhd8ed1ab_0.tar.bz2 + version: 2.10.2 +- category: main + dependencies: + python: '>=3.6' + soupsieve: '>=1.2' + hash: + md5: eeec8814bd97b2681f708bb127478d7d + sha256: e16b4f73965c5e05896f27fd0a254576c4f65496b19eecddcd3039086ea762c8 + manager: conda + name: beautifulsoup4 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.11.1-pyha770c72_0.tar.bz2 + version: 4.11.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: cfdf8a8dda4e471ecdb196c0f34a85e0 + sha256: 01e1f00b6d1c4fd997c576f154ed8f876304afad4087c34ab472247f59605ec9 + manager: conda + name: certifi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py310hff52083_0.tar.bz2 + version: 2022.5.18.1 +- category: main + dependencies: + libffi: '>=3.4.2,<3.5.0a0' + libgcc-ng: '>=9.4.0' + pycparser: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 7b7366be82277a5a210e48cc6d25ce26 + sha256: 76cedfdb4fa71cbe85e957a04e2452a9ebb4f1ce676b4bc792fe05dbc0d36b26 + manager: conda + name: cffi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py310h0fdd8cc_0.tar.bz2 + version: 1.15.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: a09e14173c5ded52ef7917b249c9280e + sha256: b50200f56b94fab33fe5ecf095f1afb5be7c00c4bf725c4acdba98c37e6c3a33 + manager: conda + name: click + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/click-8.1.3-py310hff52083_0.tar.bz2 + version: 8.1.3 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + libstdcxx-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: f50e003135a2aa38886d12400e70341c + sha256: 9053a61eb05a02e9792e113fa0dccc353c3c4f3dd256c086668c98a2dbd96741 + manager: conda + name: debugpy + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.6.0-py310hd8f1fbe_0.tar.bz2 + version: 1.6.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 1cdb74e021e4e0b703a8c2f7cc57d798 + sha256: 13b66256ade7d50c24af38d2cbab19d1627b80538dece79d8f8ac87981cd9dc9 + manager: conda + name: docutils + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py310hff52083_2.tar.bz2 + version: 0.17.1 +- category: main + dependencies: + python: '>=3.4' + smmap: '>=3.0.1,<4' + hash: + md5: 40fc6b14a45dee3a3fd9f302d026108e + sha256: fa018c53bd1c171dccde16c4eb9dd9f3ff6b7f2d222c564d48b5516ec1ee24ec + manager: conda + name: gitdb + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.9-pyhd8ed1ab_0.tar.bz2 + version: 4.0.9 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + libstdcxx-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: f320348ab573d32d644af7a905a0c0c5 + sha256: 330a5e743a753dd61ba97db9fbbf8f3dade465c688c6d626cbcf7926c60a7fd1 + manager: conda + name: greenlet + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-1.1.2-py310hd8f1fbe_2.tar.bz2 + version: 1.1.2 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + zipp: '>=0.5' + hash: + md5: 8ea386e64531f1ecf4a5765181579e7e + sha256: 3337a7a683c4c7f21e99c8a7c7084d7c52e2e810a8117fd241e5a2ae5c141772 + manager: conda + name: importlib-metadata + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py310hff52083_0.tar.bz2 + version: 4.11.4 +- category: main + dependencies: + python: '>=3.6' + zipp: '>=3.1.0' + hash: + md5: 56567286f9f9716bea44fe9301e1b34d + sha256: 10e84635f6d5b4afb047bb1ec975dd9d32a59a91e0d3e399b5c8d2950cf88aba + manager: conda + name: importlib_resources + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.7.1-pyhd8ed1ab_1.tar.bz2 + version: 5.7.1 +- category: main + dependencies: + parso: '>=0.8.0,<0.9.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 50282bcc5bdda427342ebdbf216d8d2f + sha256: e51edffbf4278e0db7ed719334d81bcac60210d9ade7c6221f558875def7a7f6 + manager: conda + name: jedi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.1-py310hff52083_1.tar.bz2 + version: 0.18.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + traitlets: '' + hash: + md5: c3b2ddcd2541c2f41bf9fb56d184da56 + sha256: 06559b73a48a9d0154293ffcb864a4771720ab4bc065486333db3b62d286c237 + manager: conda + name: jupyter_core + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.10.0-py310hff52083_0.tar.bz2 + version: 4.10.0 +- category: main + dependencies: + python: '' + six: '' + hash: + md5: 8d67904973263afd2985ba56aa2d6bb4 + sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f + manager: conda + name: latexcodec + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 + version: 2.0.1 +- category: main + dependencies: + python: '>=3.6' + uc-micro-py: '>=1.0.1,<2.0.0' + hash: + md5: ba4b07f6a132c77eb69ede31a6ed790b + sha256: 972fbd3cc47732d593565a2e2b6a10f622f3b53ce49b54aeab9c794b3d24362c + manager: conda + name: linkify-it-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-1.0.3-pyhd8ed1ab_0.tar.bz2 + version: 1.0.3 +- category: main + dependencies: + attrs: '>=19.3,<22' + python: '>=3.6' + typing_extensions: '>=3.7.4' + hash: + md5: 84e8dfb1a9e6a824f32fd45b867271ca + sha256: dbeecee5fe7e9b936147619b16163e92b70e6547dee1a09662b277354022b286 + manager: conda + name: markdown-it-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-1.1.0-pyhd8ed1ab_0.tar.bz2 + version: 1.1.0 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: ec5a727504409ad1380fc2a84f83d002 + sha256: 68133d80ba48beb29209d604a72a150f8ae6bfb6148a26bf3d144d5c42a394c6 + manager: conda + name: markupsafe + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py310h5764c6d_1.tar.bz2 + version: 2.1.1 +- category: main + dependencies: + python: '>=3.6' + traitlets: '' + hash: + md5: be3bfd435802d2c768c6b2439f325f3d + sha256: 305be1532dfd6bf6c815b9f5104a8401f3fb9879d069881289082e13f14cfaf4 + manager: conda + name: matplotlib-inline + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab_0.tar.bz2 + version: 0.1.3 +- category: main + dependencies: + libgcc-ng: '>=9.4.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 6ca247e4e0ce3ea4156d9b528dd7ceae + sha256: 54390a183287d4235b2a3207815919c8a37a562eb0afab803e66f49c6ec38ca8 + manager: conda + name: mistune + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py310h6acc77f_1005.tar.bz2 + version: 0.8.4 +- category: main + dependencies: + pyparsing: '>=2.0.2,!=3.0.5' + python: '>=3.6' + hash: + md5: 71f1ab2de48613876becddd496371c85 + sha256: 8322a9e93e2e09fbf2103f0d37c9287b7b97387125abadd6db26686084893540 + manager: conda + name: packaging + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2 + version: '21.3' +- category: main + dependencies: + ptyprocess: '>=0.5' + python: '' + hash: + md5: 5909e7b978141dd80d28dbf9de627827 + sha256: 04eef875d461732ef22cd19bf2c989c40e73b5da625bf6a6b82ddae200e90e56 + manager: conda + name: pexpect + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 + version: 4.8.0 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: eb3be71bc11a51ff49b6a0af9968f0ed + sha256: a4949db05bad0da35942fed440007216f78b435529102c330b9f7b17ade63793 + manager: conda + name: psutil + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py310h5764c6d_0.tar.bz2 + version: 5.9.1 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: d6bf97f14e0cc9d2024cf66b11bb79b8 + sha256: 4c609a1a665b049f93d6371d1e6d9b7d0b172706e02931510abbb1c4b847938f + manager: conda + name: pyrsistent + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.18.1-py310h5764c6d_1.tar.bz2 + version: 0.18.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 378f2260e871f3ea46c6fa58d9f05277 + sha256: cb6e4821234cee05acd1996cef88e40dfc2d5ab12cf12c5b1d6ed9118f7f41a7 + manager: conda + name: pysocks + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2 + version: 1.7.1 +- category: main + dependencies: + python: '>=3.6' + six: '>=1.5' + hash: + md5: dd999d1cc9f79e67dbb855c8924c7984 + sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da + manager: conda + name: python-dateutil + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 + version: 2.8.2 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + yaml: '>=0.2.5,<0.3.0a0' + hash: + md5: 505dcf6be997e732d7a33831950dc3cf + sha256: 754b44936f5d3444c831b47582a4e096636ae3e4f38ac6c559f89cba185a5abd + manager: conda + name: pyyaml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py310h5764c6d_4.tar.bz2 + version: '6.0' +- category: main + dependencies: + libgcc-ng: '>=12' + libsodium: '>=1.0.18,<1.0.19.0a0' + libstdcxx-ng: '>=12' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + zeromq: '>=4.3.4,<4.4.0a0' + hash: + md5: 1ca521ec5b4b7e9a95f0a22d3cbb5896 + sha256: 174aae37d639c4bc4be7fdc89a8093349e9fd44c82960d74b551ef55ca3bdf20 + manager: conda + name: pyzmq + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-23.1.0-py310h330234f_0.tar.bz2 + version: 23.1.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: e7d47d081116625e1731380786a9d535 + sha256: 751a457023a8628711f90a0770a1913c41e542fdd105797d1d17d874161aa20f + manager: conda + name: setuptools + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.4-py310hff52083_0.tar.bz2 + version: 62.3.4 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: aef827c51f27a8c6613833f8f8f95f6c + sha256: 5e02d10e5e12013305f75be5961d5dba2850402c3049d968222a564284f9d9fc + manager: conda + name: sniffio + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sniffio-1.2.0-py310hff52083_3.tar.bz2 + version: 1.2.0 +- category: main + dependencies: + python: '>=3.5' + webencodings: '>=0.4' + hash: + md5: 5d280406501e79dc7aa9c9ac31d25a80 + sha256: 4da72a45b8330eb754dcdc53ecffe4e6a6d348211d979cbc15121e0d94af5f6c + manager: conda + name: tinycss2 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.1.1-pyhd8ed1ab_0.tar.bz2 + version: 1.1.1 +- category: main + dependencies: + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 8a5770e6392d29d99c9bc9c3635bba60 + sha256: 67347d4755ffbb969e581f9c0d7210490142aa7cfec15ff421b499c6dcf162aa + manager: conda + name: tornado + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2 + version: '6.1' +- category: main + dependencies: + idna: '>=2.8' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + sniffio: '>=1.1' + hash: + md5: ba4594a258a9d72157780701ab217223 + sha256: 15b6c3fe3e563cd8bccc182c0fb2dc20bf6c127b4a9c679630cc79445eead376 + manager: conda + name: anyio + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/anyio-3.6.1-py310hff52083_0.tar.bz2 + version: 3.6.1 +- category: main + dependencies: + cffi: '>=1.0.1' + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 59ccbc3a344dcf7e2f73e401e205dd7d + sha256: b5b178c8a2a02e29e616b80b792b72f7ed71738f3c59d7fdc393cea4a4ccc985 + manager: conda + name: argon2-cffi-bindings + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h5764c6d_2.tar.bz2 + version: 21.2.0 +- category: main + dependencies: + backports: '' + python: '>=3.6' + setuptools: '' + hash: + md5: c5b3edc62d6309088f4970b3eaaa65a6 + sha256: fdea00d4b79990f3fe938e2716bc32bd895eb5c44b6c75b8261db095a1b33c16 + manager: conda + name: backports.functools_lru_cache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2 + version: 1.6.4 +- category: main + dependencies: + packaging: '' + python: '>=3.6' + setuptools: '' + six: '>=1.9.0' + webencodings: '' + hash: + md5: 2a2ae7c56b8f72caba261363407b484a + sha256: 534fbfbb6f224cfd3ce91be098ee6d2a8c978135a11e9a2cd8d6c8907ccd28f3 + manager: conda + name: bleach + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-5.0.0-pyhd8ed1ab_0.tar.bz2 + version: 5.0.0 +- category: main + dependencies: + cffi: '>=1.0.0' + libgcc-ng: '>=10.3.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 6499bb11b7feffb63b26847fc9181319 + sha256: dfe6c04981a0edd1eda8398034c1c056446ecc53355058f507fc0b9f7c19dd86 + manager: conda + name: brotlipy + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1004.tar.bz2 + version: 0.7.0 +- category: main + dependencies: + click: '' + python: '' + hash: + md5: 3a64d156136fad977df1b81a24b57ac0 + sha256: 3034fe45f2c218909ce0e8b9b9ac77cce08ad25cc3de7d3668794a2c3cd7dc30 + manager: conda + name: click-log + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/click-log-0.3.2-pyh9f0ad1d_0.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + cffi: '>=1.12' + libgcc-ng: '>=10.3.0' + openssl: '>=1.1.1o,<1.1.2a' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 7b40622ed00061cc8f803c5ed3c62707 + sha256: 067801d058803edcb6c1810483a90108f26f5ad8e9f92c9a6593bb6636681803 + manager: conda + name: cryptography + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py310h597c629_0.tar.bz2 + version: 37.0.2 +- category: main + dependencies: + gitdb: '>=4.0.1,<5' + python: '>=3.7' + typing_extensions: '>=3.7.4.3' + hash: + md5: 20acbaab17a50ac9b64138eb9a0e1af8 + sha256: 6f523156cdc0f2c597ad869d10d12503143a361259d01d180769a06fbdbcc9ec + manager: conda + name: gitpython + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.27-pyhd8ed1ab_0.tar.bz2 + version: 3.1.27 +- category: main + dependencies: + markupsafe: '>=2.0' + python: '>=3.7' + hash: + md5: c8490ed5c70966d232fdd389d0dbed37 + sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5 + manager: conda + name: jinja2 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2 + version: 3.1.2 +- category: main + dependencies: + attrs: '>=17.4.0' + importlib-metadata: '' + pyrsistent: '>=0.14.0' + python: '>=3.6' + setuptools: '' + six: '>=1.11.0' + hash: + md5: 66125e28711d8ffc04a207a2b170316d + sha256: d74a3ddd3c3dd9bd7b00110a196e3af90490c5660674f18bfd53a8fdf91de418 + manager: conda + name: jsonschema + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2 + version: 3.2.0 +- category: main + dependencies: + entrypoints: '' + jupyter_core: '>=4.9.2' + nest-asyncio: '>=1.5.4' + python: '>=3.7' + python-dateutil: '>=2.8.2' + pyzmq: '>=23.0' + tornado: '>=6.0' + traitlets: '' + hash: + md5: dad80938cdccc5c274e954dda56b6eb5 + sha256: 181b36306cf9f389785c63199a14df6154583b605c86ab6c81f36c2fe57b4c9b + manager: conda + name: jupyter_client + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.3.4-pyhd8ed1ab_0.tar.bz2 + version: 7.3.4 +- category: main + dependencies: + markdown-it-py: ~=1.0 + python: '>=3.6' + hash: + md5: 49236fcd746a124eb56d326f79e1d46d + sha256: 6410ddd99136f4bb21b548f5174c01ed8ff184db402b03c5c232c7f5665cfd0c + manager: conda + name: mdit-py-plugins + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.2.8-pyhd8ed1ab_0.tar.bz2 + version: 0.2.8 +- category: main + dependencies: + latexcodec: '>=1.0.4' + python: '>=3.6' + pyyaml: '>=3.01' + setuptools: '' + six: '' + hash: + md5: 2099b86a7399c44c0c61cdb6de6915ba + sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc + manager: conda + name: pybtex + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2 + version: 0.24.0 +- category: main + dependencies: + python: '>=3.6' + setuptools: '' + hash: + md5: cb27e2ded147e5bcc7eafc1c6d343cb3 + sha256: 682de96d5c7be7a6223ea2a26f71d45cf4864a84b185b1c2e6d42975fa53d024 + manager: conda + name: pygments + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2 + version: 2.12.0 +- category: main + dependencies: + greenlet: '!=0.4.17' + libgcc-ng: '>=12' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 6fe461994c1734624a5f8c4468243c03 + sha256: 596e0db8b8faa374e8f391e1bfc60a60973fea887270b66a30fce0747c335487 + manager: conda + name: sqlalchemy + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.37-py310h5764c6d_0.tar.bz2 + version: 1.4.37 +- category: main + dependencies: + asttokens: '' + executing: '' + pure_eval: '' + python: '>=3.5' + hash: + md5: 8c0ce3e6bf18a0c810125aef58a2a6f3 + sha256: 0b7fe7899afb9e226abd86b890d284b3a83f0b76853c7d429b38b345500267bb + manager: conda + name: stack_data + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.2.0-pyhd8ed1ab_0.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + ptyprocess: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + tornado: '>=6.1.0' + hash: + md5: bf6dd436deea62a55c8a47d35456894a + sha256: 2ffe26ac1d29b324a38615d619e07f9a26eaa486092d807b0ed5f4cf242aab9f + manager: conda + name: terminado + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/terminado-0.15.0-py310hff52083_0.tar.bz2 + version: 0.15.0 +- category: main + dependencies: + argon2-cffi-bindings: '' + flit-core: '>=3.4,<4' + python: '>=3.6' + hash: + md5: a0b402db58f73aaab8ee0ca1025a362e + sha256: 3a53cfd674641d9ff9901f5d4e1cc5e9a3ce9bb8b6a7dca826db840c2e39bc23 + manager: conda + name: argon2-cffi + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2 + version: 21.3.0 +- category: main + dependencies: + click: '' + jinja2: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + shellingham: '' + six: '' + hash: + md5: 44a9cf006835c4bea53fc33a6c471517 + sha256: 9a32194617335be775928347bb6cefeaf9213f33c48cce9853910ac1ed2583c6 + manager: conda + name: click-completion + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/click-completion-0.5.2-py310hff52083_3.tar.bz2 + version: 0.5.2 +- category: main + dependencies: + pygments: '>=2.4.1,<3' + python: '>=3.7' + hash: + md5: 243f63592c8e449f40cd42eb5cf32f40 + sha256: 08453e09d5a6bbaeeca839553a5dfd7a377a97550efab96019c334a8042f54f5 + manager: conda + name: jupyterlab_pygments + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2 + version: 0.2.2 +- category: main + dependencies: + jsonschema: '>=2.6' + jupyter_core: '' + python: '>=3.7' + python-fastjsonschema: '' + traitlets: '>=5.1' + hash: + md5: 770f6659243e2c79a0b8488b0e463bd1 + sha256: 2712d7e859c8fa6955118e62c4085c4d9529c615c70cfe09193ec69c7bf95f41 + manager: conda + name: nbformat + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.4.0-pyhd8ed1ab_0.tar.bz2 + version: 5.4.0 +- category: main + dependencies: + docutils: '>=0.8' + pybtex: '>=0.16' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + setuptools: '' + hash: + md5: 6fb431d270080e7b09ec33596445d56d + sha256: a938137281c695bcfab2910aa9131d7b1325f23451969144d7577290d0c03834 + manager: conda + name: pybtex-docutils + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pybtex-docutils-1.0.2-py310hff52083_1.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + cryptography: '>=35.0' + python: '>=3.6' + hash: + md5: 1d7e241dfaf5475e893d4b824bb71b44 + sha256: 02ee40855abbce429022d2653b9e1649f23398b2ebab53247de69bd35bc05ba5 + manager: conda + name: pyopenssl + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2 + version: 22.0.0 +- category: main + dependencies: + backports.functools_lru_cache: '' + python: '' + hash: + md5: 5266fcd697043c59621fda522b3d78ee + sha256: be098694551ab1b9a1a4bcf28d61f3edd5a17325a33ca723e571298dd8645ca2 + manager: conda + name: wcwidth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + markdown-it-py: '>=1.0,<3.0' + mdit-py-plugins: '' + nbformat: '' + python: '>=3.6' + pyyaml: '' + toml: '' + hash: + md5: aba00353637aa69640ec2ae150dc592d + sha256: 4e27b6df452877186334ca027470e849418736afc7195b6ac3abfe6149831225 + manager: conda + name: jupytext + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupytext-1.13.8-pyh4b9bcc7_0.tar.bz2 + version: 1.13.8 +- category: main + dependencies: + jupyter_client: '>=6.1.5' + nbformat: '>=5.0' + nest-asyncio: '' + python: '>=3.7' + traitlets: '>=5.0.0' + hash: + md5: 3edde88a191701cf052216c4ba353a83 + sha256: 1b9d7e31e2dffc486b9fa567254eca002bfc738fafc3e466604487af5223b053 + manager: conda + name: nbclient + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.13-pyhd8ed1ab_0.tar.bz2 + version: 0.5.13 +- category: main + dependencies: + python: '>=3.6' + wcwidth: '' + hash: + md5: 9e720b57b22ef3032b4fb081697819dd + sha256: 3b80c72e179eb9be0ab4a2c91ed30b92e7d770a70e8072ed2ab53f0a317eb966 + manager: conda + name: prompt-toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.29-pyha770c72_0.tar.bz2 + version: 3.0.29 +- category: main + dependencies: + brotlipy: '>=0.6.0' + certifi: '' + cryptography: '>=1.3.4' + idna: '>=2.0.0' + pyopenssl: '>=0.14' + pysocks: '>=1.5.6,<2.0,!=1.5.7' + python: <4.0 + hash: + md5: 0ea179ee251aa7100807c35bc0252693 + sha256: 111dec99470869fa03e72bf2102f16db55c29538797c08e7765e9d6515f810df + manager: conda + name: urllib3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2 + version: 1.26.9 +- category: main + dependencies: + backcall: '' + decorator: '' + jedi: '>=0.16' + matplotlib-inline: '' + pexpect: '>4.3' + pickleshare: '' + prompt-toolkit: '>=2.0.0,<3.1.0,!=3.0.0,!=3.0.1' + pygments: '>=2.4.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + setuptools: '>=18.5' + stack_data: '' + traitlets: '>=5' + hash: + md5: 5f3600f5b2c6060790ea192b4bb283cd + sha256: b527d825548a63ddb22d4fbeed09413f5e9eeeaed918478b706dcd01bef09b6d + manager: conda + name: ipython + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ipython-8.4.0-py310hff52083_0.tar.bz2 + version: 8.4.0 +- category: main + dependencies: + beautifulsoup4: '' + bleach: '' + defusedxml: '' + entrypoints: '>=0.2.2' + jinja2: '>=3.0' + jupyter_core: '>=4.7' + jupyterlab_pygments: '' + markupsafe: '>=2.0' + mistune: '>=0.8.1,<2' + nbclient: '>=0.5.0' + nbformat: '>=5.1' + packaging: '' + pandocfilters: '>=1.4.1' + pygments: '>=2.4.1' + python: '>=3.7' + tinycss2: '' + traitlets: '>=5.0' + hash: + md5: 42f74c4b38a099025167e76a7437edf1 + sha256: 79a8221c2bf112ad56f26dbcc7928cff414ae6564954d2b79575b2b696a7d0fb + manager: conda + name: nbconvert-core + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + certifi: '>=2017.4.17' + charset-normalizer: '>=2.0.0,<2.1' + idna: '>=2.5,<4' + python: '>=3.6' + urllib3: '>=1.21.1,<1.27' + hash: + md5: 80c4854bb29f39f202819c4d4294d7c5 + sha256: 7bf99b7fbdc3039ff65b0921bc870de99136b239f93a9baa0cb9a34faecd23c6 + manager: conda + name: requests + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_0.tar.bz2 + version: 2.28.0 +- category: main + dependencies: + debugpy: '>=1.0' + ipython: '>=7.23.1' + jupyter_client: '>=6.1.12' + matplotlib-inline: '>=0.1' + nest-asyncio: '' + packaging: '' + psutil: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + tornado: '>=6.1' + traitlets: '>=5.1.0' + hash: + md5: 1425049427ca281511c74d6f3222693c + sha256: d258fa1010d665c1647d8c684fad71a83539e837c3e6c3aba9ace838775f4a48 + manager: conda + name: ipykernel + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.13.1-py310hfdc917e_0.tar.bz2 + version: 6.13.1 +- category: main + dependencies: + anyio: '>=3.1.0' + argon2-cffi: '' + jinja2: '' + jupyter_client: '>=6.1.12' + jupyter_core: '>=4.7.0' + nbconvert-core: '>=6.4.4' + nbformat: '>=5.2.0' + packaging: '' + prometheus_client: '' + python: '>=3.7' + pyzmq: '>=17' + send2trash: '' + terminado: '>=0.8.3' + tornado: '>=6.1.0' + traitlets: '>=5.1.0' + websocket-client: '' + hash: + md5: 81a57e33282202d19b25f5eb81343ea6 + sha256: 9942c1979b153b2abda3fec454ccb7591cf5d40ce49db8d6eb7cd6798f7ac182 + manager: conda + name: jupyter_server + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.17.1-pyhd8ed1ab_0.tar.bz2 + version: 1.17.1 +- category: main + dependencies: + nbconvert-core: 6.5.0 pyhd8ed1ab_0 + pandoc: '' + python: '>=3.7' + hash: + md5: d7421adfc67100021d87032447066129 + sha256: 737fe95e66f8cacc7a5228df132c6f8979f5dc23144e4037575b857aa9f322cb + manager: conda + name: nbconvert-pandoc + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + alabaster: '>=0.7,<0.8' + babel: '>=1.3' + colorama: '>=0.3.5' + docutils: '>=0.14,<0.18' + imagesize: '' + importlib-metadata: '>=4.4' + jinja2: '>=2.3' + packaging: '' + pygments: '>=2.0' + python: '>=3.6' + requests: '>=2.5.0' + snowballstemmer: '>=1.1' + sphinxcontrib-applehelp: '' + sphinxcontrib-devhelp: '' + sphinxcontrib-htmlhelp: '>=2.0.0' + sphinxcontrib-jsmath: '' + sphinxcontrib-qthelp: '' + sphinxcontrib-serializinghtml: '>=1.1.5' + hash: + md5: 46b38d88c4270ff9ba78a89c83c66345 + sha256: 2fe70d936cc969e20f07a7df64438587261f187d4f08e1c0f412cdd1d632730c + manager: conda + name: sphinx + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2 + version: 4.5.0 +- category: main + dependencies: + jupyter_server: '>=1.1,<2' + python: '>=3.7' + hash: + md5: 0393370c2dec5e92e1727a8650f908f7 + sha256: f68d3781d55177ee0485933ed5988f820103d74d4c82099e974c4e7a414ba416 + manager: conda + name: jupyter-server-mathjax + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.5-pyhc268e32_0.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + docutils: '>=0.15,<0.18' + jinja2: '' + markdown-it-py: '>=1.0.0,<2.0.0' + mdit-py-plugins: ~=0.2.8 + python: '>=3.6' + pyyaml: '' + sphinx: '>=3.1,<5' + hash: + md5: 0c2976e0a1af80ce224388da557eeece + sha256: 34ac36964a46665c03c7cd840fc769bbafa04133f7d6e358a269c60b787b84b2 + manager: conda + name: myst-parser + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/myst-parser-0.15.2-pyhd8ed1ab_0.tar.bz2 + version: 0.15.2 +- category: main + dependencies: + nbconvert-core: 6.5.0 pyhd8ed1ab_0 + nbconvert-pandoc: 6.5.0 pyhd8ed1ab_0 + python: '>=3.7' + hash: + md5: 156c180588e38b9f41758058824ec50f + sha256: 1ee814e7686f403491fb818bdc06133244650d791d93d850703cb0b13eccf1b4 + manager: conda + name: nbconvert + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + beautifulsoup4: '' + docutils: '!=0.17.0' + python: '>=3.7' + sphinx: '' + hash: + md5: 7d8390ec71225ea9841b276552fdffba + sha256: 7a4e49937241244ad193644f1cecbb9ef649032afc5e01961dadf9ed73777588 + manager: conda + name: pydata-sphinx-theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.8.1-pyhd8ed1ab_0.tar.bz2 + version: 0.8.1 +- category: main + dependencies: + python: '' + sphinx: '>=1.8' + hash: + md5: 2ae3ce35de0c1cec45c94182694f8d1b + sha256: 2578e9a84f3d4435ad1065daa55ad22a401968c09842220337e8195336f94839 + manager: conda + name: sphinx-comments + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-comments-0.0.3-pyh9f0ad1d_0.tar.bz2 + version: 0.0.3 +- category: main + dependencies: + python: '>=3' + sphinx: '>=1.8' + hash: + md5: 4c969cdd5191306c269490f7ff236d9c + sha256: 949e2ba4b0e431a094804336965f3e8244f8c1a25d05e15482a293d72434e6ea + manager: conda + name: sphinx-copybutton + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.0-pyhd8ed1ab_0.tar.bz2 + version: 0.5.0 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3,<5' + hash: + md5: 926164ec749271751a441168cd740e41 + sha256: 1ce6f640f22cfe76b34fc8540fe57fe5a39c571390e1799e7e659b31b3aa9c5e + manager: conda + name: sphinx-design + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.1.0-pyhd8ed1ab_0.tar.bz2 + version: 0.1.0 +- category: main + dependencies: + attrs: '>=20.3,<22' + click: '>=7.1,<9' + python: '>=3.6' + pyyaml: '' + sphinx: '>=3,<5' + hash: + md5: 91ae8770569b73f25e1127526c1329ed + sha256: 7671e91372492ee55cc5d0d72e890538acbf99f7d9328680ff035de957e00c64 + manager: conda + name: sphinx-external-toc + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-external-toc-0.2.4-pyhd8ed1ab_0.tar.bz2 + version: 0.2.4 +- category: main + dependencies: + importlib_resources: '' + python: '>=3.6' + sphinx: '>=3,<5' + hash: + md5: 6e4a69a0c8adbb48178fdf3efa24fa4c + sha256: 5ecaca142b8d8b05177eb5c0dcc3bcc721d409accce812a8b470fd8010b278c3 + manager: conda + name: sphinx-jupyterbook-latex + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-jupyterbook-latex-0.4.6-pyhd8ed1ab_0.tar.bz2 + version: 0.4.6 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3' + hash: + md5: 40749a4d0f0d2e11c65fb26c1cd16a90 + sha256: 6c8241fdb4222799c04677b06b2e1f480a6c11f27c8fccc9f73f98798d3c44d8 + manager: conda + name: sphinx-multitoc-numbering + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-multitoc-numbering-0.1.3-pyhd8ed1ab_0.tar.bz2 + version: 0.1.3 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3.5,<5' + hash: + md5: 1d4fdd342aa955085a0f21e26bb585f7 + sha256: 2d37e4dcc0f346372a60574d57b67a65d9a742f56b5ec66f3ddc40d52208a0a9 + manager: conda + name: sphinx-thebe + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-thebe-0.1.2-pyhd8ed1ab_0.tar.bz2 + version: 0.1.2 +- category: main + dependencies: + docutils: '' + python: '>=3.6' + sphinx: '' + hash: + md5: 71418887aa6599ea2935f4958e5e1d15 + sha256: 80d697febe2cfc9b3dd81a4a72389a34e05666c2495409267cbd588bbbf91889 + manager: conda + name: sphinx-togglebutton + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-togglebutton-0.3.1-pyhd8ed1ab_0.tar.bz2 + version: 0.3.1 +- category: main + dependencies: + dataclasses: '' + docutils: '>=0.8' + pybtex: '>=0.24' + pybtex-docutils: '>=1' + python: '>=3.6' + sphinx: '>=2.1' + hash: + md5: d826ac2b3edfe7a8113596c2023f092b + sha256: a96befb6363672c66f32acf173938001481ea37b4280981523e126441eecdd00 + manager: conda + name: sphinxcontrib-bibtex + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.4.2-pyhd8ed1ab_0.tar.bz2 + version: 2.4.2 +- category: main + dependencies: + colorama: '' + gitpython: '!=2.1.4,!=2.1.5,!=2.1.6' + jinja2: '>=2.9' + jupyter-server-mathjax: '>=0.2.2' + jupyter_server: '' + nbformat: '' + pygments: '' + python: '>=3.6' + requests: '' + six: '' + tornado: '' + hash: + md5: 38dc061ffabe665b79f4c7c52cefa809 + sha256: 6b9546f891fc503ace81cb62b777e4d64953cfc7a940a1d65fc6213c8581d996 + manager: conda + name: nbdime + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbdime-3.1.1-pyhd8ed1ab_0.tar.bz2 + version: 3.1.1 +- category: main + dependencies: + argon2-cffi: '' + ipykernel: '' + ipython_genutils: '' + jinja2: '' + jupyter_client: '>=5.3.4' + jupyter_core: '>=4.6.1' + nbconvert: '>=5' + nbformat: '' + prometheus_client: '' + python: '>=3.7' + pyzmq: '>=17' + send2trash: '>=1.5.0' + terminado: '>=0.8.3' + tornado: '>=6.1' + traitlets: '>=4.2.1' + hash: + md5: 77fc67c5bbea44fd41e8bbe2ac82d1ad + sha256: 3bf942438d0bb1d2d7eaddfcc302a23ed9f67662f4d31737c7d7dbacbd4da75c + manager: conda + name: notebook + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.12-pyha770c72_0.tar.bz2 + version: 6.4.12 +- category: main + dependencies: + pydata-sphinx-theme: '>=0.8.0,<0.9.0' + python: '>=3.7' + pyyaml: '' + sphinx: '>=3,<5' + hash: + md5: ec9a160c2ea0f98a3a0fc2700eef1865 + sha256: e2cc3c00a4939c14095fdaad0584eb38a2bdc7d31b1ef33d292a55736edc5fbf + manager: conda + name: sphinx-book-theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-0.3.2-pyhd8ed1ab_0.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + attrs: '' + click-completion: '' + click-log: '' + nbclient: '>=0.2,<0.6' + nbdime: '' + nbformat: '' + python: '>=3.6' + sqlalchemy: '>=1.3.12,<1.5' + hash: + md5: 03cd9218c96d513854bfc8714eaf9451 + sha256: a07842216f74c5fefde839a97cda5f1b5fba64a12a38e87f4d455dfc9d082bb5 + manager: conda + name: jupyter-cache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-cache-0.4.3-pyhd8ed1ab_0.tar.bz2 + version: 0.4.3 +- category: main + dependencies: + notebook: '>=4.4.1' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: aca4dc212290d3d581b25f0ea1b08356 + sha256: f6b031e7243853cf751f1c20e0c17357101e0414210039b0de12280abbdbfb81 + manager: conda + name: widgetsnbextension + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/widgetsnbextension-3.6.0-py310hff52083_0.tar.bz2 + version: 3.6.0 +- category: main + dependencies: + ipykernel: '>=4.5.1' + ipython: '>=4.0.0' + ipython_genutils: '>=0.2.0,<0.3.0' + jupyterlab_widgets: '>=1.0.0,<2.0.0' + nbformat: '>=4.2.0' + python: '>=3.3' + traitlets: '>=4.3.1,<6.0.0' + widgetsnbextension: '>=3.6.0,<3.7.0' + hash: + md5: a3d2ccd3d9f9fcb65765c22f500529b4 + sha256: c51de31925a7d55cba8ed15756fe1844bc10d1b74e1a3b1462771611401d243e + manager: conda + name: ipywidgets + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.7.0-pyhd8ed1ab_0.tar.bz2 + version: 7.7.0 +- category: main + dependencies: + ipython: '' + ipywidgets: '>=7.0.0' + nbconvert: '>=5.5' + nbformat: '' + python: '>=3.6' + sphinx: '>=2' + hash: + md5: a47ca0f91417e5d29d075ca416254466 + sha256: 4034796e6adfc2584c66d23f0f5b15b4c5cb10f5e359ebbdd417af7f816d0718 + manager: conda + name: jupyter-sphinx + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-sphinx-0.3.2-pyhd8ed1ab_1.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + docutils: '>=0.15,<0.18' + importlib-metadata: '' + ipython: '' + ipywidgets: '>=7.0.0,<8' + jupyter-cache: ~=0.4.1 + jupyter-sphinx: ~=0.3.2 + myst-parser: ~=0.15.2 + nbconvert: '>=5.6,<7' + nbformat: ~=5.0 + python: '>=3.6' + pyyaml: '' + sphinx: '>=3.1,<5' + sphinx-togglebutton: ~=0.3.0 + hash: + md5: 800e968e63eb593c651a14907fd82d26 + sha256: b40f9c08f955a0964cca82cc5f5f6154c59e0eb10f5374ba2c5b8c1911066403 + manager: conda + name: myst-nb + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/myst-nb-0.13.2-pyhd8ed1ab_0.tar.bz2 + version: 0.13.2 +- category: main + dependencies: + click: '>=7.1,<9' + docutils: '>=0.15,<0.18' + jinja2: '' + jsonschema: <4 + linkify-it-py: '>=1.0.1,<1.1.0' + myst-nb: '>=0.13.1,<0.14.0' + python: '>=3.7' + pyyaml: '' + sphinx: '>=4,<5' + sphinx-book-theme: '>=0.3.2,<0.4.0' + sphinx-comments: '' + sphinx-copybutton: '' + sphinx-design: '>=0.1.0,<0.2.0' + sphinx-external-toc: '>=0.2.3,<0.3.0' + sphinx-jupyterbook-latex: '>=0.4.6,<0.5.0' + sphinx-multitoc-numbering: '>=0.1.3,<0.2.0' + sphinx-thebe: '>=0.1.1,<0.2.0' + sphinx-togglebutton: '' + sphinxcontrib-bibtex: '>=2.2.0,<=2.5.0' + hash: + md5: fc1751a83e42891bb0e3bfffe5e28350 + sha256: 7d40e1e4d0764411c6b456de439e2b79419c90832d85411c20109b61a63c42a6 + manager: conda + name: jupyter-book + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-book-0.13.0-pyhd8ed1ab_0.tar.bz2 + version: 0.13.0 +- category: main + dependencies: {} + hash: + md5: 37edc4e6304ca87316e160f5ca0bd1b5 + sha256: 60ba4c64f5d0afca0d283c7addba577d3e2efc0db86002808dadb0498661b2f2 + manager: conda + name: bzip2 + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2 + version: 1.0.8 +- category: main + dependencies: {} + hash: + md5: 8daebfd1f22a51afecb341604b86689c + sha256: 292a9a7fc590e9dc98c9e26a5e1229d4e77e5da13b7f57b8082b2ea3b234fa6c + manager: conda + name: ca-certificates + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2022.5.18.1-h033912b_0.tar.bz2 + version: 2022.5.18.1 +- category: main + dependencies: {} + hash: + md5: 563442fea31753e46dd74aca8688abd6 + sha256: fb673f5a109bd28381ab0eb0e4d6e2676379abef66749758b91fa7c90bc9283c + manager: conda + name: libcxx + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.5-hce7ea42_1.tar.bz2 + version: 14.0.5 +- category: main + dependencies: {} + hash: + md5: ccb34fb14960ad8b125962d3d79b31a9 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + manager: conda + name: libffi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + version: 3.4.2 +- category: main + dependencies: {} + hash: + md5: 24632c09ed931af617fe6d5292919cab + sha256: 2da45f14e3d383b4b9e3a8bacc95cd2832aac2dbf9fbc70d255d384a310c5660 + manager: conda + name: libsodium + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 + version: 1.0.18 +- category: main + dependencies: {} + hash: + md5: f07bbb7d382718623d13296bd6f486f3 + sha256: 596ff2f9a1b41fd39601e65a3752c47ab9fbdb3fe6cde34bed6b6b75cefd2c79 + manager: conda + name: libzlib + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.12-h6c3fc93_0.tar.bz2 + version: 1.2.12 +- category: main + dependencies: {} + hash: + md5: 76217ebfbb163ff2770a261f955a5861 + sha256: 9794a23d03586c99cac49d4ae3d5337faaa6bfc256b31d2662ff4ad5972be143 + manager: conda + name: ncurses + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.3-h96cf925_1.tar.bz2 + version: '6.3' +- category: main + dependencies: {} + hash: + md5: 42f9f041e9d250ee3bc7332b8d28e0a2 + sha256: e4a90d019246453baf9868203ee79636b5bfb030a23e5aa609bbc99c9fefcb08 + manager: conda + name: pandoc + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandoc-2.18-h694c41f_0.tar.bz2 + version: '2.18' +- category: main + dependencies: {} + hash: + md5: 84be5301069417a2221187d2f435e0f7 + sha256: 74d8c1fbccae1a78c9bd2b2d1cda73df425cc28717a637198c23bd1c9b53b60e + manager: conda + name: tzdata + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2 + version: 2022a +- category: main + dependencies: {} + hash: + md5: 41116deb499e9bc58048c297d6403ce6 + sha256: df1db3f4abb8c7166ae045934040aa5b254521ac4251a5f95eb33adce776d950 + manager: conda + name: xz + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.5-haf1e3a3_1.tar.bz2 + version: 5.2.5 +- category: main + dependencies: {} + hash: + md5: d7e08fcf8259d742156188e8762b4d20 + sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 + manager: conda + name: yaml + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + ca-certificates: '' + hash: + md5: 655048e118f0b7029e5c216a1d7a6189 + sha256: 83e0c8efccc4c8a262d4dfccdda4f5d8bf30b3b9599853092781516cd8213672 + manager: conda + name: openssl + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1o-hfe4f2af_0.tar.bz2 + version: 1.1.1o +- category: main + dependencies: + ncurses: '>=6.3,<7.0a0' + hash: + md5: 89fa404901fa8fb7d4f4e07083b8d635 + sha256: c65dc1200a252832db49bdd6836c512a0eaafe97aa914b9f8358b15eebb1d94b + manager: conda + name: readline + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.1.2-h3899abd_0.tar.bz2 + version: 8.1.2 +- category: main + dependencies: + libzlib: '>=1.2.11,<1.3.0a0' + hash: + md5: 8e9480d9c47061db2ed1b4ecce519a7f + sha256: 331aa1137a264fd9cc905f04f09a161c801fe504b93da08b4e6697bd7c9ae6a6 + manager: conda + name: tk + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2 + version: 8.6.12 +- category: main + dependencies: + libcxx: '>=11.1.0' + libsodium: '>=1.0.18,<1.0.19.0a0' + hash: + md5: 1972d732b123ed04b60fd21e94f0b178 + sha256: 991e2b42908c5793fe42a78272e6bd5e6412636274500b846991d0f3e5126952 + manager: conda + name: zeromq + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.4-he49afe7_1.tar.bz2 + version: 4.3.4 +- category: main + dependencies: + libzlib: 1.2.12 h6c3fc93_0 + hash: + md5: 6afaa92362b47e2b058d2385b60727ea + sha256: d04c59f639866370d7ea07a78b3691d1e30913b511a664e888ac384f6a594e73 + manager: conda + name: zlib + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.12-h6c3fc93_0.tar.bz2 + version: 1.2.12 +- category: main + dependencies: + libzlib: '>=1.2.11,<1.3.0a0' + ncurses: '>=6.3,<7.0a0' + readline: '>=8.1,<9.0a0' + zlib: '>=1.2.11,<1.3.0a0' + hash: + md5: 258c39c5e2eff8b8b29d1a027e4e1b5a + sha256: 986a83679ada273eae01dd29e2ddae132e1fa16d8be29c91caad949dc52ea591 + manager: conda + name: sqlite + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.38.5-hd9f0692_0.tar.bz2 + version: 3.38.5 +- category: main + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libffi: '>=3.4.2,<3.5.0a0' + libzlib: '>=1.2.12,<1.3.0a0' + ncurses: '>=6.3,<7.0a0' + openssl: '>=1.1.1o,<1.1.2a' + readline: '>=8.1.2,<9.0a0' + sqlite: '>=3.38.5,<4.0a0' + tk: '>=8.6.12,<8.7.0a0' + tzdata: '' + xz: '>=5.2.5,<5.3.0a0' + hash: + md5: 2c27a532578a3e3b1574e0a50d9b36b9 + sha256: 8c8730fe8ccbdcb702e670712edb33c569cf0e4f893c43a315a2254f79fddba1 + manager: conda + name: python + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.10.5-hdaaf3db_0_cpython.tar.bz2 + version: 3.10.5 +- category: main + dependencies: + python: '' + hash: + md5: 2489a97287f90176ecdc3ca982b4b0a0 + sha256: 662690cace8f8a3e1358d01ddb8c019bf70ddfccd250220a6a488efc93ea5baf + manager: conda + name: alabaster + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2 + version: 0.7.12 +- category: main + dependencies: + python: '>=2.7' + hash: + md5: 54ac328d703bff191256ffa1183126d1 + sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742 + manager: conda + name: appnope + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2 + version: 0.1.3 +- category: main + dependencies: + python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' + hash: + md5: f70280205d7044c8b8358c8de3190e5d + sha256: 79cc289deb95b30d4bdedbba5d5dbdcd0ed95b3c306757dc1f83d9164f0c2d88 + manager: conda + name: attrs + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2 + version: 21.4.0 +- category: main + dependencies: + python: '' + hash: + md5: 6006a6d08a3fa99268a2681c7fb55213 + sha256: ee62d6434090c1327a48551734e06bd10e65a64ef7f3b6e68719500dab0e42b9 + manager: conda + name: backcall + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + python: '' + hash: + md5: 0da16b293affa6ac31812376f8eb79dd + sha256: a584e690dbb042779af83abaa87a54764278c0a53bf5256ff8f5b0f0061ac283 + manager: conda + name: backports + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2 + version: '1.0' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 1f5b32dabae0f1893ae3283dac7f799e + sha256: 30484cbce01cd7c0e660e4549c95a417c09aa98f6270616adc2530dccf16fb96 + manager: conda + name: charset-normalizer + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2 + version: 2.0.12 +- category: main + dependencies: + python: '' + hash: + md5: c08b4c1326b880ed44f3ffb04803332f + sha256: ddf1749f0fd5a098a7954d98267cebca83a36b86719ce4ab6fc4aa94ef518432 + manager: conda + name: colorama + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 + version: 0.4.4 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: a362b2124b06aad102e2ee4581acee7d + sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92 + manager: conda + name: dataclasses + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2 + version: '0.8' +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 43afe5ab04e35e17ba28649471dd7364 + sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 + manager: conda + name: decorator + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + version: 5.1.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 961b3a227b437d82ad7054484cfa71b2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + manager: conda + name: defusedxml + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + version: 0.7.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 3cf04868fee0a029769bd41f4b2fbf2d + sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af + manager: conda + name: entrypoints + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + version: '0.4' +- category: main + dependencies: + python: '>=2.7' + hash: + md5: 8d70f4543c1f701b946f85e9f9a00800 + sha256: 5cca228b0af8825cd18f43eaba689825392a20976541f36d6ed71d620a4a0833 + manager: conda + name: executing + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/executing-0.8.3-pyhd8ed1ab_0.tar.bz2 + version: 0.8.3 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: f93822cba5c20161560661988a88f2c0 + sha256: f56157ce4b55ef46a4fa4fe875703468e362b983099f864b740fd99aa80bbdbb + manager: conda + name: flit-core + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/flit-core-3.7.1-pyhd8ed1ab_0.tar.bz2 + version: 3.7.1 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 40b50b8b030f5f2f22085c062ed013dd + sha256: d697b7db5194d5248850b57fd313ecbb29bba9aaab0346ee55816589afbd1d0e + manager: conda + name: idna + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2 + version: '3.3' +- category: main + dependencies: + python: '>=3.4' + hash: + md5: be807e7606fff9436e5e700f6bffb7c6 + sha256: 30e06a54ef5d9584e14c0a70a21946b2ffcf58729fe8ff54226ad6f3bd7f298b + manager: conda + name: imagesize + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2 + version: 1.3.0 +- category: main + dependencies: + python: '' + hash: + md5: 5071c982548b3a20caf70462f04f5287 + sha256: 0fafbc60209f1d8c0b89a2f79f3ff0f7bc45589a23da1d2e5cc55bcca906707b + manager: conda + name: ipython_genutils + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: e963a4a39cf442dbe5503f66edda083d + sha256: f3d3b55d1cfa9d57b014cb1a1a32f49a55fb0dc720c1107362e7f97bfd8e49bd + manager: conda + name: jupyterlab_widgets + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.0-pyhd8ed1ab_0.tar.bz2 + version: 1.1.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: dc36c992aec485c0efff619ed2e63957 + sha256: adefa33879e35375ec8cae910af6823534056900ff3a90c0c1ef8ffaab5b0d8a + manager: conda + name: nest-asyncio + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.5-pyhd8ed1ab_0.tar.bz2 + version: 1.5.5 +- category: main + dependencies: + python: '!=3.0,!=3.1,!=3.2,!=3.3' + hash: + md5: 457c2c8c08e54905d6954e79cb5b5db9 + sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f + manager: conda + name: pandocfilters + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + version: 1.5.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 17a565a0c3899244e938cdf417e7b094 + sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4 + manager: conda + name: parso + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2 + version: 0.8.3 +- category: main + dependencies: + python: '>=3' + hash: + md5: 415f0ebb6198cc2801c73438a9fb5761 + sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 + manager: conda + name: pickleshare + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + version: 0.7.5 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: b7fa7d86530b8de805268e48988eb483 + sha256: 66d41fd720b39faad502ea4f67cf70c797ff4a4c5bc01fef536a0880e882713e + manager: conda + name: prometheus_client + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.14.1-pyhd8ed1ab_0.tar.bz2 + version: 0.14.1 +- category: main + dependencies: + python: '' + hash: + md5: 359eeb6536da0e687af562ed265ec263 + sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a + manager: conda + name: ptyprocess + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + version: 0.7.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 6784285c7e55cb7212efabc79e4c2883 + sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44 + manager: conda + name: pure_eval + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 + version: 0.2.2 +- category: main + dependencies: + python: 2.7.*|>=3.4 + hash: + md5: 076becd9e05608f8dc72757d5f3a91ff + sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc + manager: conda + name: pycparser + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 + version: '2.21' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: e8fbc1b54b25f4b08281467bc13b70cc + sha256: 4acc7151cef5920d130f2e0a7615559cce8bfb037aeecb14d4d359ae3d9bc51b + manager: conda + name: pyparsing + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2 + version: 3.0.9 +- category: main + dependencies: + python: '>=3.3' + hash: + md5: fae309d1cc996da1f63de9d321e65e27 + sha256: f63f583a384576a7db573016cf726ba961c11700636206d1a09e8dff6120aca3 + manager: conda + name: python-fastjsonschema + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.15.3-pyhd8ed1ab_0.tar.bz2 + version: 2.15.3 +- category: main + dependencies: + python: 3.10.* + hash: + md5: 502ca4a8b43b424316f380d864832877 + sha256: c79e3da64d6f79377d58d6313463001c7520a23141466816ccb07aed8700afc2 + manager: conda + name: python_abi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.10-2_cp310.tar.bz2 + version: '3.10' +- category: main + dependencies: + python: '>=3' + hash: + md5: b87d66d6d3991d988fb31510c95a9267 + sha256: 082043d171a5055d679bd01ad9f5f39125a7aef894049ce7f035bd7134dffd21 + manager: conda + name: pytz + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2 + version: '2022.1' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: edab14119efe85c3bf131ad747e9005c + sha256: 1a8e79f256e747bae4e7aefd3b06261f428f30cdd14e61fbe7bbe628b31df224 + manager: conda + name: send2trash + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2 + version: 1.8.0 +- category: main + dependencies: + python: '' + hash: + md5: 437655338696f9d0dfdb0a024e66b255 + sha256: 7d79f4500b4267414a2bd6a08e74aedc1629feb890efec71b0480501d37f148a + manager: conda + name: shellingham + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.4.0-pyh44b312d_0.tar.bz2 + version: 1.4.0 +- category: main + dependencies: + python: '' + hash: + md5: e5f25f8dbc060e9a8d912e432202afc2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + manager: conda + name: six + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + version: 1.16.0 +- category: main + dependencies: + python: '' + hash: + md5: 3a8dc70789709aa315325d5df06fb7e4 + sha256: 091de70ee6bfe063e0c0f77336975d124fd1e3f49b9c58d97c0c7b3d287c0002 + manager: conda + name: smmap + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2 + version: 3.0.5 +- category: main + dependencies: + python: '>=2' + hash: + md5: 4d22a9315e78c6827f806065957d566e + sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 + manager: conda + name: snowballstemmer + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + version: 2.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: d821b295c4bd18ad27e1e19543a5784a + sha256: 84b3aa89dd44813d80c208d6a956ab881552da9bfc78c304b12a432406131c46 + manager: conda + name: soupsieve + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.1-pyhd8ed1ab_0.tar.bz2 + version: 2.3.1 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 20b2eaeaeea4ef9a9a0d99770620fd09 + sha256: bd7838485e34e7ec5717552f83fa4a02623ff5fb854c10f2f57080b85d13c69e + manager: conda + name: sphinxcontrib-applehelp + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 68e01cac9d38d0e717cd5c87bc3d2cc9 + sha256: 66cca7eccb7f92eee53f9f5a552e3e1d643daa3a1ebd03c185e2819e5c491576 + manager: conda + name: sphinxcontrib-devhelp + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 77dad82eb9c8c1525ff7953e0756d708 + sha256: 3c1170f3a3170e59b156e375c949db98941892850e59fa4085c437a5df0e767d + manager: conda + name: sphinxcontrib-htmlhelp + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8ed1ab_0.tar.bz2 + version: 2.0.0 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 67cd9d9c0382d37479b4d306c369a2d4 + sha256: a42415fc789e9f6ae2e18f07ac143d2e9ce73a35a55ecf1dd1b3d055dd1e6dbe + manager: conda + name: sphinxcontrib-jsmath + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2 + version: 1.0.1 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: d01180388e6d1838c3e1ad029590aa7a + sha256: 35d8f01fc798d38b72ae003c040d2dee650d315f904268a1f793d4d59460d1e2 + manager: conda + name: sphinxcontrib-qthelp + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2 + version: 1.0.3 +- category: main + dependencies: + python: '>=3.5' + hash: + md5: 9ff55a0901cf952f05c654394de76bf7 + sha256: 890bbf815cff114ddbb618b9876d492fce07d02956c1d7b3d46cb7f835f563f6 + manager: conda + name: sphinxcontrib-serializinghtml + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2 + version: 1.1.5 +- category: main + dependencies: + python: '>=2.7' + hash: + md5: f832c45a477c78bebd107098db465095 + sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 + manager: conda + name: toml + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + version: 0.10.2 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: 2b06b17ee111c3df688affbe3964a3b3 + sha256: 5c1dc557377ea61a569ef82bbe3100ecfa7cc1418f9be81692038cd210e62d33 + manager: conda + name: traitlets + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.2.2.post1-pyhd8ed1ab_0.tar.bz2 + version: 5.2.2.post1 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: f0f7e024f94e23d3bfee0ab777bf335a + sha256: d4bf2f15e9794a76a9e52f77fcdfe5d6d4ff4436d02353d3a655354376688ec8 + manager: conda + name: typing_extensions + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.2.0-pyha770c72_1.tar.bz2 + version: 4.2.0 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 3ddf6684d9b274a12c94e509ca45656c + sha256: 04b6f17a9ff2bd36f70076dd1761408de1d38c6c791849a02c3a1d28ad466d00 + manager: conda + name: uc-micro-py + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.1-pyhd8ed1ab_0.tar.bz2 + version: 1.0.1 +- category: main + dependencies: + python: '' + hash: + md5: 3563be4c5611a44210d9ba0c16113136 + sha256: 302f4f4bd1ad00c0be1426ecf6bb01db59cfd8aff3de0cf1596526dca1a6b70e + manager: conda + name: webencodings + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 + version: 0.5.1 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: da6f472c62b4eda0caf05e223729efcd + sha256: 58409ebd377ef1e888cac917cb4e27e5eff314be07b037a94c53c2b2a643bcea + manager: conda + name: websocket-client + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.3.2-pyhd8ed1ab_0.tar.bz2 + version: 1.3.2 +- category: main + dependencies: + python: '>=3.7' + hash: + md5: 050b94cf4a8c760656e51d2d44e4632c + sha256: 378efc066a74d273774a30481132023ff07197241e3a85202cde512f6cf14500 + manager: conda + name: zipp + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2 + version: 3.8.0 +- category: main + dependencies: + python: '>=3.5' + six: '' + hash: + md5: 74badce16f060701fee55c39332f5253 + sha256: 4da0fe03babc950532513e9165dbc337a663880352392f496992776608dd77ca + manager: conda + name: asttokens + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.0.5-pyhd8ed1ab_0.tar.bz2 + version: 2.0.5 +- category: main + dependencies: + python: '>=3.6' + pytz: '' + hash: + md5: 8bdb046f8fa454bd4da1c48aa9e20f1d + sha256: 47cd4beb5d1f52628ebb227bb98fee68ee66a1fc70498eb29ac01a709943078e + manager: conda + name: babel + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.10.2-pyhd8ed1ab_0.tar.bz2 + version: 2.10.2 +- category: main + dependencies: + python: '>=3.6' + soupsieve: '>=1.2' + hash: + md5: eeec8814bd97b2681f708bb127478d7d + sha256: e16b4f73965c5e05896f27fd0a254576c4f65496b19eecddcd3039086ea762c8 + manager: conda + name: beautifulsoup4 + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.11.1-pyha770c72_0.tar.bz2 + version: 4.11.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 7835c0b6bf96eb97567694974c1902c7 + sha256: ca2df38e4b39c3cebfb629c214779a993c0b424918adb70ba9611acccea54ca7 + manager: conda + name: certifi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.5.18.1-py310h2ec42d9_0.tar.bz2 + version: 2022.5.18.1 +- category: main + dependencies: + libffi: '>=3.4.2,<3.5.0a0' + pycparser: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: bca69dbd12cea5ae0dc298fc58a3c4ee + sha256: 329438351c91813a842e7ccb9c52701d282579178d7a93a87eb025ddcbdc5cdb + manager: conda + name: cffi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py310hcc37b68_0.tar.bz2 + version: 1.15.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 5e00cb3a5026cb2ed91f2b6c368ee4e8 + sha256: 89488f916d9f2d3e35e3eebe4ad7ed7a866efda8bb76d0bfb390fa30a39fc7b3 + manager: conda + name: click + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/click-8.1.3-py310h2ec42d9_0.tar.bz2 + version: 8.1.3 +- category: main + dependencies: + libcxx: '>=12.0.1' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 9b727a598a73631eb92a85ba4a1f7e29 + sha256: 5f58304e7b92628abd7bd5c7da7b6b4934870cb275d829119dcb56e3daa453ed + manager: conda + name: debugpy + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.6.0-py310h9d931ec_0.tar.bz2 + version: 1.6.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: fac0bd14414ea80a6fb63d79a5a1e2de + sha256: 1f2f152246ebedeb05911bdfc4df770205be6efecbf0c2b079d9c4efc70058e8 + manager: conda + name: docutils + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.17.1-py310h2ec42d9_2.tar.bz2 + version: 0.17.1 +- category: main + dependencies: + python: '>=3.4' + smmap: '>=3.0.1,<4' + hash: + md5: 40fc6b14a45dee3a3fd9f302d026108e + sha256: fa018c53bd1c171dccde16c4eb9dd9f3ff6b7f2d222c564d48b5516ec1ee24ec + manager: conda + name: gitdb + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.9-pyhd8ed1ab_0.tar.bz2 + version: 4.0.9 +- category: main + dependencies: + libcxx: '>=12.0.1' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 7d9e71bbd3ce9e2098467b3fce56db13 + sha256: 1abbd744ffa62480017188cb6e289faab96ab4d8ee130476b93df3a982b1d63e + manager: conda + name: greenlet + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-1.1.2-py310h9d931ec_2.tar.bz2 + version: 1.1.2 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + zipp: '>=0.5' + hash: + md5: f67654246da9adc1ea5f37c160758619 + sha256: a91f166e56192f488795ede55793f94d348d9479181ae7cfab2aa841592647e5 + manager: conda + name: importlib-metadata + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.11.4-py310h2ec42d9_0.tar.bz2 + version: 4.11.4 +- category: main + dependencies: + python: '>=3.6' + zipp: '>=3.1.0' + hash: + md5: 56567286f9f9716bea44fe9301e1b34d + sha256: 10e84635f6d5b4afb047bb1ec975dd9d32a59a91e0d3e399b5c8d2950cf88aba + manager: conda + name: importlib_resources + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.7.1-pyhd8ed1ab_1.tar.bz2 + version: 5.7.1 +- category: main + dependencies: + parso: '>=0.8.0,<0.9.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 632f68b68e16783f07381ace90839535 + sha256: b1ef5ed3e548c60bbf9f6c66482edd78606c959dc3d72d3abc4ced002ef454be + manager: conda + name: jedi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.1-py310h2ec42d9_1.tar.bz2 + version: 0.18.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + traitlets: '' + hash: + md5: 6c20066668eebee6e52c33845cb6a152 + sha256: 7269f3228b0dff22a04aaf60ed3d1aff3f0a01c098952367391b91c3027cb1a8 + manager: conda + name: jupyter_core + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.10.0-py310h2ec42d9_0.tar.bz2 + version: 4.10.0 +- category: main + dependencies: + python: '' + six: '' + hash: + md5: 8d67904973263afd2985ba56aa2d6bb4 + sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f + manager: conda + name: latexcodec + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 + version: 2.0.1 +- category: main + dependencies: + python: '>=3.6' + uc-micro-py: '>=1.0.1,<2.0.0' + hash: + md5: ba4b07f6a132c77eb69ede31a6ed790b + sha256: 972fbd3cc47732d593565a2e2b6a10f622f3b53ce49b54aeab9c794b3d24362c + manager: conda + name: linkify-it-py + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-1.0.3-pyhd8ed1ab_0.tar.bz2 + version: 1.0.3 +- category: main + dependencies: + attrs: '>=19.3,<22' + python: '>=3.6' + typing_extensions: '>=3.7.4' + hash: + md5: 84e8dfb1a9e6a824f32fd45b867271ca + sha256: dbeecee5fe7e9b936147619b16163e92b70e6547dee1a09662b277354022b286 + manager: conda + name: markdown-it-py + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-1.1.0-pyhd8ed1ab_0.tar.bz2 + version: 1.1.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 48e4c1949b302e2d16d29df8788adef7 + sha256: 49536ee04e51dd371c44deb52e7727a0ef99a0e876605bbaff3979daa2df59ca + manager: conda + name: markupsafe + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.1-py310h1961e1f_1.tar.bz2 + version: 2.1.1 +- category: main + dependencies: + python: '>=3.6' + traitlets: '' + hash: + md5: be3bfd435802d2c768c6b2439f325f3d + sha256: 305be1532dfd6bf6c815b9f5104a8401f3fb9879d069881289082e13f14cfaf4 + manager: conda + name: matplotlib-inline + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab_0.tar.bz2 + version: 0.1.3 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 342080b555733ea60338696faa34c43d + sha256: 25be626366e5e5f528cd70cc3d1e5040a6b9fdd6bd13d0a8748e71f24d575118 + manager: conda + name: mistune + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/mistune-0.8.4-py310he24745e_1005.tar.bz2 + version: 0.8.4 +- category: main + dependencies: + pyparsing: '>=2.0.2,!=3.0.5' + python: '>=3.6' + hash: + md5: 71f1ab2de48613876becddd496371c85 + sha256: 8322a9e93e2e09fbf2103f0d37c9287b7b97387125abadd6db26686084893540 + manager: conda + name: packaging + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2 + version: '21.3' +- category: main + dependencies: + ptyprocess: '>=0.5' + python: '' + hash: + md5: 5909e7b978141dd80d28dbf9de627827 + sha256: 04eef875d461732ef22cd19bf2c989c40e73b5da625bf6a6b82ddae200e90e56 + manager: conda + name: pexpect + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 + version: 4.8.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 502d7f7ee7548a6f73560a4971a07d23 + sha256: 9bb2d0ed2b1a636f477d8f670424c4d5fe3ea39c860e2f5a375f254287fbffec + manager: conda + name: psutil + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/psutil-5.9.1-py310h6c45266_0.tar.bz2 + version: 5.9.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 1d5a3bffbe50e9c4f29360377619dd76 + sha256: 710bb98fae61897728457a47ccb3f5706e54523014219dec0d043c64214a4a78 + manager: conda + name: pyrsistent + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyrsistent-0.18.1-py310h1961e1f_1.tar.bz2 + version: 0.18.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 8b7a82347d1ed70878126333339f4969 + sha256: 62212165404598ba6b18fd6f28028f8be5aaa187f423677a07208d4c84f12bfe + manager: conda + name: pysocks + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py310h2ec42d9_5.tar.bz2 + version: 1.7.1 +- category: main + dependencies: + python: '>=3.6' + six: '>=1.5' + hash: + md5: dd999d1cc9f79e67dbb855c8924c7984 + sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da + manager: conda + name: python-dateutil + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 + version: 2.8.2 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + yaml: '>=0.2.5,<0.3.0a0' + hash: + md5: 51b485b7f9595c2a1188451d54da17b1 + sha256: 4d57314f985a6d11a9890826c9b05669325018dec1c4e7232b462e08d17f34e5 + manager: conda + name: pyyaml + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py310h1961e1f_4.tar.bz2 + version: '6.0' +- category: main + dependencies: + libcxx: '>=13.0.1' + libsodium: '>=1.0.18,<1.0.19.0a0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + zeromq: '>=4.3.4,<4.4.0a0' + hash: + md5: e7f802b6b23e743eec590d65b7e82497 + sha256: f71c9addc837105f6654a2d0ea0d1507a6e942f5b282eaad9614b179428442f3 + manager: conda + name: pyzmq + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-23.1.0-py310h85fb675_0.tar.bz2 + version: 23.1.0 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: fdc73e7086246e5a87b95eff8844b426 + sha256: bdad51a6571fb0e0592efd0ae62fdfab07dfc4e15a3eb791a8f43b64c9d30772 + manager: conda + name: setuptools + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.3.4-py310h2ec42d9_0.tar.bz2 + version: 62.3.4 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: f547b37462ea52e29c81cbcf00d1f6f6 + sha256: 4cd19882a056587af0b9344961800722fcba5db14c0f140954d2844fe122e577 + manager: conda + name: sniffio + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/sniffio-1.2.0-py310h2ec42d9_3.tar.bz2 + version: 1.2.0 +- category: main + dependencies: + python: '>=3.5' + webencodings: '>=0.4' + hash: + md5: 5d280406501e79dc7aa9c9ac31d25a80 + sha256: 4da72a45b8330eb754dcdc53ecffe4e6a6d348211d979cbc15121e0d94af5f6c + manager: conda + name: tinycss2 + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.1.1-pyhd8ed1ab_0.tar.bz2 + version: 1.1.1 +- category: main + dependencies: + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 84d43324014a93910f008ada676ca542 + sha256: e1e7ad2c24147d9023fff99c708c892161a9c4be3ff324ef731ba2f884302b46 + manager: conda + name: tornado + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py310h1961e1f_3.tar.bz2 + version: '6.1' +- category: main + dependencies: + idna: '>=2.8' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + sniffio: '>=1.1' + hash: + md5: c7a94c9114d91d0699179e1464fd5f3e + sha256: 0dfc11460cf1c838bde742696da4708b9abaec81dab11e17017af0f9fc75b93b + manager: conda + name: anyio + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/anyio-3.6.1-py310h2ec42d9_0.tar.bz2 + version: 3.6.1 +- category: main + dependencies: + cffi: '>=1.0.1' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 9d75e688fef8f0d15fd09f723fb71cd0 + sha256: 136ed8b905d1bbb963ec33039ce11c648c5976d307401bdfc5c35b6bb9f2120f + manager: conda + name: argon2-cffi-bindings + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py310h1961e1f_2.tar.bz2 + version: 21.2.0 +- category: main + dependencies: + backports: '' + python: '>=3.6' + setuptools: '' + hash: + md5: c5b3edc62d6309088f4970b3eaaa65a6 + sha256: fdea00d4b79990f3fe938e2716bc32bd895eb5c44b6c75b8261db095a1b33c16 + manager: conda + name: backports.functools_lru_cache + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2 + version: 1.6.4 +- category: main + dependencies: + packaging: '' + python: '>=3.6' + setuptools: '' + six: '>=1.9.0' + webencodings: '' + hash: + md5: 2a2ae7c56b8f72caba261363407b484a + sha256: 534fbfbb6f224cfd3ce91be098ee6d2a8c978135a11e9a2cd8d6c8907ccd28f3 + manager: conda + name: bleach + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-5.0.0-pyhd8ed1ab_0.tar.bz2 + version: 5.0.0 +- category: main + dependencies: + cffi: '>=1.0.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: e84bd2f66966aa51356dfe14ef887e42 + sha256: 98b997f5025be0b2cee1a1997182d84cdd05161a4a58c38a064a6a0e169684c0 + manager: conda + name: brotlipy + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py310h1961e1f_1004.tar.bz2 + version: 0.7.0 +- category: main + dependencies: + click: '' + python: '' + hash: + md5: 3a64d156136fad977df1b81a24b57ac0 + sha256: 3034fe45f2c218909ce0e8b9b9ac77cce08ad25cc3de7d3668794a2c3cd7dc30 + manager: conda + name: click-log + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/click-log-0.3.2-pyh9f0ad1d_0.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + cffi: '>=1.12' + openssl: '>=1.1.1o,<1.1.2a' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: d59b17f2f4c984ae052f05bc45ad7cea + sha256: c5b3dfc2f91eb1f15c44730424fcf8810335d91a29a33cb1c06ed16a9ce54a89 + manager: conda + name: cryptography + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.2-py310h52c3658_0.tar.bz2 + version: 37.0.2 +- category: main + dependencies: + gitdb: '>=4.0.1,<5' + python: '>=3.7' + typing_extensions: '>=3.7.4.3' + hash: + md5: 20acbaab17a50ac9b64138eb9a0e1af8 + sha256: 6f523156cdc0f2c597ad869d10d12503143a361259d01d180769a06fbdbcc9ec + manager: conda + name: gitpython + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.27-pyhd8ed1ab_0.tar.bz2 + version: 3.1.27 +- category: main + dependencies: + markupsafe: '>=2.0' + python: '>=3.7' + hash: + md5: c8490ed5c70966d232fdd389d0dbed37 + sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5 + manager: conda + name: jinja2 + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2 + version: 3.1.2 +- category: main + dependencies: + attrs: '>=17.4.0' + importlib-metadata: '' + pyrsistent: '>=0.14.0' + python: '>=3.6' + setuptools: '' + six: '>=1.11.0' + hash: + md5: 66125e28711d8ffc04a207a2b170316d + sha256: d74a3ddd3c3dd9bd7b00110a196e3af90490c5660674f18bfd53a8fdf91de418 + manager: conda + name: jsonschema + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2 + version: 3.2.0 +- category: main + dependencies: + entrypoints: '' + jupyter_core: '>=4.9.2' + nest-asyncio: '>=1.5.4' + python: '>=3.7' + python-dateutil: '>=2.8.2' + pyzmq: '>=23.0' + tornado: '>=6.0' + traitlets: '' + hash: + md5: dad80938cdccc5c274e954dda56b6eb5 + sha256: 181b36306cf9f389785c63199a14df6154583b605c86ab6c81f36c2fe57b4c9b + manager: conda + name: jupyter_client + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.3.4-pyhd8ed1ab_0.tar.bz2 + version: 7.3.4 +- category: main + dependencies: + markdown-it-py: ~=1.0 + python: '>=3.6' + hash: + md5: 49236fcd746a124eb56d326f79e1d46d + sha256: 6410ddd99136f4bb21b548f5174c01ed8ff184db402b03c5c232c7f5665cfd0c + manager: conda + name: mdit-py-plugins + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.2.8-pyhd8ed1ab_0.tar.bz2 + version: 0.2.8 +- category: main + dependencies: + latexcodec: '>=1.0.4' + python: '>=3.6' + pyyaml: '>=3.01' + setuptools: '' + six: '' + hash: + md5: 2099b86a7399c44c0c61cdb6de6915ba + sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc + manager: conda + name: pybtex + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2 + version: 0.24.0 +- category: main + dependencies: + python: '>=3.6' + setuptools: '' + hash: + md5: cb27e2ded147e5bcc7eafc1c6d343cb3 + sha256: 682de96d5c7be7a6223ea2a26f71d45cf4864a84b185b1c2e6d42975fa53d024 + manager: conda + name: pygments + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2 + version: 2.12.0 +- category: main + dependencies: + greenlet: '!=0.4.17' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 3ea40e96782d7b50f0ffd49caf729e4a + sha256: 3191d95ae8df7902155a126a0703b1b16dbd16b69abb08129c633a988890dca5 + manager: conda + name: sqlalchemy + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-1.4.37-py310h6c45266_0.tar.bz2 + version: 1.4.37 +- category: main + dependencies: + asttokens: '' + executing: '' + pure_eval: '' + python: '>=3.5' + hash: + md5: 8c0ce3e6bf18a0c810125aef58a2a6f3 + sha256: 0b7fe7899afb9e226abd86b890d284b3a83f0b76853c7d429b38b345500267bb + manager: conda + name: stack_data + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.2.0-pyhd8ed1ab_0.tar.bz2 + version: 0.2.0 +- category: main + dependencies: + ptyprocess: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + tornado: '>=6.1.0' + hash: + md5: 27742b4b454560ea7f1147b2fb6cc57c + sha256: 557e9ef5828fb5be0f2b35993da045086af5d8c82b5c666b64dc410bdb4bd6d5 + manager: conda + name: terminado + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/terminado-0.15.0-py310h2ec42d9_0.tar.bz2 + version: 0.15.0 +- category: main + dependencies: + argon2-cffi-bindings: '' + flit-core: '>=3.4,<4' + python: '>=3.6' + hash: + md5: a0b402db58f73aaab8ee0ca1025a362e + sha256: 3a53cfd674641d9ff9901f5d4e1cc5e9a3ce9bb8b6a7dca826db840c2e39bc23 + manager: conda + name: argon2-cffi + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2 + version: 21.3.0 +- category: main + dependencies: + click: '' + jinja2: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + shellingham: '' + six: '' + hash: + md5: 6f12a1df4567497a3f3c443c38e6a660 + sha256: 95e6f28d4e20718d4d10d933559d59df7849eed061aff8179197919cdbbc52e3 + manager: conda + name: click-completion + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/click-completion-0.5.2-py310h2ec42d9_3.tar.bz2 + version: 0.5.2 +- category: main + dependencies: + pygments: '>=2.4.1,<3' + python: '>=3.7' + hash: + md5: 243f63592c8e449f40cd42eb5cf32f40 + sha256: 08453e09d5a6bbaeeca839553a5dfd7a377a97550efab96019c334a8042f54f5 + manager: conda + name: jupyterlab_pygments + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2 + version: 0.2.2 +- category: main + dependencies: + jsonschema: '>=2.6' + jupyter_core: '' + python: '>=3.7' + python-fastjsonschema: '' + traitlets: '>=5.1' + hash: + md5: 770f6659243e2c79a0b8488b0e463bd1 + sha256: 2712d7e859c8fa6955118e62c4085c4d9529c615c70cfe09193ec69c7bf95f41 + manager: conda + name: nbformat + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.4.0-pyhd8ed1ab_0.tar.bz2 + version: 5.4.0 +- category: main + dependencies: + docutils: '>=0.8' + pybtex: '>=0.16' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + setuptools: '' + hash: + md5: c2a424e7c25dc7313c63d03633cd3407 + sha256: d1d24d285f27493cff3ceb299e1fd76a5ca834dafe6e64e8067b38cb4b4bc79b + manager: conda + name: pybtex-docutils + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pybtex-docutils-1.0.2-py310h2ec42d9_1.tar.bz2 + version: 1.0.2 +- category: main + dependencies: + cryptography: '>=35.0' + python: '>=3.6' + hash: + md5: 1d7e241dfaf5475e893d4b824bb71b44 + sha256: 02ee40855abbce429022d2653b9e1649f23398b2ebab53247de69bd35bc05ba5 + manager: conda + name: pyopenssl + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2 + version: 22.0.0 +- category: main + dependencies: + backports.functools_lru_cache: '' + python: '' + hash: + md5: 5266fcd697043c59621fda522b3d78ee + sha256: be098694551ab1b9a1a4bcf28d61f3edd5a17325a33ca723e571298dd8645ca2 + manager: conda + name: wcwidth + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + markdown-it-py: '>=1.0,<3.0' + mdit-py-plugins: '' + nbformat: '' + python: '>=3.6' + pyyaml: '' + toml: '' + hash: + md5: aba00353637aa69640ec2ae150dc592d + sha256: 4e27b6df452877186334ca027470e849418736afc7195b6ac3abfe6149831225 + manager: conda + name: jupytext + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupytext-1.13.8-pyh4b9bcc7_0.tar.bz2 + version: 1.13.8 +- category: main + dependencies: + jupyter_client: '>=6.1.5' + nbformat: '>=5.0' + nest-asyncio: '' + python: '>=3.7' + traitlets: '>=5.0.0' + hash: + md5: 3edde88a191701cf052216c4ba353a83 + sha256: 1b9d7e31e2dffc486b9fa567254eca002bfc738fafc3e466604487af5223b053 + manager: conda + name: nbclient + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.13-pyhd8ed1ab_0.tar.bz2 + version: 0.5.13 +- category: main + dependencies: + python: '>=3.6' + wcwidth: '' + hash: + md5: 9e720b57b22ef3032b4fb081697819dd + sha256: 3b80c72e179eb9be0ab4a2c91ed30b92e7d770a70e8072ed2ab53f0a317eb966 + manager: conda + name: prompt-toolkit + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.29-pyha770c72_0.tar.bz2 + version: 3.0.29 +- category: main + dependencies: + brotlipy: '>=0.6.0' + certifi: '' + cryptography: '>=1.3.4' + idna: '>=2.0.0' + pyopenssl: '>=0.14' + pysocks: '>=1.5.6,<2.0,!=1.5.7' + python: <4.0 + hash: + md5: 0ea179ee251aa7100807c35bc0252693 + sha256: 111dec99470869fa03e72bf2102f16db55c29538797c08e7765e9d6515f810df + manager: conda + name: urllib3 + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2 + version: 1.26.9 +- category: main + dependencies: + appnope: '' + backcall: '' + decorator: '' + jedi: '>=0.16' + matplotlib-inline: '' + pexpect: '>4.3' + pickleshare: '' + prompt-toolkit: '>=2.0.0,<3.1.0,!=3.0.0,!=3.0.1' + pygments: '>=2.4.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + setuptools: '>=18.5' + stack_data: '' + traitlets: '>=5' + hash: + md5: 154e170785f52a9a769d4b6c9b803d43 + sha256: 23f9420eb8ae32573a72c427481e401f48c9632bf939d88d0d06c5b605ab8d98 + manager: conda + name: ipython + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ipython-8.4.0-py310h2ec42d9_0.tar.bz2 + version: 8.4.0 +- category: main + dependencies: + beautifulsoup4: '' + bleach: '' + defusedxml: '' + entrypoints: '>=0.2.2' + jinja2: '>=3.0' + jupyter_core: '>=4.7' + jupyterlab_pygments: '' + markupsafe: '>=2.0' + mistune: '>=0.8.1,<2' + nbclient: '>=0.5.0' + nbformat: '>=5.1' + packaging: '' + pandocfilters: '>=1.4.1' + pygments: '>=2.4.1' + python: '>=3.7' + tinycss2: '' + traitlets: '>=5.0' + hash: + md5: 42f74c4b38a099025167e76a7437edf1 + sha256: 79a8221c2bf112ad56f26dbcc7928cff414ae6564954d2b79575b2b696a7d0fb + manager: conda + name: nbconvert-core + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + certifi: '>=2017.4.17' + charset-normalizer: '>=2.0.0,<2.1' + idna: '>=2.5,<4' + python: '>=3.6' + urllib3: '>=1.21.1,<1.27' + hash: + md5: 80c4854bb29f39f202819c4d4294d7c5 + sha256: 7bf99b7fbdc3039ff65b0921bc870de99136b239f93a9baa0cb9a34faecd23c6 + manager: conda + name: requests + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_0.tar.bz2 + version: 2.28.0 +- category: main + dependencies: + appnope: '' + debugpy: '>=1.0' + ipython: '>=7.23.1' + jupyter_client: '>=6.1.12' + matplotlib-inline: '>=0.1' + nest-asyncio: '' + packaging: '' + psutil: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + tornado: '>=6.1' + traitlets: '>=5.1.0' + hash: + md5: 07eb43741251ed073f98e3c97c4d99c0 + sha256: 9c0ab423ebfa3f33c4ed7d6b1687d588cec8069f06ad23f046d60cac9cc8f656 + manager: conda + name: ipykernel + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ipykernel-6.13.1-py310ha188af9_0.tar.bz2 + version: 6.13.1 +- category: main + dependencies: + anyio: '>=3.1.0' + argon2-cffi: '' + jinja2: '' + jupyter_client: '>=6.1.12' + jupyter_core: '>=4.7.0' + nbconvert-core: '>=6.4.4' + nbformat: '>=5.2.0' + packaging: '' + prometheus_client: '' + python: '>=3.7' + pyzmq: '>=17' + send2trash: '' + terminado: '>=0.8.3' + tornado: '>=6.1.0' + traitlets: '>=5.1.0' + websocket-client: '' + hash: + md5: 81a57e33282202d19b25f5eb81343ea6 + sha256: 9942c1979b153b2abda3fec454ccb7591cf5d40ce49db8d6eb7cd6798f7ac182 + manager: conda + name: jupyter_server + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.17.1-pyhd8ed1ab_0.tar.bz2 + version: 1.17.1 +- category: main + dependencies: + nbconvert-core: 6.5.0 pyhd8ed1ab_0 + pandoc: '' + python: '>=3.7' + hash: + md5: d7421adfc67100021d87032447066129 + sha256: 737fe95e66f8cacc7a5228df132c6f8979f5dc23144e4037575b857aa9f322cb + manager: conda + name: nbconvert-pandoc + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + alabaster: '>=0.7,<0.8' + babel: '>=1.3' + colorama: '>=0.3.5' + docutils: '>=0.14,<0.18' + imagesize: '' + importlib-metadata: '>=4.4' + jinja2: '>=2.3' + packaging: '' + pygments: '>=2.0' + python: '>=3.6' + requests: '>=2.5.0' + snowballstemmer: '>=1.1' + sphinxcontrib-applehelp: '' + sphinxcontrib-devhelp: '' + sphinxcontrib-htmlhelp: '>=2.0.0' + sphinxcontrib-jsmath: '' + sphinxcontrib-qthelp: '' + sphinxcontrib-serializinghtml: '>=1.1.5' + hash: + md5: 46b38d88c4270ff9ba78a89c83c66345 + sha256: 2fe70d936cc969e20f07a7df64438587261f187d4f08e1c0f412cdd1d632730c + manager: conda + name: sphinx + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2 + version: 4.5.0 +- category: main + dependencies: + jupyter_server: '>=1.1,<2' + python: '>=3.7' + hash: + md5: 0393370c2dec5e92e1727a8650f908f7 + sha256: f68d3781d55177ee0485933ed5988f820103d74d4c82099e974c4e7a414ba416 + manager: conda + name: jupyter-server-mathjax + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.5-pyhc268e32_0.tar.bz2 + version: 0.2.5 +- category: main + dependencies: + docutils: '>=0.15,<0.18' + jinja2: '' + markdown-it-py: '>=1.0.0,<2.0.0' + mdit-py-plugins: ~=0.2.8 + python: '>=3.6' + pyyaml: '' + sphinx: '>=3.1,<5' + hash: + md5: 0c2976e0a1af80ce224388da557eeece + sha256: 34ac36964a46665c03c7cd840fc769bbafa04133f7d6e358a269c60b787b84b2 + manager: conda + name: myst-parser + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/myst-parser-0.15.2-pyhd8ed1ab_0.tar.bz2 + version: 0.15.2 +- category: main + dependencies: + nbconvert-core: 6.5.0 pyhd8ed1ab_0 + nbconvert-pandoc: 6.5.0 pyhd8ed1ab_0 + python: '>=3.7' + hash: + md5: 156c180588e38b9f41758058824ec50f + sha256: 1ee814e7686f403491fb818bdc06133244650d791d93d850703cb0b13eccf1b4 + manager: conda + name: nbconvert + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-6.5.0-pyhd8ed1ab_0.tar.bz2 + version: 6.5.0 +- category: main + dependencies: + beautifulsoup4: '' + docutils: '!=0.17.0' + python: '>=3.7' + sphinx: '' + hash: + md5: 7d8390ec71225ea9841b276552fdffba + sha256: 7a4e49937241244ad193644f1cecbb9ef649032afc5e01961dadf9ed73777588 + manager: conda + name: pydata-sphinx-theme + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.8.1-pyhd8ed1ab_0.tar.bz2 + version: 0.8.1 +- category: main + dependencies: + python: '' + sphinx: '>=1.8' + hash: + md5: 2ae3ce35de0c1cec45c94182694f8d1b + sha256: 2578e9a84f3d4435ad1065daa55ad22a401968c09842220337e8195336f94839 + manager: conda + name: sphinx-comments + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-comments-0.0.3-pyh9f0ad1d_0.tar.bz2 + version: 0.0.3 +- category: main + dependencies: + python: '>=3' + sphinx: '>=1.8' + hash: + md5: 4c969cdd5191306c269490f7ff236d9c + sha256: 949e2ba4b0e431a094804336965f3e8244f8c1a25d05e15482a293d72434e6ea + manager: conda + name: sphinx-copybutton + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.0-pyhd8ed1ab_0.tar.bz2 + version: 0.5.0 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3,<5' + hash: + md5: 926164ec749271751a441168cd740e41 + sha256: 1ce6f640f22cfe76b34fc8540fe57fe5a39c571390e1799e7e659b31b3aa9c5e + manager: conda + name: sphinx-design + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.1.0-pyhd8ed1ab_0.tar.bz2 + version: 0.1.0 +- category: main + dependencies: + attrs: '>=20.3,<22' + click: '>=7.1,<9' + python: '>=3.6' + pyyaml: '' + sphinx: '>=3,<5' + hash: + md5: 91ae8770569b73f25e1127526c1329ed + sha256: 7671e91372492ee55cc5d0d72e890538acbf99f7d9328680ff035de957e00c64 + manager: conda + name: sphinx-external-toc + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-external-toc-0.2.4-pyhd8ed1ab_0.tar.bz2 + version: 0.2.4 +- category: main + dependencies: + importlib_resources: '' + python: '>=3.6' + sphinx: '>=3,<5' + hash: + md5: 6e4a69a0c8adbb48178fdf3efa24fa4c + sha256: 5ecaca142b8d8b05177eb5c0dcc3bcc721d409accce812a8b470fd8010b278c3 + manager: conda + name: sphinx-jupyterbook-latex + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-jupyterbook-latex-0.4.6-pyhd8ed1ab_0.tar.bz2 + version: 0.4.6 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3' + hash: + md5: 40749a4d0f0d2e11c65fb26c1cd16a90 + sha256: 6c8241fdb4222799c04677b06b2e1f480a6c11f27c8fccc9f73f98798d3c44d8 + manager: conda + name: sphinx-multitoc-numbering + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-multitoc-numbering-0.1.3-pyhd8ed1ab_0.tar.bz2 + version: 0.1.3 +- category: main + dependencies: + python: '>=3.6' + sphinx: '>=3.5,<5' + hash: + md5: 1d4fdd342aa955085a0f21e26bb585f7 + sha256: 2d37e4dcc0f346372a60574d57b67a65d9a742f56b5ec66f3ddc40d52208a0a9 + manager: conda + name: sphinx-thebe + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-thebe-0.1.2-pyhd8ed1ab_0.tar.bz2 + version: 0.1.2 +- category: main + dependencies: + docutils: '' + python: '>=3.6' + sphinx: '' + hash: + md5: 71418887aa6599ea2935f4958e5e1d15 + sha256: 80d697febe2cfc9b3dd81a4a72389a34e05666c2495409267cbd588bbbf91889 + manager: conda + name: sphinx-togglebutton + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-togglebutton-0.3.1-pyhd8ed1ab_0.tar.bz2 + version: 0.3.1 +- category: main + dependencies: + dataclasses: '' + docutils: '>=0.8' + pybtex: '>=0.24' + pybtex-docutils: '>=1' + python: '>=3.6' + sphinx: '>=2.1' + hash: + md5: d826ac2b3edfe7a8113596c2023f092b + sha256: a96befb6363672c66f32acf173938001481ea37b4280981523e126441eecdd00 + manager: conda + name: sphinxcontrib-bibtex + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.4.2-pyhd8ed1ab_0.tar.bz2 + version: 2.4.2 +- category: main + dependencies: + colorama: '' + gitpython: '!=2.1.4,!=2.1.5,!=2.1.6' + jinja2: '>=2.9' + jupyter-server-mathjax: '>=0.2.2' + jupyter_server: '' + nbformat: '' + pygments: '' + python: '>=3.6' + requests: '' + six: '' + tornado: '' + hash: + md5: 38dc061ffabe665b79f4c7c52cefa809 + sha256: 6b9546f891fc503ace81cb62b777e4d64953cfc7a940a1d65fc6213c8581d996 + manager: conda + name: nbdime + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/nbdime-3.1.1-pyhd8ed1ab_0.tar.bz2 + version: 3.1.1 +- category: main + dependencies: + argon2-cffi: '' + ipykernel: '' + ipython_genutils: '' + jinja2: '' + jupyter_client: '>=5.3.4' + jupyter_core: '>=4.6.1' + nbconvert: '>=5' + nbformat: '' + prometheus_client: '' + python: '>=3.7' + pyzmq: '>=17' + send2trash: '>=1.5.0' + terminado: '>=0.8.3' + tornado: '>=6.1' + traitlets: '>=4.2.1' + hash: + md5: 77fc67c5bbea44fd41e8bbe2ac82d1ad + sha256: 3bf942438d0bb1d2d7eaddfcc302a23ed9f67662f4d31737c7d7dbacbd4da75c + manager: conda + name: notebook + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.12-pyha770c72_0.tar.bz2 + version: 6.4.12 +- category: main + dependencies: + pydata-sphinx-theme: '>=0.8.0,<0.9.0' + python: '>=3.7' + pyyaml: '' + sphinx: '>=3,<5' + hash: + md5: ec9a160c2ea0f98a3a0fc2700eef1865 + sha256: e2cc3c00a4939c14095fdaad0584eb38a2bdc7d31b1ef33d292a55736edc5fbf + manager: conda + name: sphinx-book-theme + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-0.3.2-pyhd8ed1ab_0.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + attrs: '' + click-completion: '' + click-log: '' + nbclient: '>=0.2,<0.6' + nbdime: '' + nbformat: '' + python: '>=3.6' + sqlalchemy: '>=1.3.12,<1.5' + hash: + md5: 03cd9218c96d513854bfc8714eaf9451 + sha256: a07842216f74c5fefde839a97cda5f1b5fba64a12a38e87f4d455dfc9d082bb5 + manager: conda + name: jupyter-cache + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-cache-0.4.3-pyhd8ed1ab_0.tar.bz2 + version: 0.4.3 +- category: main + dependencies: + notebook: '>=4.4.1' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 7626df38da48f9053770270c53430411 + sha256: af169d650b21b88ce2034c50aa54c94e2e8761607fe6b44b06637a143d8f2aec + manager: conda + name: widgetsnbextension + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/widgetsnbextension-3.6.0-py310h2ec42d9_0.tar.bz2 + version: 3.6.0 +- category: main + dependencies: + ipykernel: '>=4.5.1' + ipython: '>=4.0.0' + ipython_genutils: '>=0.2.0,<0.3.0' + jupyterlab_widgets: '>=1.0.0,<2.0.0' + nbformat: '>=4.2.0' + python: '>=3.3' + traitlets: '>=4.3.1,<6.0.0' + widgetsnbextension: '>=3.6.0,<3.7.0' + hash: + md5: a3d2ccd3d9f9fcb65765c22f500529b4 + sha256: c51de31925a7d55cba8ed15756fe1844bc10d1b74e1a3b1462771611401d243e + manager: conda + name: ipywidgets + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.7.0-pyhd8ed1ab_0.tar.bz2 + version: 7.7.0 +- category: main + dependencies: + ipython: '' + ipywidgets: '>=7.0.0' + nbconvert: '>=5.5' + nbformat: '' + python: '>=3.6' + sphinx: '>=2' + hash: + md5: a47ca0f91417e5d29d075ca416254466 + sha256: 4034796e6adfc2584c66d23f0f5b15b4c5cb10f5e359ebbdd417af7f816d0718 + manager: conda + name: jupyter-sphinx + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-sphinx-0.3.2-pyhd8ed1ab_1.tar.bz2 + version: 0.3.2 +- category: main + dependencies: + docutils: '>=0.15,<0.18' + importlib-metadata: '' + ipython: '' + ipywidgets: '>=7.0.0,<8' + jupyter-cache: ~=0.4.1 + jupyter-sphinx: ~=0.3.2 + myst-parser: ~=0.15.2 + nbconvert: '>=5.6,<7' + nbformat: ~=5.0 + python: '>=3.6' + pyyaml: '' + sphinx: '>=3.1,<5' + sphinx-togglebutton: ~=0.3.0 + hash: + md5: 800e968e63eb593c651a14907fd82d26 + sha256: b40f9c08f955a0964cca82cc5f5f6154c59e0eb10f5374ba2c5b8c1911066403 + manager: conda + name: myst-nb + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/myst-nb-0.13.2-pyhd8ed1ab_0.tar.bz2 + version: 0.13.2 +- category: main + dependencies: + click: '>=7.1,<9' + docutils: '>=0.15,<0.18' + jinja2: '' + jsonschema: <4 + linkify-it-py: '>=1.0.1,<1.1.0' + myst-nb: '>=0.13.1,<0.14.0' + python: '>=3.7' + pyyaml: '' + sphinx: '>=4,<5' + sphinx-book-theme: '>=0.3.2,<0.4.0' + sphinx-comments: '' + sphinx-copybutton: '' + sphinx-design: '>=0.1.0,<0.2.0' + sphinx-external-toc: '>=0.2.3,<0.3.0' + sphinx-jupyterbook-latex: '>=0.4.6,<0.5.0' + sphinx-multitoc-numbering: '>=0.1.3,<0.2.0' + sphinx-thebe: '>=0.1.1,<0.2.0' + sphinx-togglebutton: '' + sphinxcontrib-bibtex: '>=2.2.0,<=2.5.0' + hash: + md5: fc1751a83e42891bb0e3bfffe5e28350 + sha256: 7d40e1e4d0764411c6b456de439e2b79419c90832d85411c20109b61a63c42a6 + manager: conda + name: jupyter-book + optional: false + platform: osx-64 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-book-0.13.0-pyhd8ed1ab_0.tar.bz2 + version: 0.13.0 +version: 1 diff --git a/conda/conda-osx-64.lock.yml b/conda/conda-osx-64.lock.yml new file mode 100644 index 0000000..e6da6d2 --- /dev/null +++ b/conda/conda-osx-64.lock.yml @@ -0,0 +1,162 @@ +# Generated by conda-lock. +# platform: osx-64 +# input_hash: 144c1aff3d186a22267fde83238c2c1d2709d1683e4d514907386bad21f58279 + +channels: + - conda-forge +dependencies: + - bzip2=1.0.8=h0d85af4_4 + - ca-certificates=2022.5.18.1=h033912b_0 + - libcxx=14.0.5=hce7ea42_1 + - libffi=3.4.2=h0d85af4_5 + - libsodium=1.0.18=hbcb3906_1 + - libzlib=1.2.12=h6c3fc93_0 + - ncurses=6.3=h96cf925_1 + - pandoc=2.18=h694c41f_0 + - tzdata=2022a=h191b570_0 + - xz=5.2.5=haf1e3a3_1 + - yaml=0.2.5=h0d85af4_2 + - openssl=1.1.1o=hfe4f2af_0 + - readline=8.1.2=h3899abd_0 + - tk=8.6.12=h5dbffcc_0 + - zeromq=4.3.4=he49afe7_1 + - zlib=1.2.12=h6c3fc93_0 + - sqlite=3.38.5=hd9f0692_0 + - python=3.10.5=hdaaf3db_0_cpython + - alabaster=0.7.12=py_0 + - appnope=0.1.3=pyhd8ed1ab_0 + - attrs=21.4.0=pyhd8ed1ab_0 + - backcall=0.2.0=pyh9f0ad1d_0 + - backports=1.0=py_2 + - charset-normalizer=2.0.12=pyhd8ed1ab_0 + - colorama=0.4.4=pyh9f0ad1d_0 + - dataclasses=0.8=pyhc8e2a94_3 + - decorator=5.1.1=pyhd8ed1ab_0 + - defusedxml=0.7.1=pyhd8ed1ab_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - executing=0.8.3=pyhd8ed1ab_0 + - flit-core=3.7.1=pyhd8ed1ab_0 + - idna=3.3=pyhd8ed1ab_0 + - imagesize=1.3.0=pyhd8ed1ab_0 + - ipython_genutils=0.2.0=py_1 + - jupyterlab_widgets=1.1.0=pyhd8ed1ab_0 + - nest-asyncio=1.5.5=pyhd8ed1ab_0 + - pandocfilters=1.5.0=pyhd8ed1ab_0 + - parso=0.8.3=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - prometheus_client=0.14.1=pyhd8ed1ab_0 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - pycparser=2.21=pyhd8ed1ab_0 + - pyparsing=3.0.9=pyhd8ed1ab_0 + - python-fastjsonschema=2.15.3=pyhd8ed1ab_0 + - python_abi=3.10=2_cp310 + - pytz=2022.1=pyhd8ed1ab_0 + - send2trash=1.8.0=pyhd8ed1ab_0 + - shellingham=1.4.0=pyh44b312d_0 + - six=1.16.0=pyh6c4a22f_0 + - smmap=3.0.5=pyh44b312d_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.3.1=pyhd8ed1ab_0 + - sphinxcontrib-applehelp=1.0.2=py_0 + - sphinxcontrib-devhelp=1.0.2=py_0 + - sphinxcontrib-htmlhelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-jsmath=1.0.1=py_0 + - sphinxcontrib-qthelp=1.0.3=py_0 + - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2 + - toml=0.10.2=pyhd8ed1ab_0 + - traitlets=5.2.2.post1=pyhd8ed1ab_0 + - typing_extensions=4.2.0=pyha770c72_1 + - uc-micro-py=1.0.1=pyhd8ed1ab_0 + - webencodings=0.5.1=py_1 + - websocket-client=1.3.2=pyhd8ed1ab_0 + - zipp=3.8.0=pyhd8ed1ab_0 + - asttokens=2.0.5=pyhd8ed1ab_0 + - babel=2.10.2=pyhd8ed1ab_0 + - beautifulsoup4=4.11.1=pyha770c72_0 + - certifi=2022.5.18.1=py310h2ec42d9_0 + - cffi=1.15.0=py310hcc37b68_0 + - click=8.1.3=py310h2ec42d9_0 + - debugpy=1.6.0=py310h9d931ec_0 + - docutils=0.17.1=py310h2ec42d9_2 + - gitdb=4.0.9=pyhd8ed1ab_0 + - greenlet=1.1.2=py310h9d931ec_2 + - importlib-metadata=4.11.4=py310h2ec42d9_0 + - importlib_resources=5.7.1=pyhd8ed1ab_1 + - jedi=0.18.1=py310h2ec42d9_1 + - jupyter_core=4.10.0=py310h2ec42d9_0 + - latexcodec=2.0.1=pyh9f0ad1d_0 + - linkify-it-py=1.0.3=pyhd8ed1ab_0 + - markdown-it-py=1.1.0=pyhd8ed1ab_0 + - markupsafe=2.1.1=py310h1961e1f_1 + - matplotlib-inline=0.1.3=pyhd8ed1ab_0 + - mistune=0.8.4=py310he24745e_1005 + - packaging=21.3=pyhd8ed1ab_0 + - pexpect=4.8.0=pyh9f0ad1d_2 + - psutil=5.9.1=py310h6c45266_0 + - pyrsistent=0.18.1=py310h1961e1f_1 + - pysocks=1.7.1=py310h2ec42d9_5 + - python-dateutil=2.8.2=pyhd8ed1ab_0 + - pyyaml=6.0=py310h1961e1f_4 + - pyzmq=23.1.0=py310h85fb675_0 + - setuptools=62.3.4=py310h2ec42d9_0 + - sniffio=1.2.0=py310h2ec42d9_3 + - tinycss2=1.1.1=pyhd8ed1ab_0 + - tornado=6.1=py310h1961e1f_3 + - anyio=3.6.1=py310h2ec42d9_0 + - argon2-cffi-bindings=21.2.0=py310h1961e1f_2 + - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 + - bleach=5.0.0=pyhd8ed1ab_0 + - brotlipy=0.7.0=py310h1961e1f_1004 + - click-log=0.3.2=pyh9f0ad1d_0 + - cryptography=37.0.2=py310h52c3658_0 + - gitpython=3.1.27=pyhd8ed1ab_0 + - jinja2=3.1.2=pyhd8ed1ab_1 + - jsonschema=3.2.0=pyhd8ed1ab_3 + - jupyter_client=7.3.4=pyhd8ed1ab_0 + - mdit-py-plugins=0.2.8=pyhd8ed1ab_0 + - pybtex=0.24.0=pyhd8ed1ab_2 + - pygments=2.12.0=pyhd8ed1ab_0 + - sqlalchemy=1.4.37=py310h6c45266_0 + - stack_data=0.2.0=pyhd8ed1ab_0 + - terminado=0.15.0=py310h2ec42d9_0 + - argon2-cffi=21.3.0=pyhd8ed1ab_0 + - click-completion=0.5.2=py310h2ec42d9_3 + - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 + - nbformat=5.4.0=pyhd8ed1ab_0 + - pybtex-docutils=1.0.2=py310h2ec42d9_1 + - pyopenssl=22.0.0=pyhd8ed1ab_0 + - wcwidth=0.2.5=pyh9f0ad1d_2 + - jupytext=1.13.8=pyh4b9bcc7_0 + - nbclient=0.5.13=pyhd8ed1ab_0 + - prompt-toolkit=3.0.29=pyha770c72_0 + - urllib3=1.26.9=pyhd8ed1ab_0 + - ipython=8.4.0=py310h2ec42d9_0 + - nbconvert-core=6.5.0=pyhd8ed1ab_0 + - requests=2.28.0=pyhd8ed1ab_0 + - ipykernel=6.13.1=py310ha188af9_0 + - jupyter_server=1.17.1=pyhd8ed1ab_0 + - nbconvert-pandoc=6.5.0=pyhd8ed1ab_0 + - sphinx=4.5.0=pyh6c4a22f_0 + - jupyter-server-mathjax=0.2.5=pyhc268e32_0 + - myst-parser=0.15.2=pyhd8ed1ab_0 + - nbconvert=6.5.0=pyhd8ed1ab_0 + - pydata-sphinx-theme=0.8.1=pyhd8ed1ab_0 + - sphinx-comments=0.0.3=pyh9f0ad1d_0 + - sphinx-copybutton=0.5.0=pyhd8ed1ab_0 + - sphinx-design=0.1.0=pyhd8ed1ab_0 + - sphinx-external-toc=0.2.4=pyhd8ed1ab_0 + - sphinx-jupyterbook-latex=0.4.6=pyhd8ed1ab_0 + - sphinx-multitoc-numbering=0.1.3=pyhd8ed1ab_0 + - sphinx-thebe=0.1.2=pyhd8ed1ab_0 + - sphinx-togglebutton=0.3.1=pyhd8ed1ab_0 + - sphinxcontrib-bibtex=2.4.2=pyhd8ed1ab_0 + - nbdime=3.1.1=pyhd8ed1ab_0 + - notebook=6.4.12=pyha770c72_0 + - sphinx-book-theme=0.3.2=pyhd8ed1ab_0 + - jupyter-cache=0.4.3=pyhd8ed1ab_0 + - widgetsnbextension=3.6.0=py310h2ec42d9_0 + - ipywidgets=7.7.0=pyhd8ed1ab_0 + - jupyter-sphinx=0.3.2=pyhd8ed1ab_1 + - myst-nb=0.13.2=pyhd8ed1ab_0 + - jupyter-book=0.13.0=pyhd8ed1ab_0 diff --git a/conda/environment.yml b/conda/environment.yml new file mode 100644 index 0000000..faef1e2 --- /dev/null +++ b/conda/environment.yml @@ -0,0 +1,14 @@ +# `conda env create --name geosmart --file=environment.yml` +# `conda activate geosmart` +# `conda env update --file environment.yml --prune` + +name: geosmart +channels: + - conda-forge +dependencies: + - python=3.10 + - sphinxcontrib-bibtex + - jupyter-book=0.13 + - jupytext + - plotly + - pandas diff --git a/conda/lock-environment.sh b/conda/lock-environment.sh new file mode 100644 index 0000000..8907b87 --- /dev/null +++ b/conda/lock-environment.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# This script will re-generate reproducible lockfiles +# Execution needs to be from inside the `conda` folder + +ENV_FILE="environment.yml" +LOCK_ENV='CondaLock' + +# Generate CondaLock environment unless present +conda env list | grep ${LOCK_ENV} > /dev/null + +if [[ $? -eq 1 ]]; then + conda create -q -y -n ${LOCK_ENV} -c conda-forge conda-lock=1.0.5 mamba=0.24 +fi + +# https://github.com/conda/conda/issues/7980#issuecomment-492784093 +eval "$(conda shell.bash hook)" +conda activate ${LOCK_ENV} + +if [[ ! -s "${ENV_FILE}" ]]; then + >&2 printf " Missing ${ENV_FILE} to generate environments with\n" + >&2 printf " Are you inside the 'conda' folder?\n" + exit 1 +fi + +# Local environments +## Generate explicit lock files +conda-lock lock --mamba -f ${ENV_FILE} + +# BinderHub support +## Generate environment.yml for binder compatibility +printf "Generate environment.yml for BinderHub \n" +conda-lock render -k env + +# Temporary fix for https://github.com/conda-incubator/conda-lock/issues/172 +sed -i.bak -r 's/--hash=md5:None//' conda-linux-64.lock.yml +sed -i.bak -r 's/--hash=md5:None//' conda-osx-64.lock.yml +rm *.yml.bak + + +# Remove CondaLock environment when the last command was successful +if [[ $? -eq 0 ]]; then + conda deactivate + conda remove -q -y --name ${LOCK_ENV} --all +fi