From f767e21a7700ef9cb3e0b1af25bc07e584ea9fec Mon Sep 17 00:00:00 2001 From: Stefan Kuethe Date: Mon, 12 Feb 2024 08:51:32 +0100 Subject: [PATCH] Add docs --- README.md | 13 +- docs/api.md | 9 + docs/examples/getting_started/basic_usage.py | 4 +- .../examples/getting_started/interactivity.py | 48 ++ .../examples/getting_started/redefine_data.py | 22 + docs/getting_started/interactivity.md | 3 + docs/getting_started/redefine_data.md | 3 + docs/images/chart-cell.png | Bin 0 -> 116161 bytes docs/index.md | 32 + mkdocs.yml | 43 + poetry.lock | 786 +++++++++++++++++- pyproject.toml | 3 + shinyobservable/__init__.py | 1 + shinyobservable/_context.py | 8 +- shinyobservable/_core.py | 12 + shinyobservable/ui.py | 5 + 16 files changed, 986 insertions(+), 6 deletions(-) create mode 100644 docs/api.md create mode 100644 docs/examples/getting_started/interactivity.py create mode 100644 docs/examples/getting_started/redefine_data.py create mode 100644 docs/getting_started/interactivity.md create mode 100644 docs/getting_started/redefine_data.md create mode 100644 docs/images/chart-cell.png create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/README.md b/README.md index aa2ecd9..c5e9557 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Embed [Observable Notebooks](https://observablehq.com/) in [Shiny for Python](ht Shinyobservable makes it a breeze to integrate libraries such as [D3](https://d3js.org/). -Create any kind of JavaScript visualizations and let Shiny handle the interactivity. +Create any kind of JavaScript visualizations and let Shiny handle your data and interactivity. ## Features @@ -12,6 +12,15 @@ Create any kind of JavaScript visualizations and let Shiny handle the interactiv * Embed selected cells only * Update data cells to update visualizations +## Installation + +```bash +pip install shinyobservable + +# Dev +pip install git+https://github.com/eodaGmbH/py-shiny-shinyobservable +``` + ## Quickstart ```python @@ -39,6 +48,6 @@ def render_cells(): Enjoy your Observable Notebook in Shiny! -![](docs/images/complete-notebook.png) +![](docs/images/chart-cell.png) See [docs/examples/getting_started/playground.py](docs/examples/getting_started/playground.py) for a detailed example. diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 0000000..b3de94a --- /dev/null +++ b/docs/api.md @@ -0,0 +1,9 @@ +# API Docs + +::: shinyobservable.Observable + +::: shinyobservable.ObservableRenderer + +::: shinyobservable.output_observable + +::: shinyobservable.ObservableContext diff --git a/docs/examples/getting_started/basic_usage.py b/docs/examples/getting_started/basic_usage.py index 4b743b7..fe4bdba 100644 --- a/docs/examples/getting_started/basic_usage.py +++ b/docs/examples/getting_started/basic_usage.py @@ -3,19 +3,19 @@ from shinyobservable import Observable, ObservableRenderer NOTEBOOK = "https://observablehq.com/@d3/zoomable-sunburst" -# NOTEBOOK = "https://observablehq.com/d/31ab0068a4664578" ui.h1("Observable Notebook in Shiny") ui.div(a(NOTEBOOK, href=NOTEBOOK, target="_blank")) ui.hr() +# Embed selected cells @ObservableRenderer def render_cells(): return Observable(NOTEBOOK, cells=["chart"]) - # return Observable(NOTEBOOK, cells=["mapView", "viewof mapView", "viewof h3Res"]) +# Include entire notebook # @ObservableRenderer def render_notebook(): return Observable(NOTEBOOK) diff --git a/docs/examples/getting_started/interactivity.py b/docs/examples/getting_started/interactivity.py new file mode 100644 index 0000000..d6a250c --- /dev/null +++ b/docs/examples/getting_started/interactivity.py @@ -0,0 +1,48 @@ +import random +import string + +from htmltools import a +from shiny import reactive +from shiny.express import input, ui +from shinyobservable import Observable, ObservableContext, ObservableRenderer + +NOTEBOOK = "https://observablehq.com/@d3/bar-chart-transitions/2" + +ui.h1("Observable Notebook in Shiny") +ui.div(a(NOTEBOOK, href=NOTEBOOK, target="_blank")) +ui.hr() + + +def create_data(): + return [ + dict(letter=letter, frequency=random.uniform(0, 1)) + for letter in string.ascii_uppercase[ + random.randint(0, 3) : random.randint(20, 25) + ] + ] + + +cells = ["viewof order", "chart", "data"] + + +@ObservableRenderer +def render_notebook(): + return Observable(NOTEBOOK, cells=cells).redefine( + # data=create_data(), + data=[ + dict(letter="A", frequency=0.1), + dict(letter="B", frequency=0.8), + dict(letter="C", frequency=0.6), + ], + ) + + +with ui.div(style="padding-top: 10px;"): + ui.input_action_button("update_data", "Update data") + + +@reactive.Effect +@reactive.event(input.update_data) +async def update_data(): + async with ObservableContext("render_notebook") as nb: + nb.redefine(data=create_data()) diff --git a/docs/examples/getting_started/redefine_data.py b/docs/examples/getting_started/redefine_data.py new file mode 100644 index 0000000..821e14a --- /dev/null +++ b/docs/examples/getting_started/redefine_data.py @@ -0,0 +1,22 @@ +import requests +from htmltools import a +from shiny.express import ui +from shinyobservable import Observable, ObservableRenderer + +NOTEBOOK = "https://observablehq.com/@d3/zoomable-sunburst" + +data = requests.get( + "https://raw.githubusercontent.com/observablehq/examples/main/custom-data/population.json" +).json() + +print(data) + +ui.h1("Observable Notebook in Shiny") +ui.div(a(NOTEBOOK, href=NOTEBOOK, target="_blank")) +ui.hr() + + +@ObservableRenderer +def render_cells(): + # Update the 'data' cell with the data downloaded above + return Observable(NOTEBOOK, cells=["chart"]).redefine(data=data) diff --git a/docs/getting_started/interactivity.md b/docs/getting_started/interactivity.md new file mode 100644 index 0000000..70958d8 --- /dev/null +++ b/docs/getting_started/interactivity.md @@ -0,0 +1,3 @@ +```python +-8<-- "getting_started/interactivity.py" +``` diff --git a/docs/getting_started/redefine_data.md b/docs/getting_started/redefine_data.md new file mode 100644 index 0000000..f18413d --- /dev/null +++ b/docs/getting_started/redefine_data.md @@ -0,0 +1,3 @@ +```python +-8<-- "getting_started/redefine_data.py" +``` diff --git a/docs/images/chart-cell.png b/docs/images/chart-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..3f99f7e40470116d7264ade9e0f8efa635b1b30f GIT binary patch literal 116161 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

?z3c0(vn5}x)$Tk)HDcr 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%0A{g%V*eHw-Tfxy!kEt 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", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] +[[package]] +name = "babel" +version = "2.14.0" +description = "Internationalization utilities" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + [[package]] name = "black" version = "24.1.1" @@ -100,6 +115,118 @@ d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + [[package]] name = "click" version = "8.1.7" @@ -142,6 +269,39 @@ files = [ [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "griffe" +version = "0.40.1" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "griffe-0.40.1-py3-none-any.whl", hash = "sha256:5b8c023f366fe273e762131fe4bfd141ea56c09b3cb825aa92d06a82681cfd93"}, + {file = "griffe-0.40.1.tar.gz", hash = "sha256:66c48a62e2ce5784b6940e603300fcfb807b6f099b94e7f753f1841661fd5c7c"}, +] + +[package.dependencies] +colorama = ">=0.4" + [[package]] name = "h11" version = "0.14.0" @@ -186,6 +346,26 @@ files = [ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] +[[package]] +name = "importlib-metadata" +version = "7.0.1" +description = "Read metadata from Python packages" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "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" @@ -213,6 +393,24 @@ files = [ [package.extras] colors = ["colorama (>=0.4.6)"] +[[package]] +name = "jinja2" +version = "3.1.3" +description = "A very fast and expressive template engine." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + [[package]] name = "linkify-it-py" version = "2.0.3" @@ -234,6 +432,25 @@ dev = ["black", "flake8", "isort", "pre-commit", "pyproject-flake8"] doc = ["myst-parser", "sphinx", "sphinx-book-theme"] test = ["coverage", "pytest", "pytest-cov"] +[[package]] +name = "markdown" +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -259,6 +476,76 @@ profiling = ["gprof2dot"] rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + [[package]] name = "mdit-py-plugins" version = "0.4.0" @@ -291,6 +578,154 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "mkdocs" +version = "1.5.3" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, + {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +jinja2 = ">=2.11.1" +markdown = ">=3.2.1" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +pathspec = ">=0.11.1" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "0.5.0" +description = "Automatically link across pages in MkDocs." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"}, + {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"}, +] + +[package.dependencies] +Markdown = ">=3.3" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-material" +version = "9.5.9" +description = "Documentation that simply works" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material-9.5.9-py3-none-any.whl", hash = "sha256:a5d62b73b3b74349e45472bfadc129c871dd2d4add68d84819580597b2f50d5d"}, + {file = "mkdocs_material-9.5.9.tar.gz", hash = "sha256:635df543c01c25c412d6c22991872267723737d5a2f062490f33b2da1c013c6d"}, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.5.3,<1.6.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + +[[package]] +name = "mkdocstrings" +version = "0.24.0" +description = "Automatic documentation from sources, for MkDocs." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocstrings-0.24.0-py3-none-any.whl", hash = "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"}, + {file = "mkdocstrings-0.24.0.tar.gz", hash = "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e"}, +] + +[package.dependencies] +click = ">=7.0" +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.11.1" +Markdown = ">=3.3" +MarkupSafe = ">=1.1" +mkdocs = ">=1.4" +mkdocs-autorefs = ">=0.3.1" +mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""} +platformdirs = ">=2.2.0" +pymdown-extensions = ">=6.3" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.8.0" +description = "A Python handler for mkdocstrings." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocstrings_python-1.8.0-py3-none-any.whl", hash = "sha256:4209970cc90bec194568682a535848a8d8489516c6ed4adbe58bbc67b699ca9d"}, + {file = "mkdocstrings_python-1.8.0.tar.gz", hash = "sha256:1488bddf50ee42c07d9a488dddc197f8e8999c2899687043ec5dd1643d057192"}, +] + +[package.dependencies] +griffe = ">=0.37" +mkdocstrings = ">=0.20" + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -315,6 +750,17 @@ files = [ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] +[[package]] +name = "paginate" +version = "0.5.6" +description = "Divides large result sets into pages for easier browsing" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, +] + [[package]] name = "pathspec" version = "0.12.1" @@ -374,6 +820,41 @@ files = [ [package.dependencies] wcwidth = "*" +[[package]] +name = "pygments" +version = "2.17.2" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, +] + +[package.extras] +plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymdown-extensions" +version = "10.7" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, + {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, +] + +[package.dependencies] +markdown = ">=3.5" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + [[package]] name = "pytest" version = "8.0.0" @@ -397,6 +878,21 @@ tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + [[package]] name = "python-multipart" version = "0.0.9" @@ -412,6 +908,81 @@ files = [ [package.extras] dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + [[package]] name = "questionary" version = "2.0.1" @@ -427,6 +998,131 @@ files = [ [package.dependencies] prompt_toolkit = ">=2.0,<=3.0.36" +[[package]] +name = "regex" +version = "2023.12.25" +description = "Alternative regular expression module, to replace re." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +category = "dev" +optional = false +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 = "shiny" version = "0.7.1" @@ -460,6 +1156,18 @@ dev = ["black (>=23.1,<24.0)", "flake8 (>=6.0.0)", "flake8-bugbear (>=23.2.13)", doc = ["griffe (==0.33.0)", "jupyter", "jupyter-client (<8.0.0)", "pydantic (==1.10)", "quartodoc (==0.7.2)", "shinylive", "tabulate"] test = ["astropy", "bokeh", "coverage", "duckdb", "folium", "geodatasets", "geopandas", "holoviews", "ipyleaflet", "missingno", "plotly", "plotnine", "psutil", "pytest (>=6.2.4)", "pytest-asyncio (>=0.17.2)", "pytest-cov", "pytest-playwright (>=0.3.0)", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist", "rsconnect-python", "scikit-learn", "seaborn", "shinywidgets", "suntime", "syrupy", "timezonefinder", "xarray"] +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + [[package]] name = "sniffio" version = "1.3.0" @@ -530,6 +1238,24 @@ files = [ [package.extras] test = ["coverage", "pytest", "pytest-cov"] +[[package]] +name = "urllib3" +version = "2.2.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "uvicorn" version = "0.27.1" @@ -550,6 +1276,48 @@ typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +[[package]] +name = "watchdog" +version = "4.0.0" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, + {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, + {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, + {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, + {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, + {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, + {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, + {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [[package]] name = "watchfiles" version = "0.21.0" @@ -732,7 +1500,23 @@ files = [ {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, ] +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "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-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [metadata] lock-version = "2.0" python-versions = ">=3.9" -content-hash = "12cf19e3ac7ae5348ba87d3df0bd96d88f944936b144cfb24e43f93e29671af7" +content-hash = "76962dfa6f269db6d65084ffe48fc65e22d2b5640545c7d9d1a910c5c7210da0" diff --git a/pyproject.toml b/pyproject.toml index faeac8b..a158592 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,6 +15,9 @@ shiny = "^0.7.1" isort = "^5.13.2" black = "^24.1.1" pytest = "^8.0.0" +mkdocs = "^1.5.3" +mkdocs-material = "^9.5.9" +mkdocstrings = {extras = ["python"], version = "^0.24.0"} [build-system] requires = ["poetry-core"] diff --git a/shinyobservable/__init__.py b/shinyobservable/__init__.py index cce915b..c572fdc 100644 --- a/shinyobservable/__init__.py +++ b/shinyobservable/__init__.py @@ -1,3 +1,4 @@ from ._context import ObservableContext from ._core import Observable from .render import ObservableRenderer +from .ui import output_observable diff --git a/shinyobservable/_context.py b/shinyobservable/_context.py index 1adf0b6..1449cb2 100644 --- a/shinyobservable/_context.py +++ b/shinyobservable/_context.py @@ -2,7 +2,12 @@ class ObservableContext(object): - """Create an Observable context instance""" + """Create an Observable context instance + + Arguments: + id: The output id of the notebook instance to be updated. + session: A Shiny session. If `None`, the active session is used. + """ data = dict() @@ -18,6 +23,7 @@ async def __aexit__(self, exc_type, exc_val, exc_tb): await self.render() def redefine(self, **kwargs) -> None: + """Redefine cells of the embedded notebook""" self.data = kwargs async def render(self): diff --git a/shinyobservable/_core.py b/shinyobservable/_core.py index 1baa852..45f6d95 100644 --- a/shinyobservable/_core.py +++ b/shinyobservable/_core.py @@ -34,6 +34,18 @@ def __init__( self.cells = cells def redefine(self, **kwargs) -> Observable: + """Redefine cells of the embedded notebook + + Examples: + >>> # Redefine the data cell of a notebook + >>> nb = Observable("some-notebook").redefine( + ... data=[ + ... dict(x=1, y=2), + ... dict(x=2, y=4) + ... ] + ... ) + >>> + """ self.data = kwargs return self diff --git a/shinyobservable/ui.py b/shinyobservable/ui.py index 3993e48..068ef9c 100644 --- a/shinyobservable/ui.py +++ b/shinyobservable/ui.py @@ -12,6 +12,11 @@ def output_observable(id: str) -> Tag: + """Create an output control for an `Observable` object + + Arguments: + id: An output id. + """ return ui.div( observable_bindings_dep, # Use resolve_id so that our component will work in a module