From 6976940b52d54992916166975a456c4cd2d16ee7 Mon Sep 17 00:00:00 2001 From: Greg Lucas Date: Mon, 26 Jun 2023 16:18:43 -0600 Subject: [PATCH 01/10] DOC: Start of sphinx documentation This adds the basics to start building our docs and organizing the sphinx page structure. --- .github/workflows/docs.yml | 56 ++ .gitignore | 3 + docs/Makefile | 20 + docs/README.md | 29 + docs/make.bat | 35 ++ docs/source/.nojekyll | 0 .../_static/imap-mark-hor-multicolor-dark.png | Bin 0 -> 26817 bytes docs/source/conf.py | 73 +++ docs/source/development/index.rst | 35 ++ docs/source/index.rst | 44 ++ docs/source/reference/index.rst | 26 + docs/source/reference/swe.rst | 16 + imap_processing/__init__.py | 1 + poetry.lock | 563 +++++++++++++++++- pyproject.toml | 8 +- 15 files changed, 896 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/Makefile create mode 100644 docs/README.md create mode 100644 docs/make.bat create mode 100644 docs/source/.nojekyll create mode 100644 docs/source/_static/imap-mark-hor-multicolor-dark.png create mode 100644 docs/source/conf.py create mode 100644 docs/source/development/index.rst create mode 100644 docs/source/index.rst create mode 100644 docs/source/reference/index.rst create mode 100644 docs/source/reference/swe.rst diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..7e79888d3 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,56 @@ +name: "Documentation Build" +concurrency: + group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} + cancel-in-progress: true +on: +- pull_request +- release + +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install .[doc] + + - name: Build documentation + run: | + make -C docs html + + - uses: actions/upload-artifact@v2 + with: + name: DocumentationHTML + path: docs/build/html/ + + # Publish built docs to gh-pages branch + - name: Commit documentation changes + # push docs only when a GitHub Release is made + if: github.event_name == 'release' && github.event.action == 'published' + run: | + git clone https://github.com/IMAP-Science-Operations-Center/imap_processing.git --branch gh-pages --single-branch gh-pages + cp -r docs/build/html/* gh-pages/ + cd gh-pages + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add . + git commit -m "Update documentation" -a || true + # The above command will fail if no changes were present, so we ignore that. + + - name: Publish docs + # push docs only when a GitHub Release is made + if: github.event_name == 'release' && github.event.action == 'published' + + uses: ad-m/github-push-action@master + with: + branch: gh-pages + directory: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 2dc53ca34..678557de5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Documentation ignore +docs/source/reference/generated + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..d0c3cbf10 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..d4d89981e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,29 @@ +# Documentation + +## Building documentation + +1. Install the documentation dependencies +2. Build the html documents under the `docs` directory + +Using poetry: + +```bash +# Install the optional documentation dependencies +poetry install --extras "doc" +# Make the html documentation +cd docs/source +poetry run sphinx-build . build +# View the documentation +open build/html/index.html +``` + +Using pip: + +```bash +# Install the optional documentation dependencies +pip install .[doc] +# Make the html documentation +make -C docs html +# View the documentation +open docs/build/html/index.html +``` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 000000000..6247f7e23 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/source/.nojekyll b/docs/source/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/docs/source/_static/imap-mark-hor-multicolor-dark.png b/docs/source/_static/imap-mark-hor-multicolor-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..022d8f56680cc20771cc370161a3348f310dc363 GIT binary patch literal 26817 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 literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 000000000..c9a1c36e7 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,73 @@ +""" +Configuration file for the Sphinx documentation builder. + +This file only contains a selection of the most common options. For a full +list see the documentation: +https://www.sphinx-doc.org/en/master/usage/configuration.html +""" + +# -- Path setup -------------------------------------------------------------- + +import sys + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use resolve() to make it absolute, like shown here. +# +from pathlib import Path + +import imap_processing + +sys.path.insert(0, Path("../../imap_processing").resolve()) + +# -- Project information ----------------------------------------------------- + +project = "imap_processing" +copyright = "2023, Regents of the University of Colorado" +author = "IMAP Science Operations Center" + +# The full version, including alpha/beta/rc tags +release = imap_processing.__version__ + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.autosummary", + "sphinx.ext.githubpages", # Helpful for publishing to gh-pages + "sphinx.ext.napoleon", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "pydata_sphinx_theme" + +html_logo = "_static/imap-mark-hor-multicolor-dark.png" + +html_theme_options = { + "github_url": "https://github.com/IMAP-Science-Operations-Center/imap_processing", +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + +# Autosummary +autosummary_generate = True diff --git a/docs/source/development/index.rst b/docs/source/development/index.rst new file mode 100644 index 000000000..4b53ee11c --- /dev/null +++ b/docs/source/development/index.rst @@ -0,0 +1,35 @@ +.. _development: + +Development +=========== + +To contribute to imap_processing, you can fork the GitHub repository, +add your code, and make a pull request. If you are adding additional functionality, +you should also include a test with your enhancement. + +imap_processing is designed to be run in a containerized environment, so +the dependencies will be locked in after a release and the data products will +be versioned appropriately to correspond with the code that produced them. + +A typical development workflow might look like the following: + +.. code:: bash + + # Install the development dependencies + pip install .[dev] + + # Install the pre-commit hooks + pre-commit install + + # Update the code on a feature branch + git checkout -b my-cool-feature + + # Run the tests + pytest + + # Commit the changes and push to your remote repository + git add my-file + git commit + git push -u origin my-cool-feature + + # Go to GitHub and open a pull request! diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 000000000..87113e5c3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,44 @@ + +IMAP Processing Documentation +============================= + +The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project +aimed at studying the interstellar medium and investigating the acceleration +mechanisms of particles within our galaxy. IMAP utilizes cutting-edge +technology and advanced instrumentation to gather valuable data and expand +our understanding of space. + +The IMAP project's Git repository serves as a centralized hub for collaboration +among researchers, scientists, and developers involved in the project. +It provides a platform for version control, code sharing, issue tracking, +and documentation, fostering a collaborative environment for advancing +the goals of the IMAP mission. + +Through the Git repository, contributors can access project resources, +explore the codebase, propose enhancements or bug fixes, and participate +in discussions with other team members. This collaborative approach promotes +efficient development and fosters innovation in the pursuit of interstellar +mapping and particle acceleration research. + +Join the IMAP Git repository to be part of an exciting scientific endeavor, +contribute your expertise, and help unlock the mysteries of the interstellar +medium and particle acceleration in our galaxy. Together, we can advance our +knowledge of the cosmos and pave the way for future discoveries in space +exploration. + +The [IMAP Website](https://imap.princeton.edu/) contains information about the +entire mission, including the science goals, the spacecraft, and the instruments. +The Science Operations Center (SOC) is responsible for the data processing on the +IMAP mission and being developed at +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/). + +The explicit code interfaces and structure are described in the :ref:`api`. + +.. toctree:: + :maxdepth: 1 + + reference/index + development/index + +If you make use of any imap_processing code, please consider citing it in your research. +TODO: Add a Zenodo DOI badge here. diff --git a/docs/source/reference/index.rst b/docs/source/reference/index.rst new file mode 100644 index 000000000..ea2476c60 --- /dev/null +++ b/docs/source/reference/index.rst @@ -0,0 +1,26 @@ +.. _api: + +API reference +============= + +.. currentmodule:: imap_processing + +This page gives an overview of the routines within the imap_processing package. +The package is organized by instrument, meaning each instrument is its own +module and has submodules for each processing step. + +Instruments +----------- + +.. toctree:: + :maxdepth: 1 + + swe + + +Utility functions can be found in modules within the top package level. + +.. autosummary:: + :toctree: generated/ + + decom diff --git a/docs/source/reference/swe.rst b/docs/source/reference/swe.rst new file mode 100644 index 000000000..500d40b7a --- /dev/null +++ b/docs/source/reference/swe.rst @@ -0,0 +1,16 @@ +.. _swe: + +SWE (Solar Wind Electrons) +========================== + +.. currentmodule:: imap_processing.swe + +This is the SWE Instrument module, which contains the code for processing +data from the SWE instrument. + +The L0 code to decommutate the CCSDS packet data can be found below. + +.. autosummary:: + :toctree: generated/ + + decom_swe diff --git a/imap_processing/__init__.py b/imap_processing/__init__.py index e69de29bb..3dc1f76bc 100644 --- a/imap_processing/__init__.py +++ b/imap_processing/__init__.py @@ -0,0 +1 @@ +__version__ = "0.1.0" diff --git a/poetry.lock b/poetry.lock index 364ec380b..eef7ff2d2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,5 +1,32 @@ # This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +[[package]] +name = "accessible-pygments" +version = "0.0.4" +description = "A collection of accessible pygments styles" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "accessible-pygments-0.0.4.tar.gz", hash = "sha256:e7b57a9b15958e9601c7e9eb07a440c813283545a20973f2574a5f453d0e953e"}, + {file = "accessible_pygments-0.0.4-py2.py3-none-any.whl", hash = "sha256:416c6d8c1ea1c5ad8701903a20fcedf953c6e720d64f33dc47bfb2d3f2fa4e8d"}, +] + +[package.dependencies] +pygments = ">=1.5" + +[[package]] +name = "alabaster" +version = "0.7.13" +description = "A configurable sidebar-enabled Sphinx theme" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] + [[package]] name = "atomicwrites" version = "1.4.1" @@ -30,6 +57,37 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope-interface"] tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +[[package]] +name = "babel" +version = "2.12.1" +description = "Internationalization utilities" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] + +[[package]] +name = "beautifulsoup4" +version = "4.12.2" +description = "Screen-scraping library" +category = "main" +optional = true +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "bitstring" version = "4.0.2" @@ -92,6 +150,18 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "certifi" +version = "2023.5.7" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, +] + [[package]] name = "cfgv" version = "3.3.1" @@ -104,16 +174,101 @@ files = [ {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, ] +[[package]] +name = "charset-normalizer" +version = "3.2.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = true +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] + [[package]] name = "click" -version = "8.1.3" +version = "8.1.4" description = "Composable command line interface toolkit" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"}, + {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"}, ] [package.dependencies] @@ -143,6 +298,18 @@ files = [ {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] +[[package]] +name = "docutils" +version = "0.20.1" +description = "Docutils -- Python Documentation Utilities" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, +] + [[package]] name = "filelock" version = "3.12.2" @@ -174,6 +341,50 @@ files = [ [package.extras] license = ["ukkonen"] +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "main" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.8.0" +description = "Read metadata from Python packages" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -186,6 +397,84 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markupsafe" +version = "2.1.3" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -239,14 +528,14 @@ files = [ [[package]] name = "platformdirs" -version = "3.7.0" +version = "3.8.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "platformdirs-3.7.0-py3-none-any.whl", hash = "sha256:cfd065ba43133ff103ab3bd10aecb095c2a0035fcd1f07217c9376900d94ba07"}, - {file = "platformdirs-3.7.0.tar.gz", hash = "sha256:87fbf6473e87c078d536980ba970a472422e94f17b752cfad17024c18876d481"}, + {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"}, + {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"}, ] [package.extras] @@ -300,6 +589,48 @@ files = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +[[package]] +name = "pydata-sphinx-theme" +version = "0.13.3" +description = "Bootstrap-based Sphinx theme from the PyData community" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "pydata_sphinx_theme-0.13.3-py3-none-any.whl", hash = "sha256:bf41ca6c1c6216e929e28834e404bfc90e080b51915bbe7563b5e6fda70354f0"}, + {file = "pydata_sphinx_theme-0.13.3.tar.gz", hash = "sha256:827f16b065c4fd97e847c11c108bf632b7f2ff53a3bca3272f63f3f3ff782ecc"}, +] + +[package.dependencies] +accessible-pygments = "*" +Babel = "*" +beautifulsoup4 = "*" +docutils = "!=0.17.0" +packaging = "*" +pygments = ">=2.7" +sphinx = ">=4.2" +typing-extensions = "*" + +[package.extras] +dev = ["nox", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml"] +doc = ["ablog (>=0.11.0rc2)", "colorama", "ipyleaflet", "jupyter_sphinx", "linkify-it-py", "matplotlib", "myst-nb", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube", "sphinxext-rediraffe", "xarray"] +test = ["codecov", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "pygments" +version = "2.15.1" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pytest" version = "6.2.5" @@ -375,6 +706,28 @@ files = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "ruff" version = "0.0.253" @@ -419,6 +772,30 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-g testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "soupsieve" +version = "2.4.1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, + {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, +] + [[package]] name = "space-packet-parser" version = "4.0.2" @@ -434,6 +811,137 @@ files = [ [package.dependencies] bitstring = ">=3.0.0,<5" +[[package]] +name = "sphinx" +version = "7.0.1" +description = "Python documentation generator" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "Sphinx-7.0.1.tar.gz", hash = "sha256:61e025f788c5977d9412587e733733a289e2b9fdc2fef8868ddfbfc4ccfe881d"}, + {file = "sphinx-7.0.1-py3-none-any.whl", hash = "sha256:60c5e04756c1709a98845ed27a2eed7a556af3993afb66e77fec48189f742616"}, +] + +[package.dependencies] +alabaster = ">=0.7,<0.8" +babel = ">=2.9" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.18.1,<0.21" +imagesize = ">=1.3" +importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.0" +packaging = ">=21.0" +Pygments = ">=2.13" +requests = ">=2.25.0" +snowballstemmer = ">=2.0" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.5" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] +test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.2" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.1" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.3" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.5" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "main" +optional = true +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + [[package]] name = "toml" version = "0.10.2" @@ -460,16 +968,34 @@ files = [ [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, +] + +[[package]] +name = "urllib3" +version = "2.0.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, + {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, ] +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "virtualenv" version = "20.23.1" @@ -491,11 +1017,28 @@ platformdirs = ">=3.5.1,<4" docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"] +[[package]] +name = "zipp" +version = "3.16.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "zipp-3.16.0-py3-none-any.whl", hash = "sha256:5dadc3ad0a1f825fe42ce1bce0f2fc5a13af2e6b2d386af5b0ff295bc0a287d3"}, + {file = "zipp-3.16.0.tar.gz", hash = "sha256:1876cb065531855bbe83b6c489dcf69ecc28f1068d8e95959fe8bbc77774c941"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [extras] dev = ["black", "pre-commit", "ruff"] +doc = ["pydata-sphinx-theme", "sphinx"] test = ["pytest"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "ce9fbe8fd0fe8bf0145ae82170bd10693fa15f2e964ad88ab1793e7c0ebef3c8" +content-hash = "69fe2f268770a713f0f60756e1700018caf7da4223c144b7d630772d144cbe6b" diff --git a/pyproject.toml b/pyproject.toml index 5ee7c5aed..ed95907b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,15 +31,17 @@ classifiers = [ python = ">=3.9,<3.12" space_packet_parser = ">=4.0.2,<5" - - +# Optional dependencies black = {version="^23.1.0", optional=true} pre-commit = {version="^3.3.3,<4", optional=true} -ruff = {version="^0.0.253", optional=true} +pydata-sphinx-theme = {version="*", optional=true} pytest = {version=">=6.2.5,<7", optional=true} +ruff = {version="^0.0.253", optional=true} +sphinx = {version="*", optional=true} [tool.poetry.extras] dev = ["black", "pre-commit", "ruff"] +doc = ["sphinx", "pydata-sphinx-theme"] test = ["pytest"] [project.urls] From 35210dc07eba9547c54e77bde1b583732efc7586 Mon Sep 17 00:00:00 2001 From: Matthew Bourque Date: Tue, 11 Jul 2023 15:49:24 -0600 Subject: [PATCH 02/10] Added all-contributors section and badge --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9633a82e5..3326d3fae 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![All Contributors](https://img.shields.io/github/all-contributors/IMAP-Science-Operations-Center/imap_processing?color=ee8449&style=flat-square)](#contributors) + # IMAP (Interstellar Mapping and Acceleration Probe) The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project aimed at studying the interstellar medium and investigating the acceleration mechanisms of particles within our galaxy. IMAP utilizes cutting-edge technology and advanced instrumentation to gather valuable data and expand our understanding of space. @@ -10,4 +12,16 @@ Join the IMAP Git repository to be part of an exciting scientific endeavor, cont [IMAP Website](https://imap.princeton.edu/) # Credits -[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) \ No newline at end of file +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) + +## Contributors + + + + + + + + + + From 2cf10d4ad7035216320847c3620e5efbecdc7e7c Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:27:03 +0000 Subject: [PATCH 03/10] docs: update README.md [skip ci] --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9633a82e5..da2dca790 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # IMAP (Interstellar Mapping and Acceleration Probe) + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project aimed at studying the interstellar medium and investigating the acceleration mechanisms of particles within our galaxy. IMAP utilizes cutting-edge technology and advanced instrumentation to gather valuable data and expand our understanding of space. The IMAP project's Git repository serves as a centralized hub for collaboration among researchers, scientists, and developers involved in the project. It provides a platform for version control, code sharing, issue tracking, and documentation, fostering a collaborative environment for advancing the goals of the IMAP mission. @@ -10,4 +13,25 @@ Join the IMAP Git repository to be part of an exciting scientific endeavor, cont [IMAP Website](https://imap.princeton.edu/) # Credits -[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) \ No newline at end of file +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + +
Greg Lucas
Greg Lucas

💻 🐛 🔣 📖 🤔 🚇 🚧
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file From b598479a0d09ba40def5183856a4b5addce8fed8 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:27:04 +0000 Subject: [PATCH 04/10] docs: create .all-contributorsrc [skip ci] --- .all-contributorsrc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..6c4ec3fb7 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,32 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitType": "docs", + "commitConvention": "angular", + "contributors": [ + { + "login": "greglucas", + "name": "Greg Lucas", + "avatar_url": "https://avatars.githubusercontent.com/u/12417828?v=4", + "profile": "http://greglucas.github.io", + "contributions": [ + "code", + "bug", + "data", + "doc", + "ideas", + "infra", + "maintenance" + ] + } + ], + "contributorsPerLine": 7, + "skipCi": true, + "repoType": "github", + "repoHost": "https://github.com", + "projectName": "imap_processing", + "projectOwner": "IMAP-Science-Operations-Center" +} From a08e5dd28f2cf222e795b72bc4f4e5f8d9714ad6 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:27:09 +0000 Subject: [PATCH 05/10] docs: update README.md [skip ci] --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9633a82e5..dd0ec919f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # IMAP (Interstellar Mapping and Acceleration Probe) + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project aimed at studying the interstellar medium and investigating the acceleration mechanisms of particles within our galaxy. IMAP utilizes cutting-edge technology and advanced instrumentation to gather valuable data and expand our understanding of space. The IMAP project's Git repository serves as a centralized hub for collaboration among researchers, scientists, and developers involved in the project. It provides a platform for version control, code sharing, issue tracking, and documentation, fostering a collaborative environment for advancing the goals of the IMAP mission. @@ -10,4 +13,25 @@ Join the IMAP Git repository to be part of an exciting scientific endeavor, cont [IMAP Website](https://imap.princeton.edu/) # Credits -[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) \ No newline at end of file +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + +
Tenzin Choedon
Tenzin Choedon

💻 🐛 🔣 📖 🤔 🚇 🚧
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file From 5fecfcbb24ed6bf1c7f5eda078ad0cbf1f69df1f Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:27:21 +0000 Subject: [PATCH 06/10] docs: create .all-contributorsrc [skip ci] --- .all-contributorsrc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..e09476951 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,32 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitType": "docs", + "commitConvention": "angular", + "contributors": [ + { + "login": "tech3371", + "name": "Tenzin Choedon", + "avatar_url": "https://avatars.githubusercontent.com/u/36522642?v=4", + "profile": "https://github.com/tech3371", + "contributions": [ + "code", + "bug", + "data", + "doc", + "ideas", + "infra", + "maintenance" + ] + } + ], + "contributorsPerLine": 7, + "skipCi": true, + "repoType": "github", + "repoHost": "https://github.com", + "projectName": "imap_processing", + "projectOwner": "IMAP-Science-Operations-Center" +} From c632b52767dae941fc4193358771743674585684 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:43:56 +0000 Subject: [PATCH 07/10] docs: update README.md [skip ci] --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9633a82e5..9d9c5542e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # IMAP (Interstellar Mapping and Acceleration Probe) + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project aimed at studying the interstellar medium and investigating the acceleration mechanisms of particles within our galaxy. IMAP utilizes cutting-edge technology and advanced instrumentation to gather valuable data and expand our understanding of space. The IMAP project's Git repository serves as a centralized hub for collaboration among researchers, scientists, and developers involved in the project. It provides a platform for version control, code sharing, issue tracking, and documentation, fostering a collaborative environment for advancing the goals of the IMAP mission. @@ -10,4 +13,25 @@ Join the IMAP Git repository to be part of an exciting scientific endeavor, cont [IMAP Website](https://imap.princeton.edu/) # Credits -[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) \ No newline at end of file +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + +
Sean Hoyt
Sean Hoyt

💻 🐛 🔣 📖 🤔 🚇 🚧
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file From cf145107dbc20d5fd37566a27932b85de9df263e Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:43:57 +0000 Subject: [PATCH 08/10] docs: create .all-contributorsrc [skip ci] --- .all-contributorsrc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..06fe883a4 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,32 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitType": "docs", + "commitConvention": "angular", + "contributors": [ + { + "login": "sdhoyt", + "name": "Sean Hoyt", + "avatar_url": "https://avatars.githubusercontent.com/u/7146374?v=4", + "profile": "https://github.com/sdhoyt", + "contributions": [ + "code", + "bug", + "data", + "doc", + "ideas", + "infra", + "maintenance" + ] + } + ], + "contributorsPerLine": 7, + "skipCi": true, + "repoType": "github", + "repoHost": "https://github.com", + "projectName": "imap_processing", + "projectOwner": "IMAP-Science-Operations-Center" +} From 351408315c372e92aae027f18bb15076ad6695b7 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:47:02 +0000 Subject: [PATCH 09/10] docs: update README.md [skip ci] --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9633a82e5..a627f5f32 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # IMAP (Interstellar Mapping and Acceleration Probe) + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + The Interstellar Mapping and Acceleration Probe (IMAP) is an exciting project aimed at studying the interstellar medium and investigating the acceleration mechanisms of particles within our galaxy. IMAP utilizes cutting-edge technology and advanced instrumentation to gather valuable data and expand our understanding of space. The IMAP project's Git repository serves as a centralized hub for collaboration among researchers, scientists, and developers involved in the project. It provides a platform for version control, code sharing, issue tracking, and documentation, fostering a collaborative environment for advancing the goals of the IMAP mission. @@ -10,4 +13,25 @@ Join the IMAP Git repository to be part of an exciting scientific endeavor, cont [IMAP Website](https://imap.princeton.edu/) # Credits -[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) \ No newline at end of file +[LASP (Laboratory of Atmospheric and Space Physics)](https://lasp.colorado.edu/) +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + +
Gabriel M.
Gabriel M.

💻 🐛 🔣 📖 🤔 🚇 🚧
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file From 554ee024b0c15d32cb8b3e315c478e12c5525c45 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:47:02 +0000 Subject: [PATCH 10/10] docs: create .all-contributorsrc [skip ci] --- .all-contributorsrc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..96b33a1ef --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,32 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitType": "docs", + "commitConvention": "angular", + "contributors": [ + { + "login": "GFMoraga", + "name": "Gabriel M.", + "avatar_url": "https://avatars.githubusercontent.com/u/104743000?v=4", + "profile": "https://github.com/GFMoraga", + "contributions": [ + "code", + "bug", + "data", + "doc", + "ideas", + "infra", + "maintenance" + ] + } + ], + "contributorsPerLine": 7, + "skipCi": true, + "repoType": "github", + "repoHost": "https://github.com", + "projectName": "imap_processing", + "projectOwner": "IMAP-Science-Operations-Center" +}