From b1881193b1a7d1a7e329d984645d43eb3353c886 Mon Sep 17 00:00:00 2001 From: mdelmans Date: Fri, 31 Jan 2025 14:00:15 +0000 Subject: [PATCH 1/3] Added: clean repo for public release (#23) --- .github/workflows/pull.yml | 70 + .github/workflows/release.yml | 73 + .gitignore | 3 + LICENSE | 21 + README.md | 10 + docs/api/async.md | 3 + docs/api/sync.md | 1 + docs/get_started/blocks.md | 115 + docs/get_started/databases.md | 154 + docs/get_started/install.md | 28 + docs/get_started/pages.md | 172 + docs/img/logo.webp | Bin 0 -> 181566 bytes docs/index.md | 12 + mkdocs.yml | 40 + poetry.lock | 2846 ++++++++--------- pyproject.toml | 15 +- python_notion_api/__init__.py | 4 +- python_notion_api/async_api/__init__.py | 1 - python_notion_api/async_api/api.py | 47 +- python_notion_api/async_api/notion_block.py | 31 +- .../async_api/notion_database.py | 42 +- python_notion_api/async_api/notion_page.py | 104 +- .../async_api/tests/test_async_block.py | 2 +- .../async_api/tests/test_properties.py | 4 +- python_notion_api/models/common.py | 35 - python_notion_api/models/objects.py | 1 + python_notion_api/sync_api/__init__.py | 0 python_notion_api/{ => sync_api}/api.py | 354 +- .../test_sync.py} | 4 +- readme.md | 327 -- 30 files changed, 2407 insertions(+), 2112 deletions(-) create mode 100644 .github/workflows/pull.yml create mode 100644 .github/workflows/release.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/api/async.md create mode 100644 docs/api/sync.md create mode 100644 docs/get_started/blocks.md create mode 100644 docs/get_started/databases.md create mode 100644 docs/get_started/install.md create mode 100644 docs/get_started/pages.md create mode 100644 docs/img/logo.webp create mode 100644 docs/index.md create mode 100644 mkdocs.yml create mode 100644 python_notion_api/sync_api/__init__.py rename python_notion_api/{ => sync_api}/api.py (75%) rename python_notion_api/{test_nonasync.py => sync_api/test_sync.py} (99%) delete mode 100644 readme.md diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml new file mode 100644 index 0000000..9665c9f --- /dev/null +++ b/.github/workflows/pull.yml @@ -0,0 +1,70 @@ +name: Pull workflow + +on: + pull_request: + branches: + - 'develop' + +jobs: + run-tests: + if: true + runs-on: ubuntu-latest + + steps: + - name: Print info + run: echo "Hello world" + + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Poetry + uses: abatilo/actions-poetry@v2 + with: + poetry-version: 'latest' + + - name: Setup local venv + run: | + poetry config virtualenvs.create true --local + poetry config virtualenvs.in-project true --local + poetry run python --version + + - name: Restore dependencies + id: restore-dependencies + uses: actions/cache/restore@v4 + with: + path: ./.venv + key: venv-${{ hashFiles('poetry.lock') }} + + - name: Install dependencies + if: steps.restore-dependencies.outputs.cache-hit != 'true' + run: poetry install -vvv + + - name: Cache dependencies + uses: actions/cache/save@v4 + with: + path: ./.venv + key: ${{ steps.restore-dependencies.outputs.cache-primary-key }} + + - name: Install project + run: poetry install --only-root + + - name: Run tests + run: poetry run pytest --junitxml=junit/test-results.xml + env: + NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} + + - name: Publish test report + uses: mikepenz/action-junit-report@v5 + if: always() + with: + report_paths: 'junit/test-results.xml' + + - name: Run pre-commit + uses: pre-commit/action@v3.0.1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..8f90fd9 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,73 @@ +name: Release workflow + +on: + workflow_dispatch: + inputs: + version: + type: string + required: true + description: 'Version number to release in X.Y.Z format' + dry_run: + type: boolean + default: true + description: 'Dry run' + pull_request: + types: + - closed + branches: + - 'main' + +jobs: + release_workflow: + runs-on: ubuntu-latest + + steps: + - name: Gitflow action + id: gitflow-action + uses: hoangvvo/gitflow-workflow-action@0.3.7 + with: + develop_branch: "develop" + main_branch: "main" + version: ${{ inputs.version }} + version_increment: ${{ contains(github.head_ref, 'hotfix/') && 'patch' || '' }} + dry_run: ${{ inputs.dry_run }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ steps.gitflow-action.outputs.release_branch || 'main' }} + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Poetry + uses: abatilo/actions-poetry@v2 + with: + poetry-version: 'latest' + + # Bumping version if we are in the 'create release PR mode' + - name: Bump version + if: ${{ steps.gitflow-action.outputs.release_branch }} + env: + VERSION: ${{ steps.gitflow-action.outputs.version }} + run: poetry version $VERSION + + # Committing bumped version to the release branch + - name: Commit new version + if: ${{ steps.gitflow-action.outputs.release_branch }} + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Bump version to ${{ steps.gitflow-action.outputs.version }}" + + # Building and publishing if we are in 'created new release mode' + - name: Build and publish package + if: ${{ !steps.gitflow-action.outputs.release_branch }} + env: + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + run: | + poetry config pypi-token.pypi $PYPI_TOKEN + poetry publish --build diff --git a/.gitignore b/.gitignore index c14b1f1..e270f18 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ *.egg-info __pycache__ +dist +site +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8ed45e8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Colorifix + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f75a759 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Python Notion API + +Logo + +Python Notion API implements a client for talking with Notion API. + +The key features of this implementation are: + +* Async calls allowing you to send multiple requests at once +* [pydantic](https://docs.pydantic.dev/latest/) wrappers around Notion pages, properties and databases diff --git a/docs/api/async.md b/docs/api/async.md new file mode 100644 index 0000000..28a9384 --- /dev/null +++ b/docs/api/async.md @@ -0,0 +1,3 @@ +# Async + +::: python_notion_api.async_api diff --git a/docs/api/sync.md b/docs/api/sync.md new file mode 100644 index 0000000..acb2d0b --- /dev/null +++ b/docs/api/sync.md @@ -0,0 +1 @@ +::: python_notion_api.sync_api.api diff --git a/docs/get_started/blocks.md b/docs/get_started/blocks.md new file mode 100644 index 0000000..a29d728 --- /dev/null +++ b/docs/get_started/blocks.md @@ -0,0 +1,115 @@ +## Retrieve a block + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + block = await async_api.get_block(block_id='') + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + block = api.get_block(block_id='') + ``` + +## Retrieve page blocks + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + page = await async_api.get_page(page_id='') + await for block in page.get_blocks(): + ... + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + page = api.get_page(page_id='') + + blocks = page.get_blocks() + + for block in blocks: + ... + ``` + +## Get and add block children + + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + block = await async_api.get_block(block_id='') + + p = ParagraphBlock( + rich_text=[RichTextObject.from_str("Some text to add through API")] + ) + await block.add_child_block(content=[p]) + + block = await block.get_children_block() + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + block = api.get_block(block_id='') + + p = ParagraphBlock( + rich_text=[RichTextObject.from_str("Some text to add through API")] + ) + block.add_child_block(content=[p]) + + child_blocks = block.get_child_blocks() + ``` + +## Update a block + +All values must be updated at once. + +=== "Async" + + ```python + from python_notion_api.models.blocks import ParagraphBlock + + async def main(): + async_api = AsyncNotionAPI(access_token='') + block = await async_api.get_block(block_id='') + + new_block = ParagraphBlock.from_obj({'object': 'block', + 'type': 'paragraph', + 'paragraph': {'rich_text': [ + {'plain_text': 'Text here not used for some reason', 'type': 'text', + 'text': {'content': 'This is the text that will be added', 'link': None}}]} + }) + + await block.set(new_block) + ``` + +=== "Sync" + + + ```python + from python_notion_api.models.blocks import ParagraphBlock + + api = NotionAPI(access_token='') + block = api.get_block(block_id='') + + new_block = ParagraphBlock.from_obj({'object': 'block', + 'type': 'paragraph', + 'paragraph': {'rich_text': [ + {'plain_text': 'Text here not used for some reason', 'type': 'text', + 'text': {'content': 'This is the text that will be added', 'link': None}}]} + }) + + block = api.get_block(block_id='') + block.set(new_block) + ``` diff --git a/docs/get_started/databases.md b/docs/get_started/databases.md new file mode 100644 index 0000000..1e8f6eb --- /dev/null +++ b/docs/get_started/databases.md @@ -0,0 +1,154 @@ +## Retrieve a database + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + ``` + +## Query + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + + async for page in database.query(): + ... + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + + for page in database.query(): + ... + ``` + +### Filters + +You can use filter classes in `python_notion_api.models.filters` to create property filters and pass them to the query. + +=== "Async" + + ```python + from python_notion_api.models.filters import SelectFilter + + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + + await for page in database.query( + filters=SelectFilter(property='', equals='') + ): + ... + ``` + +=== "Sync" + + ```python + from python_notion_api.models.filters import SelectFilter + + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + + for page in database.query( + filters=SelectFilter(property='', equals='') + ): + ... + ``` + +'and' and 'or' filters are supported: + +=== "Async" + + ```python + from python_notion_api.models.filters import SelectFilter, or_filter, and_filter + + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + + await for page in database.query( + filters=or_filter([ + SelectFilter(property="Select", equals="xxx"), + and_filter([ + NumberFilter(property="Number", greater_than=10), + CheckboxFilter(property="Checkbox", equals=True) + ]) + ]) + ): + ... + ``` + +=== "Sync" + + ```python + from python_notion_api.models.filters import SelectFilter, or_filter, and_filter + + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + + for page in database.query( + filters=or_filter([ + SelectFilter(property="Select", equals="xxx"), + and_filter([ + NumberFilter(property="Number", greater_than=10), + CheckboxFilter(property="Checkbox", equals=True) + ]) + ]) + ) + ... + ``` + +You can read more on filters [here](https://developers.notion.com/reference/post-database-query-filter){:target="_blank"} + +### Sorts + +You can use `python_notion_api.models.sorts.Sort` class to create sorts and pass them to the query. + +=== "Async" + + ```python + from python_notion_api.models.sorts import Sort + + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + + await for page in database.query( + sorts=[ + Sort(property="Title"), + Sort(property="Date", descending=True) + ] + ): + ``` + +=== "Sync" + + ```python + from python_notion_api.models.sorts import Sort + + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + + for page in database.query( + sorts=[ + Sort(property="Title"), + Sort(property="Date", descending=True) + ] + ) + ``` diff --git a/docs/get_started/install.md b/docs/get_started/install.md new file mode 100644 index 0000000..f316f8a --- /dev/null +++ b/docs/get_started/install.md @@ -0,0 +1,28 @@ +Python Notion API is available at PyPI under `python-notion-api`. + +For example, if you are using `pip`, you can install it with + +```console +$ pip install python-notion-api +``` + +You can now import the project and initialise the client by passing your token. We recommend using the Async version for extra super-powers. + +=== "Async" + + ```python + from python_notion_api import AsyncNotionAPI + + async_api = AsyncNotionAPI(access_token='') + ``` + +=== "Sync" + + ```python + from python_notion_api import NotionAPI + + api = NotionAPI(access_token='') + ``` + +!!! info + If you are not sure how to get your token, check out [this](https://www.notion.com/help/create-integrations-with-the-notion-api){:target="_blank"} article diff --git a/docs/get_started/pages.md b/docs/get_started/pages.md new file mode 100644 index 0000000..25dde12 --- /dev/null +++ b/docs/get_started/pages.md @@ -0,0 +1,172 @@ +## Retrieve a page + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + page = await async_api.get_page(page_id='') + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + page = api.get_page(page_id='') + ``` + +## Create a page + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + database = await async_api.get_database(database_id='') + + await database.create_page(properties={ + 'Number_property': 234, + 'Select_property': 'select1', + 'Checkbox_property': True, + 'Relation_property': [''] + }) + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + database = api.get_database(database_id='') + + database.create_page(properties={ + 'Number_property': 234, + 'Select_property': 'select1', + 'Checkbox_property': True, + 'Relation_property': [''] + }) + ``` + +## Update page + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + page = await async_api.get_page(page_id='') + + await page.set('Number_property', 234) + await page.update(properties={'Select_property': 'select1', 'Checkbox_property': True}) + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + page = api.get_page(page_id='') + + page.set('Number_property', 234) + + page.update(properties={'Select_property': 'select1', 'Checkbox_property': True}) + ``` + +## Archive page + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + page = await async_api.get_page(page_id='') + + await page.archive() + + print(page.is_alive) + + await page.unarchive() + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + page = api.get_page(page_id='') + + page.alive = False + + page.alive = True + ``` + +## Retrieve a single page property item + +=== "Async" + + ```python + async def main(): + async_api = AsyncNotionAPI(access_token='') + page = await async_api.get_page(page_id='') + + await page.get('Property name').value + await for value in page.get('Relation property'): + print(value) + ``` + +=== "Sync" + + ```python + api = NotionAPI(access_token='') + page = api.get_page(page_id='') + + page.get('Property name').value + + for value in page.get('Relation property'): + print(value) + ``` + +## Custom pages +In some cases, we may not want the values directly returned by the API. +In particular, the values of rollups and formulas may be incorrect when retrieved through the API, but we can calculate the correct value by recreating the formulas and rollups in Python code. + +To use custom page properties, create a subclass of NotionPage. Define a function to get each custom property (these must return a `PropertyValue`) and define the mapping from Notion property names to the function names. + +```python +from python_notion_api.api import NotionPage +from python_notion_api.models import RichTextObject +from python_notion_api.models.values import RichTextPropertyValue + +class MyPage(NotionPage): + # Use this dictionary to map the property names to functions + # Being explicit about the mapping so we don't restrict the property names in Notion + special_properties = { + 'Value': 'special_value' + } + + + def special_value(self) -> RichTextPropertyItem: + + # self.get('Value') would just loop back here, + # so use self._direct_get to retrieve the value returned by the API + x = self._direct_get('Value').value + + # Then do whatever processing is required + # Should return a PropertyValue to be compatible with downstream functions + if x == 1: + return RichTextPropertyValue(rich_text=RichTextObject( + plain_text='One', type='text')) + else: + return RichTextPropertyValue(rich_text=RichTextObject( + plain_text='Number unknown', type='text')) + +``` + +This page class can be passed when querying a database or getting a page. + +```python +page = api.get_page(page_id='', + cast_cls=MyPage) + + +for page in database.query(cast_cls=MyPage, filters=NumberFilter(property='Value', equals=1)): + print('Custom processing:', page.get('Value').value) + print('Raw value:', page._direct_get('Value').value) +``` diff --git a/docs/img/logo.webp b/docs/img/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a0a42873f9b7658e6e302d0264724f54ce7181d GIT binary patch literal 181566 zcmV(rK<>X%Nk&FC#R33VMM6+kP&gpWW&r>Y76qLFDgXok1U@ksibEnHp%VzzoFD@P zw6|%@`tx%<_6sxqx0)yW9(rFJ)x7|J0REl(H{Ta$b3uQG|G@MG{^9!R??cAd&OD!g zA2l&cBWShyGXn5A3JNFXDg6f4zTZ|0({D{1@$S*~iy^-~Utp2gAF1|8M_$ z{g1FOynj;vJ^knWpZuTi-v*yO{{Q^%`EO@_$$zu|8~fY-H|z)cKlP9FU*A8@f6@OT z|Ns8a;J@_$?Re0BEB>GT|M%aQe_&tFKeYe9{~!Ku|DX7e|Nm^C&HvK>A^v~%v;Y79 zZ;!v9e}n&}{x|(6?Vtbu{J)`J%Rj1rvHtV^Z~r&>umAu3zU+Vddy4(P|I_*Z|NreH z^}GK+?SKFO`Gs<**poTTX5cF{-s^V$5&;IA5KK-e1R44q?{y-2s}tQ3#nd}#kru+( zDghNRKxf*_Ho>j47hLd{hv%o%6-?-9AHLLyKdW5`AFA={N8Z6_M)Vbs%$<<1J>P_2 zD!`wDYNj zcJvf*{t+FW_BNz+!NeW4M)uiw0*>JR{>vh!ev@*+_CIUsppto_G=GW_zct1|QQ^}O z@%l0sM6TYl&zOK$n@<7$Yh>Ld_y}muYcXy127NzcE~jduucO>RfZ@C@EWxoCb?3f8 zr){kp#KhFYXav;dmQH0+0##KeI-$phHX z;@=95aPH~++mJf^qcMbYMjnTxrd?*gK4+70l^t>TS&Qx1#17Xu)Dpk{Q8)kMM{PxR z@qvgVMgBWp&!}4oFuj^%r{cE#8j;&S{p}!~@xf_|3pz|~u3*h1q?;C-6%Clny*6Ff zudARhq;#WOz<1f6h}#MEPyi)~>}lqLYGs`87h5~9!W^1k-|akGeU1@iyKHk|AN#je z`$prmk5xP4^qTR^ho6jJuDxGgJ4D=lPByQPcm3cg1S^ymZ9}sQEb3xOkFdRFK9?9V zcKR5LhYq6{oqy*`P4+p+0gcinFQaz*5}kJc31DIopwz7AeVfOn)^!Eh&Uh@eCpG^| z>ta^n-9JlI`cl;WYhKM?wAUOWN?msk`Uw$UoH!@sNvJZ<;mBLFg`KCsjAPTb*+*-H z(gLliJl3eOx3Yy~n-J-`kMCFypvx+DRTXFkKGx1km&!v%uLy zo@G0^Bp~xA>FKl*p@TiPE)Qce$}_{|v#`vr%Me-9|5YH*KWLkQ`{#Ve1eD+P?e_ow z%K26+36XjL-Cz8E?I|#a;K; zcyf?aTO;e&OU|*?vZl2~ArxcSKPo%sXef9?>`m597&l+Vrfd*7{50mHlGfS5>9c<| zQ8CYra$u0}IH{BW=8Kp8!T;vrk7QE`X$uJR(5=aIVhC z(Smm@=S+;Q@#0!2oVa-{gf6+jGH0^-7oA@ox|@|hijq5?=l?tGFV7nNWP1;}Qh5EC zYe-so2rsU-?S5CTq=-Vwwg4hO8d}@`-VFONjKkOEL3DR+pCnrg!WUvtzJ5(Ga)%8| ztC1!$d3R@rcBK0W=<0};;0D51bgjOVf$T=C1>sLhLL72f5@v8zbrd91fT;Z0_zJU{ z4kfLN)HfwXhL!~|$KGt(y&I`aoz-M=96~Oi>W%^y>B(MY#&;o#kMT*$Uxxqu8nn(= z3i6xmJQWn$@+a$`jiN=rBw|0ggZV@Dqz8Xjee1HF za@)PVJM;C~=kPOUbuITVc!M_6oUx9vo3D3~W6xpkwG6}NpQrBra+Tbj_Yf%&_Fb`J zuWlG}%A3?SVVX@QWA7An<&5ElUiWRqpEq4?@{Hm!|zSUtz zv5Nl_L6DkI=Sc*QTt3c^NA4ws55$> z4l5L}6jf&HW1E($|J6yBb^bv}UM9or-M#S3oz!RO}moi-z5#wyt%wc7Ab6^$F4Gnt*3_;bzJ)TAC+T zE2nfFmfgX~D}Ni!bMn~4*eCArO7#;|Ct>JII_(>LpmwoyB(YBaNlDz^4&T(8jPDlp z=R6Z?C*kj1Iq$^T*^n%Nlm4KczAed^8PKW`2ZB!&E_D&Z?-8MduFv|BoSntT}Uao4QE8*?~8wcI@W zH%a?hVSMkTN|4bRdgc+p>mo1+ZT^FrK_6?YF6eJ2{&_Jw&D;1^QxVptm(S=E&IDik z!SJ%gHjOwI1%74@WmwF&v)EyD?0aMKtmum5DDhk=5L%oq!O#g~pF2@vBWz6vkWI`; z7c?CC!QB3jyz&3zuDCcButRIfpc<3kE`cOuqZ1?5YAgfKx`HSqz^n7Uh>%{Ox7;gW z)EgFqZCTBzeFBHa*_0MDMUh?M9(P4{YJwYbPmcaz`3er9X*GTpY~5F{rq$PeaocTd zFSa*Z{bj#SJQ8npp%!Cc3b>-MxC6+LpymbZwb71&li#99$5sLqqPJLj&HS=My;&gr zE@bf&^TpNf%bKR2BTR<{VUF+_<>FT@`>mF77O(cG#E8i^lAYyA;&i1jEat!-3C<4l zXLM#jv4&IkkR`kN}*LwmR&{MsXVz}?@JSiRi8<I4uZ~8iV)e&+m<`Eh%Ve(i`Ryv)dv= zkH}LegYLHV|M6Z`bN@0rjlD}HNIL=Z2=Dm_R{Njz-V=6ABTL)Wm@)MXsJZ0$Njt}v z2HUI&9ur8n#k_iwK7Nd8xT%kgu5Cu;G%vt|BEW4Vbx$&@70~(+L3B1)vw21y&W2(K zb$!sF&+oiYnfhOg5?4J8W|$lKRyHvj9LToF;mn%JPds6Ej@Nmeq7qb) zB~pFI1qaNc=PMsLBdxqqmnEQigG*ZCIytJiCmr9%P+>^SFnH^-V^OlKj2T^55D>5M z7Bu3%JQg6`9(FSoncO^pwJ4RJH!qLr(x{WBT2R0Mf3wyNP&8bv@~b4| zL1Ls%A{nTAt7BYo5&4*3sG|uLQSwn(cv(wMTzcvp;jz4{9MQyksW5qcp%{Mi{Dyuk#TrD$OLahlNduU_?a3~&dxlF(n4xa95AAcK@& z7CykL3=6DAJ92oRoa+f&LNr>pqE#tqsU0P!$+s&?s;C1i&Hh-@!^!i4#VCSaQFQd& z?^nnbFZSXkp3n7A8sz4@O*TjCQ~A(ln1JcWha=4MGyz>x>-e15K5ZVzpPCS-jQ|2? zp7~BT0Y#jzvD!&L_WV04(;(r_OYK#^d-zj(mp zWKY6RN-j)?9R^VFN+V-YfMXrK>9BQq@Q?YjDAS=UXrQei_5C}EKo#&1yg zkw7pN@^|>3YK83M9-bSES4>B>%a7E(>=P8$V=Q)HZQ>i>s_2lT4bub%$t}rV)S78? zKn}Ar`9OWF>&kBy=K%9_GEt-uU!YhIwKGt{2I~h)D7m><>Ju~JOYt%-L(7*G=}l=2 z?%8LLXSGx5Aba}xf1;2|+Z}0cJwF1kQw^;!-_12i@ZM*xZKG`piTV-qT}6=lEQ~!! zSi!q_qLdcV6R<=U%#NCo&u6!(je@lA4y?DrDZMcxcom2>IERCi?w11VCgadVvpB@8 zEY%X6Q1=eK#0B@9DBN(Tt7F40vk0{Y3W-%cUpu1>mNV>;)#y9X+ae`0?FJ7jQJQFw z0@XCxhD0thNYOfOLbVmZD+tWsPxi^upv^>->-!Oy=m0Q8f<0}Q#%#W*!KU9HYofh& zxLylg&)=3#dAB|p4rk7QRG|UWaHAJiGE1TC78(v$-Bzh0{}KO#6kz=uzpvK?`zz)O zodyQ|vs9W|Kcr`{<(#V?M@$VQZHB*!V_+vTF`|(!cLvKHGgv_uIS~+eZ zd!iiX8^{x&ogl=i0qv~OK`Bd@^IYqZ*mg%#TnbU$MK}BoYglJ?nW4;xIXF&r)@e%? zLg_(W!urlDNpB~Zp@|$0*Vl8FKFIHJEUD6geSQmzm;dmUPGfc}-abTg%p%$RKNPS` zzEeL?{Vb4k1Hy}*Ac{(-0dCDJLe?7Z=Xqk3s;Ckb&`AW$t zgAXCLr8dZg1+(&?^PbQZfF&GuHtjZL$a1t#)~t>Y*TYF?TI{F};Ud!unN>((HCZ`u z8?#I`24jkqWFov%)(E25qf8}T(B6^hIV*I(WcoIeS<$$r3z1mJ&UyFybCsW$)X-=={2rLDa5k zM99vWea2#Mv&uZhY?6VGLjIPCLJk{;?!^@i(-D@bNGS(s#mGl|MH0m}AyF;T7M5Xs zkK5g^4J&jvv2ak!4jsvoV?I>OjyLFgF-A-_PUe`@md=z=Y0K%zYPNqZ3X(h;icjRK zhj``7#ltcZsjS2O(|d9IWuzB)-66dU+x%x1phHgkY6;pPz8t4qG{Kxh2Be`L+Y&>7bALddUb3aGwMTfUX;^?KQB5;I6&HAU^z1aECgQr$P&d`Ia>1E zi3})5#yl5Si~F}i^DhKv(Uq>vkE3BHeGtg6*!}e%{Y$uq{}WCg{i7#mY6%pRnN`-t z;PlEq#_?ODkkfcbaW>@CW=&KNWx~qTt1GFr=(BQ1G`k=Gvu}Lwhfk%!UyC!gs(%1uSx2}ubJbJQH^DO;913WI3$ zNJ=%O`*gTSgPt5JL z7nZi%;P1 zxVwl*#vOJ0X^)?w$V}TlvhT-y8n$PlSN}81+q`qo8%rGT5Wv| z3yBEupZJ8bc|f5!X7&t)3xBDo_iVXj#WU|qTDKQ7T9PNxSFX29C3Q#GgK1h7^_i)Z zU%TrBU&(`-gfjp^_2w}lH1;nCRlDqQXY+0|jUv~xwSn1?Pr5{>KYc)CTHiQYW(oKp z_kVk)1kq6~O(Kp)+9**_cfiIA>jxx+Km{CkP9ZKCbOUh^Lg@N|2uhky<~74Kr;FRG zywK~{fG^9Pp+dTU{1;b^7)+>i*mY-DoO_`Mk~Mj#U0Blc5aI&})JP6!mFrM0QfDo8 zWZ6gG1`s0oS<*<6g3&Hur*p*@_IKCcFf-J<^d{iKS3h2t`l(o) z?#Rp)FW_Hi{}QCk=M{#EblYlYWL&L$7z+OcZkc+N{-?6p)#XReQLqn(vu;Vt59?!c;@tbUwlZ zRSumSU>5@{bXN7E|16P>0{x3`>IXy0l->rLbH^(4u?741U0xEP&ntiaQ%4!j$$04I zTngkv(q^$p8xqUlJL>xHB0)+A?*f@6b@m)q;ghv5orSB=tPH^dtJbd~U|;7&X|+a) zVXvfA5Dt4pb;*#{)UqBV-<+9sFyFhbP_T32RvK@9*G0(PjqYoPbful`Y?Vjn_9uBw zBS`>PMA&L<7JxX79(?#r$IXKVg^BvaQ&SU6ws20Mpj-*3f!#86+6iu1xxcAt`X(?E zDP>0UH>36m*2z3TtfZwQK|1-)NLv!p|7LbZ9yG`EnEkGIrZkxTBkca)@Tz_x*18k% z=c6|O;6)MdT7|;G&ENg06~f)r zt+sm;Pfv1sZoA_Ij|{dpg=6<5n%wg^bceymEdL49VAYQxrfbN#@&l}#m&v-2svqrT z?yB5TGiNP-aXXA$mYh2n%60_ugVP{Z~w^hkzLw!JYfWS{OiWonH9w-8sa1( zTIoE7pgYmwEM((b-{<%KttpR&zyMay$Yp5Rkjg>{SLT>!yM{%fB{wZK?Ay53YK%YY3>C|Eagf< z$5k$AjRv-ZN-l1*b3Z?PYN~3uqY(RF>U@}6HxY5^>Pip1`&0NL6Td_c#fgJ9fWtzd znYxz4q}KOsMWHN7q)ePi#nhMc9pX)D3yoq8oEab2N+O18VowGuh12hC+8p zC;%>xRJ_V3t^xdpH})DA-P-Sv;foC)bv>r|Q1uC@7So`piL!t{927t(3fu>U+&#X(|P11H|EVJ>y6k}NC3N>O!+(aD1HISHC zjP&n~MYwA2h!2j1P_MYqMK#|{$xYJ}g8`AL>9dBQkBWN?euv_|*NdNTFulEW9vQ1weTdNQ2@}bWH0-t82|a3=NVU5WNnDF04YK%k=2PsZmuLfDLLm zzFNgEK>;Z10`jy*t!^DRS8Dd}mFRi3m{q|gyT@I|oiIQ94GBbzkBd6rw{=G}F0_$_ zHL~`rfAGL4`qmcF20BOI0T+~G*n8d*4%6yhP3Q}mK!(4#!B#HX*z(FuDU@N;0VRC$ zlfcuvc~h&+A4({#J&a&ao-IDct(ERXZ4enBmi#fF<56uF-EGt8F;**lU?Z#~SPbqJ zQ)>_o;gV=k`!X6#{O$5yMHgAQfvOABB6m_+(nMOq_ybUpv$#rp7r>k>8-5;#ln9YB ztx8utsXm>gYAXs*Fa9DOzl9?Eh!}wdt$NL!BLcM&O$_u=SQY5*uRU%0*<*tc^f%pI zFtcGEPx;%Ervzn}>wQEOG^jmra>B)iOTW_-9r69PEhzRVTo+j3O~UO+Q&Y+sEmG?d zHIkPN3iVkSO}4uRx*4T@E$*K4VgFW$bApP^^1anYTh(iArPa2n1VK4T8UrD3ih$RaI`v|#Bu z#CYUBUq=@s8Js$hxPU^yHTG$oCuXrq4cLFU&p*9ahOcB`0wQ+{=x^8D^*zds}v zEsB+s>cPcb5T}$vZ-+PZm}a15tt?0=`zeK}awsUmRV#|+RzI0LiD?9}=O(59K69;^ z*n5}u_Y)%V9+!7&npo(CE7>l{DBege!B@qR(F)5&smUaZ{oLDkgM+0hLxg>xdM9FB zE2(W0hDuN2?(SN$_`QvnXYPhUFMppxPv7!P!tn%0KqOGUF?rK`lo2*9F~T0r*>Lw) zWC2I%a976ZJ@)~`_DF}r4oOr_4l%mh+#NIyETe0Xa?hrrUoOon4SLnFOoTO*mZrzd zG2tWB_i!X-mkLz$a-khiP=pglawJkIqpMK?PZ64^5UXa_6fft0-fW2VgM4Lv5HefW z;y_dS%h`y>Qx5^cO;lZ&cAua`NaV~w51Qp~B*F$@8aya2K04?shx={D)@*RZ>^%Kb zv42SY1KZmwg%DD$ckN>ZQUzbPF_{g zVMq=d?K#^Ne_XJPC+k)loGbqI z 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%0ARt`Zm=s=1yw5G6Q6bv_A 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

{$+B*vQun*p5$JDB_{%~>0tt- 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 P&Ct->jg;L2J^KFxx;^BV literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..0837fdd --- /dev/null +++ b/docs/index.md @@ -0,0 +1,12 @@ +# Python Notion API + +Logo + +Python Notion API implements a client for talking with Notion API. + +The key features of this implementation are: + +* Async calls allowing you to send multiple requests at once +* [pydantic](https://docs.pydantic.dev/latest/) wrappers around Notion pages, properties and databases + +[Get started](get_started/install.md){ .md-button } diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..6856c14 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,40 @@ +site_name: Python Notion API +repo_url: https://github.com/Colorifix/python-notion-api +repo_name: Colorifix/python-notion-api +theme: + logo: img/logo.webp + favicon: img/logo.webp + icon: + repo: fontawesome/brands/github-alt + name: material + palette: + primary: white + features: + - navigation.sections + - navigation.footer + - navigation.sections + - toc.integrate + +markdown_extensions: + - attr_list + - admonition + - pymdownx.details + - pymdownx.superfences + - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true + +nav: + - Home: index.md + - Get started: + - Installation: get_started/install.md + - Databases: get_started/databases.md + - Pages: get_started/pages.md + - Blocks: get_started/blocks.md + - API: + - Sync: api/sync.md + - Async: api/async.md + +plugins: + - mkdocstrings + - search diff --git a/poetry.lock b/poetry.lock index e31bc77..a3bbd5c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,120 +1,137 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. [[package]] -name = "aiohttp" -version = "3.9.3" -description = "Async http client/server framework (asyncio)" +name = "aiohappyeyeballs" +version = "2.4.4" +description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, - {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, - {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, - {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, - {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, - {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, - {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, - {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, - {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, - {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, - {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, - {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, + {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, +] + +[[package]] +name = "aiohttp" +version = "3.11.11" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, + {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, + {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, + {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, + {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, + {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, + {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, + {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, + {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, + {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, + {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, ] [package.dependencies] +aiohappyeyeballs = ">=2.3.0" aiosignal = ">=1.1.2" attrs = ">=17.3.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" -yarl = ">=1.0,<2.0" +propcache = ">=0.2.0" +yarl = ">=1.17.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiolimiter" -version = "1.1.0" +version = "1.2.1" description = "asyncio rate limiter, a leaky bucket implementation" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" +groups = ["main"] files = [ - {file = "aiolimiter-1.1.0-py3-none-any.whl", hash = "sha256:0b4997961fc58b8df40279e739f9cf0d3e255e63e9a44f64df567a8c17241e24"}, - {file = "aiolimiter-1.1.0.tar.gz", hash = "sha256:461cf02f82a29347340d031626c92853645c099cb5ff85577b831a7bd21132b5"}, + {file = "aiolimiter-1.2.1-py3-none-any.whl", hash = "sha256:d3f249e9059a20badcb56b61601a83556133655c11d1eb3dd3e04ff069e5f3c7"}, + {file = "aiolimiter-1.2.1.tar.gz", hash = "sha256:e02a37ea1a855d9e832252a105420ad4d15011505512a1a1d814647451b5cca9"}, ] [[package]] name = "aiosignal" -version = "1.3.1" +version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, ] [package.dependencies] @@ -122,126 +139,70 @@ frozenlist = ">=1.1.0" [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "attrs" -version = "23.2.0" +version = "24.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] -name = "cachetools" -version = "5.3.3" -description = "Extensible memoizing collections and decorators" +name = "babel" +version = "2.16.0" +description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, - {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] -[[package]] -name = "cffi" -version = "1.16.0" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, -] - -[package.dependencies] -pycparser = "*" - [[package]] name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -249,1141 +210,809 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, +] + +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +groups = ["dev"] 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"}, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "sys_platform == \"win32\""} [[package]] -name = "contourpy" -version = "1.2.0" -description = "Python library for calculating contours of 2D quadrilateral grids" +name = "distlib" +version = "0.3.9" +description = "Distribution utilities" optional = false -python-versions = ">=3.9" +python-versions = "*" +groups = ["dev"] files = [ - {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, - {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, - {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, - {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, - {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, - {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, - {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, - {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, - {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, - {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, - {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] -[package.dependencies] -numpy = ">=1.20,<2.0" - -[package.extras] -bokeh = ["bokeh", "selenium"] -docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] -test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] - [[package]] -name = "cryptography" -version = "42.0.5" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +name = "filelock" +version = "3.16.1" +description = "A platform independent file lock." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - [package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] -name = "cycler" -version = "0.12.1" -description = "Composable style cycles" +name = "frozenlist" +version = "1.5.0" +description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +groups = ["dev"] files = [ - {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, - {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, + {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] -docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] -tests = ["pytest", "pytest-cov", "pytest-xdist"] +dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "distlib" -version = "0.3.8" -description = "Distribution utilities" +name = "griffe" +version = "1.5.5" +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." optional = false -python-versions = "*" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, + {file = "griffe-1.5.5-py3-none-any.whl", hash = "sha256:2761b1e8876c6f1f9ab1af274df93ea6bbadd65090de5f38f4cb5cc84897c7dd"}, + {file = "griffe-1.5.5.tar.gz", hash = "sha256:35ee5b38b93d6a839098aad0f92207e6ad6b70c3e8866c08ca669275b8cba585"}, ] -[[package]] -name = "et-xmlfile" -version = "1.1.0" -description = "An implementation of lxml.xmlfile for the standard library" -optional = false -python-versions = ">=3.6" -files = [ - {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, - {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, -] +[package.dependencies] +colorama = ">=0.4" [[package]] -name = "filelock" -version = "3.13.1" -description = "A platform independent file lock." +name = "identify" +version = "2.6.4" +description = "File identification library for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "identify-2.6.4-py2.py3-none-any.whl", hash = "sha256:993b0f01b97e0568c179bb9196391ff391bfb88a99099dbf5ce392b68f42d0af"}, + {file = "identify-2.6.4.tar.gz", hash = "sha256:285a7d27e397652e8cafe537a6cc97dd470a970f48fb2e9d979aa38eae5513ac"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] -typing = ["typing-extensions (>=4.8)"] +license = ["ukkonen"] [[package]] -name = "fonttools" -version = "4.50.0" -description = "Tools to manipulate font files" +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" +groups = ["main", "dev"] files = [ - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effd303fb422f8ce06543a36ca69148471144c534cc25f30e5be752bc4f46736"}, - {file = "fonttools-4.50.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7913992ab836f621d06aabac118fc258b9947a775a607e1a737eb3a91c360335"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0a1c5bd2f63da4043b63888534b52c5a1fd7ae187c8ffc64cbb7ae475b9dab"}, - {file = "fonttools-4.50.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d40fc98540fa5360e7ecf2c56ddf3c6e7dd04929543618fd7b5cc76e66390562"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fff65fbb7afe137bac3113827855e0204482727bddd00a806034ab0d3951d0d"}, - {file = "fonttools-4.50.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1aeae3dd2ee719074a9372c89ad94f7c581903306d76befdaca2a559f802472"}, - {file = "fonttools-4.50.0-cp310-cp310-win32.whl", hash = "sha256:e9623afa319405da33b43c85cceb0585a6f5d3a1d7c604daf4f7e1dd55c03d1f"}, - {file = "fonttools-4.50.0-cp310-cp310-win_amd64.whl", hash = "sha256:778c5f43e7e654ef7fe0605e80894930bc3a7772e2f496238e57218610140f54"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3dfb102e7f63b78c832e4539969167ffcc0375b013080e6472350965a5fe8048"}, - {file = "fonttools-4.50.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e58fe34cb379ba3d01d5d319d67dd3ce7ca9a47ad044ea2b22635cd2d1247fc"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c673ab40d15a442a4e6eb09bf007c1dda47c84ac1e2eecbdf359adacb799c24"}, - {file = "fonttools-4.50.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b3ac35cdcd1a4c90c23a5200212c1bb74fa05833cc7c14291d7043a52ca2aaa"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8844e7a2c5f7ecf977e82eb6b3014f025c8b454e046d941ece05b768be5847ae"}, - {file = "fonttools-4.50.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f849bd3c5c2249b49c98eca5aaebb920d2bfd92b3c69e84ca9bddf133e9f83f0"}, - {file = "fonttools-4.50.0-cp311-cp311-win32.whl", hash = "sha256:39293ff231b36b035575e81c14626dfc14407a20de5262f9596c2cbb199c3625"}, - {file = "fonttools-4.50.0-cp311-cp311-win_amd64.whl", hash = "sha256:c33d5023523b44d3481624f840c8646656a1def7630ca562f222eb3ead16c438"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b4a886a6dbe60100ba1cd24de962f8cd18139bd32808da80de1fa9f9f27bf1dc"}, - {file = "fonttools-4.50.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b2ca1837bfbe5eafa11313dbc7edada79052709a1fffa10cea691210af4aa1fa"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0493dd97ac8977e48ffc1476b932b37c847cbb87fd68673dee5182004906828"}, - {file = "fonttools-4.50.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77844e2f1b0889120b6c222fc49b2b75c3d88b930615e98893b899b9352a27ea"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3566bfb8c55ed9100afe1ba6f0f12265cd63a1387b9661eb6031a1578a28bad1"}, - {file = "fonttools-4.50.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:35e10ddbc129cf61775d58a14f2d44121178d89874d32cae1eac722e687d9019"}, - {file = "fonttools-4.50.0-cp312-cp312-win32.whl", hash = "sha256:cc8140baf9fa8f9b903f2b393a6c413a220fa990264b215bf48484f3d0bf8710"}, - {file = "fonttools-4.50.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ccc85fd96373ab73c59833b824d7a73846670a0cb1f3afbaee2b2c426a8f931"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e270a406219af37581d96c810172001ec536e29e5593aa40d4c01cca3e145aa6"}, - {file = "fonttools-4.50.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac2463de667233372e9e1c7e9de3d914b708437ef52a3199fdbf5a60184f190c"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47abd6669195abe87c22750dbcd366dc3a0648f1b7c93c2baa97429c4dc1506e"}, - {file = "fonttools-4.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:074841375e2e3d559aecc86e1224caf78e8b8417bb391e7d2506412538f21adc"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0743fd2191ad7ab43d78cd747215b12033ddee24fa1e088605a3efe80d6984de"}, - {file = "fonttools-4.50.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3d7080cce7be5ed65bee3496f09f79a82865a514863197ff4d4d177389e981b0"}, - {file = "fonttools-4.50.0-cp38-cp38-win32.whl", hash = "sha256:a467ba4e2eadc1d5cc1a11d355abb945f680473fbe30d15617e104c81f483045"}, - {file = "fonttools-4.50.0-cp38-cp38-win_amd64.whl", hash = "sha256:f77e048f805e00870659d6318fd89ef28ca4ee16a22b4c5e1905b735495fc422"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b6245eafd553c4e9a0708e93be51392bd2288c773523892fbd616d33fd2fda59"}, - {file = "fonttools-4.50.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4062cc7e8de26f1603323ef3ae2171c9d29c8a9f5e067d555a2813cd5c7a7e0"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34692850dfd64ba06af61e5791a441f664cb7d21e7b544e8f385718430e8f8e4"}, - {file = "fonttools-4.50.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678dd95f26a67e02c50dcb5bf250f95231d455642afbc65a3b0bcdacd4e4dd38"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f2ce7b0b295fe64ac0a85aef46a0f2614995774bd7bc643b85679c0283287f9"}, - {file = "fonttools-4.50.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d346f4dc2221bfb7ab652d1e37d327578434ce559baf7113b0f55768437fe6a0"}, - {file = "fonttools-4.50.0-cp39-cp39-win32.whl", hash = "sha256:a51eeaf52ba3afd70bf489be20e52fdfafe6c03d652b02477c6ce23c995222f4"}, - {file = "fonttools-4.50.0-cp39-cp39-win_amd64.whl", hash = "sha256:8639be40d583e5d9da67795aa3eeeda0488fb577a1d42ae11a5036f18fb16d93"}, - {file = "fonttools-4.50.0-py3-none-any.whl", hash = "sha256:48fa36da06247aa8282766cfd63efff1bb24e55f020f29a335939ed3844d20d3"}, - {file = "fonttools-4.50.0.tar.gz", hash = "sha256:fa5cf61058c7dbb104c2ac4e782bf1b2016a8cf2f69de6e4dd6a865d2c969bb5"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] -graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "pycairo", "scipy"] -lxml = ["lxml (>=4.0)"] -pathops = ["skia-pathops (>=0.5.0)"] -plot = ["matplotlib"] -repacker = ["uharfbuzz (>=0.23.0)"] -symfont = ["sympy"] -type1 = ["xattr"] -ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=15.1.0)"] -woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] -name = "frozenlist" -version = "1.4.1" -description = "A list-like structure which implements collections.abc.MutableSequence" +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] -name = "google-api-core" -version = "2.17.1" -description = "Google API client core library" +name = "jinja2" +version = "3.1.5" +description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"}, - {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] -google-auth = ">=2.14.1,<3.0.dev0" -googleapis-common-protos = ">=1.56.2,<2.0.dev0" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" -requests = ">=2.18.0,<3.0.0.dev0" +MarkupSafe = ">=2.0" [package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +i18n = ["Babel (>=2.7)"] [[package]] -name = "google-api-python-client" -version = "2.122.0" -description = "Google API Client Library for Python" +name = "loguru" +version = "0.7.3" +description = "Python logging made (stupidly) simple" optional = false -python-versions = ">=3.7" +python-versions = "<4.0,>=3.5" +groups = ["main"] files = [ - {file = "google-api-python-client-2.122.0.tar.gz", hash = "sha256:77447bf2d6b6ea9e686fd66fc2f12ee7a63e3889b7427676429ebf09fcb5dcf9"}, - {file = "google_api_python_client-2.122.0-py2.py3-none-any.whl", hash = "sha256:a5953e60394b77b98bcc7ff7c4971ed784b3b693e9a569c176eaccb1549330f2"}, + {file = "loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c"}, + {file = "loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6"}, ] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" -google-auth = ">=1.19.0,<3.0.0.dev0" -google-auth-httplib2 = ">=0.1.0" -httplib2 = ">=0.15.0,<1.dev0" -uritemplate = ">=3.0.1,<5" +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["Sphinx (==8.1.3)", "build (==1.2.2)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.5.0)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.13.0)", "mypy (==v1.4.1)", "myst-parser (==4.0.0)", "pre-commit (==4.0.1)", "pytest (==6.1.2)", "pytest (==8.3.2)", "pytest-cov (==2.12.1)", "pytest-cov (==5.0.0)", "pytest-cov (==6.0.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.1.0)", "sphinx-rtd-theme (==3.0.2)", "tox (==3.27.1)", "tox (==4.23.2)", "twine (==6.0.1)"] [[package]] -name = "google-auth" -version = "2.28.2" -description = "Google Authentication Library" +name = "markdown" +version = "3.7" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "google-auth-2.28.2.tar.gz", hash = "sha256:80b8b4969aa9ed5938c7828308f20f035bc79f9d8fb8120bf9dc8db20b41ba30"}, - {file = "google_auth-2.28.2-py2.py3-none-any.whl", hash = "sha256:9fd67bbcd40f16d9d42f950228e9cf02a2ded4ae49198b27432d0cded5a74c38"}, + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, ] -[package.dependencies] -cachetools = ">=2.0.0,<6.0" -pyasn1-modules = ">=0.2.1" -rsa = ">=3.1.4,<5" - [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] -enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] -pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] -reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0.dev0)"] +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 = "google-auth-httplib2" -version = "0.2.0" -description = "Google Authentication Library: httplib2 transport" +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = "*" +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, - {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] -[package.dependencies] -google-auth = "*" -httplib2 = ">=0.19.0" - [[package]] -name = "googleapis-common-protos" -version = "1.63.0" -description = "Common protobufs used in Google APIs" +name = "mkdocs" +version = "1.6.1" +description = "Project documentation with Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "googleapis-common-protos-1.63.0.tar.gz", hash = "sha256:17ad01b11d5f1d0171c06d3ba5c04c54474e883b66b949722b4938ee2694ef4e"}, - {file = "googleapis_common_protos-1.63.0-py2.py3-none-any.whl", hash = "sha256:ae45f75702f7c08b541f750854a678bd8f534a1a6bace6afe975f1d0a82d6632"}, + {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, + {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, ] [package.dependencies] -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" +packaging = ">=20.5" +pathspec = ">=0.11.1" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" [package.extras] -grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] [[package]] -name = "httplib2" -version = "0.22.0" -description = "A comprehensive HTTP client library." +name = "mkdocs-autorefs" +version = "1.3.0" +description = "Automatically link across pages in MkDocs." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, - {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, + {file = "mkdocs_autorefs-1.3.0-py3-none-any.whl", hash = "sha256:d180f9778a04e78b7134e31418f238bba56f56d6a8af97873946ff661befffb3"}, + {file = "mkdocs_autorefs-1.3.0.tar.gz", hash = "sha256:6867764c099ace9025d6ac24fd07b85a98335fbd30107ef01053697c8f46db61"}, ] [package.dependencies] -pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} +Markdown = ">=3.3" +markupsafe = ">=2.0.1" +mkdocs = ">=1.1" [[package]] -name = "identify" -version = "2.5.35" -description = "File identification library for Python" +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] -[package.extras] -license = ["ukkonen"] +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" [[package]] -name = "idna" -version = "3.6" -description = "Internationalized Domain Names in Applications (IDNA)" +name = "mkdocs-material" +version = "9.5.50" +description = "Documentation that simply works" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385"}, + {file = "mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825"}, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] +[package.dependencies] +babel = ">=2.10,<3.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.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,<3)", "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 = "kiwisolver" -version = "1.4.5" -description = "A fast implementation of the Cassowary constraint solver" +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, - {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, + {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 = "loguru" -version = "0.7.2" -description = "Python logging made (stupidly) simple" +name = "mkdocstrings" +version = "0.27.0" +description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"}, - {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"}, + {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, + {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, ] [package.dependencies] -colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} -win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} +click = ">=7.0" +Jinja2 = ">=2.11.1" +Markdown = ">=3.6" +MarkupSafe = ">=1.1" +mkdocs = ">=1.4" +mkdocs-autorefs = ">=1.2" +mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""} +platformdirs = ">=2.2" +pymdown-extensions = ">=6.3" [package.extras] -dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] -name = "matplotlib" -version = "3.8.3" -description = "Python plotting package" +name = "mkdocstrings-python" +version = "1.13.0" +description = "A Python handler for mkdocstrings." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, - {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, - {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, - {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, - {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, - {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, - {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, - {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, - {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, - {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, - {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, + {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, + {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, ] [package.dependencies] -contourpy = ">=1.0.1" -cycler = ">=0.10" -fonttools = ">=4.22.0" -kiwisolver = ">=1.3.1" -numpy = ">=1.21,<2" -packaging = ">=20.0" -pillow = ">=8" -pyparsing = ">=2.3.1" -python-dateutil = ">=2.7" +griffe = ">=0.49" +mkdocs-autorefs = ">=1.2" +mkdocstrings = ">=0.26" [[package]] name = "multidict" -version = "6.0.5" +version = "6.1.0" description = "multidict implementation" optional = false -python-versions = ">=3.7" -files = [ - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, - {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, - {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, - {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, - {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, - {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, - {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, - {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, - {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, - {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, - {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, - {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, - {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, - {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, - {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, - {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, - {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, - {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, - {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, - {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, - {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, - {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, - {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, - {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, - {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, - {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, - {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, - {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, - {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, - {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, - {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, - {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, - {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" -files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, -] - -[package.dependencies] -setuptools = "*" - -[[package]] -name = "numpy" -version = "1.26.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, -] - -[[package]] -name = "oauth2client" -version = "4.1.3" -description = "OAuth 2.0 client library" -optional = false -python-versions = "*" -files = [ - {file = "oauth2client-4.1.3-py2.py3-none-any.whl", hash = "sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac"}, - {file = "oauth2client-4.1.3.tar.gz", hash = "sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6"}, -] - -[package.dependencies] -httplib2 = ">=0.9.1" -pyasn1 = ">=0.1.7" -pyasn1-modules = ">=0.0.5" -rsa = ">=3.1.4" -six = ">=1.6.1" - -[[package]] -name = "openpyxl" -version = "3.1.2" -description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -optional = false -python-versions = ">=3.6" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ - {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, - {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -et-xmlfile = "*" - [[package]] name = "packaging" -version = "24.0" +version = "24.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] -name = "pandas" -version = "2.2.1" -description = "Powerful data structures for data analysis, time series, and statistics" +name = "paginate" +version = "0.5.7" +description = "Divides large result sets into pages for easier browsing" optional = false -python-versions = ">=3.9" +python-versions = "*" +groups = ["dev"] files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] -[package.dependencies] -numpy = [ - {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, -] -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - [package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] +dev = ["pytest", "tox"] +lint = ["black"] [[package]] -name = "pillow" -version = "10.2.0" -description = "Python Imaging Library (Fork)" +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] -fpx = ["olefile"] -mic = ["olefile"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] -xmp = ["defusedxml"] - [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1392,13 +1021,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.6.2" +version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, + {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, ] [package.dependencies] @@ -1409,234 +1039,276 @@ pyyaml = ">=5.1" virtualenv = ">=20.10.0" [[package]] -name = "protobuf" -version = "4.25.3" -description = "" +name = "propcache" +version = "0.2.1" +description = "Accelerated property cache" optional = false -python-versions = ">=3.8" -files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, -] - -[[package]] -name = "pyasn1" -version = "0.5.1" -description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, - {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, -] - -[[package]] -name = "pyasn1-modules" -version = "0.3.0" -description = "A collection of ASN.1-based protocols modules" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, - {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, + {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, + {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, + {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, + {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, + {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, + {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, + {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, + {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, + {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, + {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, + {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, + {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, ] -[package.dependencies] -pyasn1 = ">=0.4.6,<0.6.0" - [[package]] name = "pycodestyle" -version = "2.11.1" +version = "2.12.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, -] - -[[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] name = "pydantic" -version = "2.6.4" +version = "2.10.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, - {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, + {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"}, + {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"}, ] [package.dependencies] -annotated-types = ">=0.4.0" -pydantic-core = "2.16.3" -typing-extensions = ">=4.6.1" +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.16.3" -description = "" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, - {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, - {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, - {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, - {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, - {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, - {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, - {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, - {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, - {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, - {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, - {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, - {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, - {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, +groups = ["main"] +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] -name = "pydrive2" -version = "1.19.0" -description = "Google Drive API made easy. Maintained fork of PyDrive." +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "PyDrive2-1.19.0-py3-none-any.whl", hash = "sha256:5699f24cf13907d9556f1c6c33a913c9fcb4441c1b999a6204affc2d4d793aea"}, - {file = "PyDrive2-1.19.0.tar.gz", hash = "sha256:21aea7da27635c2c3f7050e020206191f3b0305c6550315e6e8e3dd526f8b531"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] -[package.dependencies] -google-api-python-client = ">=1.12.5" -oauth2client = ">=4.0.0" -pyOpenSSL = ">=19.1.0" -PyYAML = ">=3.0" - [package.extras] -fsspec = ["appdirs (>=1.4.3)", "fsspec (>=2021.07.0)", "funcy (>=1.14)", "tqdm (>=4.0.0)"] -tests = ["black (==23.12.1)", "flake8", "flake8-docstrings", "funcy (>=1.14)", "importlib-resources (<6)", "pyinstaller", "pytest (>=4.6.0)", "pytest-mock", "timeout-decorator"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] -name = "pyopenssl" -version = "24.1.0" -description = "Python wrapper module around the OpenSSL library" +name = "pymdown-extensions" +version = "10.14.2" +description = "Extension pack for Python Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pyOpenSSL-24.1.0-py3-none-any.whl", hash = "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad"}, - {file = "pyOpenSSL-24.1.0.tar.gz", hash = "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"}, + {file = "pymdown_extensions-10.14.2-py3-none-any.whl", hash = "sha256:f45bc5892410e54fd738ab8ccd736098b7ff0cb27fdb4bf24d0a0c6584bc90e1"}, + {file = "pymdown_extensions-10.14.2.tar.gz", hash = "sha256:7a77b8116dc04193f2c01143760a43387bd9dc4aa05efacb7d838885a7791253"}, ] [package.dependencies] -cryptography = ">=41.0.5,<43" - -[package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] -test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] - -[[package]] -name = "pyparsing" -version = "3.1.2" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -optional = false -python-versions = ">=3.6.8" -files = [ - {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, - {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, -] +markdown = ">=3.6" +pyyaml = "*" [package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +extra = ["pygments (>=2.19.1)"] [[package]] name = "pytest" @@ -1644,6 +1316,7 @@ version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -1660,13 +1333,14 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no [[package]] name = "pytest-asyncio" -version = "0.21.1" +version = "0.21.2" description = "Pytest support for asyncio" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "pytest-asyncio-0.21.1.tar.gz", hash = "sha256:40a7eae6dded22c7b604986855ea48400ab15b069ae38116e8c01238e9eeb64d"}, - {file = "pytest_asyncio-0.21.1-py3-none-any.whl", hash = "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b"}, + {file = "pytest_asyncio-0.21.2-py3-none-any.whl", hash = "sha256:ab664c88bb7998f711d8039cacd4884da6430886ae8bbd4eded552ed2004f16b"}, + {file = "pytest_asyncio-0.21.2.tar.gz", hash = "sha256:d67738fc232b94b326b9d060750beb16e0074210b98dd8b58a5239fa2a154f45"}, ] [package.dependencies] @@ -1682,6 +1356,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -1691,74 +1366,197 @@ files = [ six = ">=1.5" [[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +optional = false +python-versions = ">=3.6" +groups = ["dev"] files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {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 = "pyyaml" -version = "6.0.1" -description = "YAML parser and emitter for Python" +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." 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-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-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {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-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-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"}, +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1771,45 +1569,16 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "rsa" -version = "4.9" -description = "Pure-Python RSA implementation" -optional = false -python-versions = ">=3.6,<4" -files = [ - {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, - {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, -] - -[package.dependencies] -pyasn1 = ">=0.1.3" - -[[package]] -name = "setuptools" -version = "69.2.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"}, - {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["dev"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -1818,52 +1587,33 @@ version = "0.0.1" description = "A generic slugifier." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "slugify-0.0.1.tar.gz", hash = "sha256:c5703cc11c1a6947536f3ce8bb306766b8bb5a84a53717f5a703ce0f18235e4c"}, ] [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, -] - -[[package]] -name = "tzdata" -version = "2024.1" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, -] - -[[package]] -name = "uritemplate" -version = "4.1.1" -description = "Implementation of RFC 6570 URI Templates" -optional = false -python-versions = ">=3.6" -files = [ - {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, - {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "urllib3" -version = "2.2.1" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main", "dev"] files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -1874,13 +1624,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.28.1" description = "Virtual Python Environment builder" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.28.1-py3-none-any.whl", hash = "sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb"}, + {file = "virtualenv-20.28.1.tar.gz", hash = "sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329"}, ] [package.dependencies] @@ -1889,18 +1640,63 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "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.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +[[package]] +name = "watchdog" +version = "6.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, + {file = "watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2"}, + {file = "watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860"}, + {file = "watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134"}, + {file = "watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a"}, + {file = "watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881"}, + {file = "watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa"}, + {file = "watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c"}, + {file = "watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2"}, + {file = "watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a"}, + {file = "watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680"}, + {file = "watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f"}, + {file = "watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [[package]] name = "win32-setctime" -version = "1.1.0" +version = "1.2.0" description = "A small Python utility to set file creation time on Windows" optional = false python-versions = ">=3.5" +groups = ["main"] +markers = "sys_platform == \"win32\"" files = [ - {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, - {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, + {file = "win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390"}, + {file = "win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0"}, ] [package.extras] @@ -1908,108 +1704,102 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] [[package]] name = "yarl" -version = "1.9.4" +version = "1.18.3" description = "Yet another URL library" optional = false -python-versions = ">=3.7" -files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, + {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, + {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, + {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, + {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, + {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, + {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, + {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, + {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, + {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, + {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, + {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, + {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, ] [package.dependencies] idna = ">=2.0" multidict = ">=4.0" +propcache = ">=0.2.0" [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.11" -content-hash = "face1948a5dc7347769415930ec0ac6603a12d305b3d5ccd634ee3aa3f1ec830" +content-hash = "2f52ece3171adb0f326ff41f043f1caaa557793c131eff7e5e44c8145b56b7c2" diff --git a/pyproject.toml b/pyproject.toml index cb07ac6..c32019c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,14 @@ [tool.poetry] name = "python-notion-api" -version = "0.10.0" +version = "0.12.0" description = "Python wrapper for the official Notion API" authors = [ - "Mihails ", + "Mihails Delmans ", "Paula Fernandez ", "Michael Hall ", "Helena Saunders ", - "Rodolfo Marques " + "Samuel Wareing ", + "Rodolfo Marques ", ] [tool.poetry.dependencies] @@ -15,21 +16,17 @@ python = "^3.11" requests = "^2.28.1" pydantic = "^2" slugify = "^0.0.1" -PyDrive2 = "^1.15.0" -openpyxl = "^3.0.10" -matplotlib = "^3.5.2" -pandas = "^2.0.2" loguru = "^0.7.0" aiohttp = "^3.8.5" aiolimiter = "^1.1.0" [tool.poetry.group.dev.dependencies] pycodestyle = "^2.10.0" -matplotlib = "^3.8.0" -numpy = "^1.26.0" pytest-asyncio = "^0.21.1" pytest = "^7.4.3" pre-commit = "^3.5.0" +mkdocs-material = "^9.5.50" +mkdocstrings = {extras = ["python"], version = "^0.27.0"} [build-system] requires = ["poetry-core"] diff --git a/python_notion_api/__init__.py b/python_notion_api/__init__.py index 40838dc..444e9f9 100644 --- a/python_notion_api/__init__.py +++ b/python_notion_api/__init__.py @@ -1,4 +1,4 @@ -from python_notion_api.api import * # noqa: F403 -from python_notion_api.gdrive import * # noqa: F403 +from python_notion_api.async_api import * # noqa: F403 from python_notion_api.models import * # noqa: F403 +from python_notion_api.sync_api.api import * # noqa: F403 from python_notion_api.utils import * # noqa: F403 diff --git a/python_notion_api/async_api/__init__.py b/python_notion_api/async_api/__init__.py index 4e148b1..74a4f26 100644 --- a/python_notion_api/async_api/__init__.py +++ b/python_notion_api/async_api/__init__.py @@ -10,7 +10,6 @@ from python_notion_api.async_api.notion_page import NotionPage __all__ = [ - "NotionAPIBase", "AsyncNotionAPI", "NotionBlock", "NotionPage", diff --git a/python_notion_api/async_api/api.py b/python_notion_api/async_api/api.py index 2f6fe97..d0e9ae4 100644 --- a/python_notion_api/async_api/api.py +++ b/python_notion_api/async_api/api.py @@ -35,9 +35,9 @@ class AsyncNotionAPI: def __init__( self, access_token: str, - api_version="2022-06-28", - page_limit=20, - rate_limit=(500, 200), + api_version: str = "2022-06-28", + page_limit: int = 20, + rate_limit: tuple[int, int] = (500, 200), ): self._access_token = access_token self._base_url = "https://api.notion.com/v1/" @@ -52,6 +52,7 @@ def __init__( @property def request_headers(self): + """Gets request headers for making requests.""" return { "Authorization": f"Bearer {self._access_token}", "Notion-Version": f"{self._api_version}", @@ -60,31 +61,38 @@ def request_headers(self): } async def get_database(self, database_id: str) -> NotionDatabase: - """Wrapper for 'Retrieve a database' action. + """Gets Notion database. Args: database_id: Id of the database to fetch. + + Returns: + A Notion database with the given id. """ database = NotionDatabase(self, database_id) await database.reload() return database - async def get_page(self, page_id, page_cast=NotionPage) -> NotionPage: - """Wrapper for 'Retrieve a dpage' action. + async def get_page( + self, page_id: str, page_cast: type[NotionPage] = NotionPage + ) -> NotionPage: + """Gets Notion page. Args: page_id: Id of the database to fetch. page_cast: A subclass of a NotionPage. Allows custom - property retrieval + property retrieval. + Returns: + A Notion page with the given id. """ page = page_cast(api=self, page_id=page_id) await page.reload() return page - async def get_block(self, block_id) -> NotionBlock: - """Wrapper for 'Retrieve a block' action. + async def get_block(self, block_id: str) -> NotionBlock: + """Gets Notion block. Args: block_id: Id of the block to fetch. @@ -105,7 +113,7 @@ async def _request_attempt( params: Dict[str, Any] = {}, data: Optional[str] = None, ): - """Attempt a request to url. + """Attempts a request to url. Args: url: URL for the request. @@ -130,14 +138,14 @@ async def _request( data: Optional[str] = None, cast_cls: Type[NotionObjectBase] = NotionObject, retry_strategy: Optional[RetryStrategy] = None, - ) -> Optional[NotionObject]: + ) -> NotionObject: """Main request handler. Should not be called directly, for internal use only. Args: request_type: Type of the http request to make. - endpoint: Endpoint of the request. Will be prepened with the + endpoint: Endpoint of the request. Will be prefixed with the notion API base url. params: Params to pass to the request. data: Data to pass to the request. @@ -207,7 +215,7 @@ async def _post( data: Optional[str] = None, cast_cls: Type[NotionObjectBase] = NotionObject, retry_strategy: Any = None, - ) -> Optional[NotionObject]: + ) -> NotionObject: """Wrapper for post requests. Should not be called directly, for internal use only. @@ -232,7 +240,7 @@ async def _get( endpoint: str, params: Dict[str, str] = {}, cast_cls: Type[NotionObjectBase] = NotionObject, - ) -> Optional[NotionObject]: + ) -> NotionObject: """Wrapper for post requests. Should not be called directly, for internal use only. @@ -279,14 +287,17 @@ async def _patch( ) async def _post_iterate( - self, endpoint: str, data: Dict[str, str] = {}, page_limit: int = None + self, + endpoint: str, + data: Dict[str, Any] = {}, + page_limit: Optional[int] = None, ) -> NotionObjectGenerator: """Wrapper for post requests where expected return type is Pagination. Should not be called directly, for internal use only. Args: - endpoint: Endpoint of the request. Will be prepened with the + endpoint: Endpoint of the request. Will be prefixed with the notion API base url. data: Data to pass to the request. """ @@ -325,8 +336,8 @@ async def _post_iterate( async def _get_iterate( self, endpoint: str, - params: Dict[str, str] = {}, - page_limit: int = None, + params: Dict[str, Any] = {}, + page_limit: Optional[int] = None, ) -> NotionObjectGenerator: """Wrapper for get requests where expected return type is Pagination. diff --git a/python_notion_api/async_api/notion_block.py b/python_notion_api/async_api/notion_block.py index 5fa6a49..a901398 100644 --- a/python_notion_api/async_api/notion_block.py +++ b/python_notion_api/async_api/notion_block.py @@ -1,4 +1,4 @@ -from typing import List +from typing import TYPE_CHECKING, List from pydantic.v1 import BaseModel @@ -6,21 +6,25 @@ from python_notion_api.async_api.utils import ensure_loaded from python_notion_api.models.objects import Block +if TYPE_CHECKING: + from python_notion_api.async_api.api import AsyncNotionAPI + class NotionBlock: - """wrapper for notion block object + """Wrapper for a Notion block object Args: api: Instance of the NotionAPI. block_id: Id of the block. """ - def __init__(self, api, block_id): + def __init__(self, api: "AsyncNotionAPI", block_id: str): self._api = api self._block_id = block_id self._object = None async def reload(self): + """Reloads the block from Notion.""" self._object = await self._api._get(endpoint=f"blocks/{self.block_id}") class AddChildrenRequest(BaseModel): @@ -32,13 +36,14 @@ def __getattr__(self, attr_key): @property def block_id(self) -> str: + """Gets the block id.""" return self._block_id.replace("-", "") async def get_child_blocks(self) -> AsyncBlockIterator: - """ - Get an iterater of all blocks in the block - Returns: + """Gets all children blocks. + Returns: + An iterator of all children blocks in the block. """ generator = await self._api._get_iterate( endpoint=f"blocks/{self._block_id}/children" @@ -48,10 +53,13 @@ async def get_child_blocks(self) -> AsyncBlockIterator: async def add_child_block( self, content: List[Block], reload_block: bool = False ) -> AsyncBlockIterator: - """Wrapper for add new blocks to an existing page. + """Adds new blocks as children. Args: content: Content of the new block. + + Returns: + An iterator of the newly created blocks. """ request = NotionBlock.AddChildrenRequest(children=content) @@ -70,10 +78,15 @@ async def add_child_block( return AsyncBlockIterator(iter(new_blocks.results)) async def set(self, block: Block, reload_block: bool = False) -> Block: - """ - Updates the content of a Block. The entire content is replaced. + """Updates the content of a Block. + + The entire content is replaced. + Args: block: Block with the new values. + + Returns: + The updated block. """ data = block.patch_json() diff --git a/python_notion_api/async_api/notion_database.py b/python_notion_api/async_api/notion_database.py index 95c7d54..9ed7364 100644 --- a/python_notion_api/async_api/notion_database.py +++ b/python_notion_api/async_api/notion_database.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Generator, List, Optional +from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, List, Optional from pydantic.v1 import BaseModel @@ -14,6 +14,9 @@ from python_notion_api.models.sorts import Sort from python_notion_api.models.values import PropertyValue, generate_value +if TYPE_CHECKING: + from python_notion_api.async_api.api import AsyncNotionAPI + class NotionDatabase: """Wrapper for a Notion database object. @@ -28,7 +31,7 @@ class CreatePageRequest(BaseModel): properties: Dict[str, PropertyValue] cover: Optional[FileObject] - def __init__(self, api, database_id): + def __init__(self, api: "AsyncNotionAPI", database_id: str): self._api = api self._database_id = database_id self._object = None @@ -41,9 +44,11 @@ def __getattr__(self, attr_key): @property def database_id(self) -> str: + """Gets the database id.""" return self._database_id.replace("-", "") async def reload(self): + """Reloads the database from Notion.""" self._object = await self._api._get( endpoint=f"databases/{self._database_id}", cast_cls=Database ) @@ -63,19 +68,23 @@ async def query( sorts: Optional[List[Sort]] = None, page_limit: Optional[int] = None, cast_cls=NotionPage, - ) -> Generator[NotionPage, None, None]: - """A wrapper for 'Query a database' action. + ) -> AsyncGenerator[NotionPage, None]: + """Queries the database. - Retrieves all pages belonging to the database. + Retrieves all pages belonging to the database that satisfy the given filters + in the order specified by the sorts. Args: - filters: - sorts: + filters: Filters to apply to the query. + sorts: Sorts to apply to the query. cast_cls: A subclass of a NotionPage. Allows custom - property retrieval + property retrieval. + Returns: + Generator of NotionPage objects. """ - data = {} + data: dict[str, Any] = {} + if filters is not None: filters = filters.dict(by_alias=True, exclude_unset=True) data["filter"] = filters @@ -97,21 +106,24 @@ async def query( @property @ensure_loaded def title(self) -> str: - """Returns a title of the database.""" + """Gets title of the database.""" + assert self._title is not None return self._title @property @ensure_loaded def properties(self) -> Dict[str, NotionPropertyConfiguration]: - """Returns all property configurations of the database.""" + """Gets all property configurations of the database.""" + assert self._properties is not None return self._properties @property @ensure_loaded def relations(self) -> Dict[str, RelationPropertyConfiguration]: - """Returns all property configurations of the database that are + """Gets all property configurations of the database that are relations. """ + assert self._properties is not None return { key: val for key, val in self._properties.items() @@ -125,14 +137,16 @@ async def create_page( ) -> NotionPage: """Creates a new page in the Database and updates the new page with the properties. - Status, Files or any of the advanced properties are not yet supported. Args: properties: Dictionary of property names and values. Value types will depend on the property type. Can be the raw value (e.g. string, float) or an object (e.g. SelectValue, NumberPropertyItem) - cover: URL of an image for the page cover. E.g. a gdrive url. + cover: URL of an image for the page cover. + + Returns: + A new page. """ validated_properties = {} diff --git a/python_notion_api/async_api/notion_page.py b/python_notion_api/async_api/notion_page.py index 0bf4686..817b59f 100644 --- a/python_notion_api/async_api/notion_page.py +++ b/python_notion_api/async_api/notion_page.py @@ -1,5 +1,5 @@ import json -from typing import Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from pydantic.v1 import BaseModel @@ -9,13 +9,16 @@ create_property_iterator, ) from python_notion_api.async_api.utils import ensure_loaded -from python_notion_api.models.objects import Block, Pagination +from python_notion_api.models.objects import Block, Database, Page, Pagination from python_notion_api.models.properties import PropertyItem from python_notion_api.models.values import PropertyValue, generate_value +if TYPE_CHECKING: + from python_notion_api.async_api.api import AsyncNotionAPI + class NotionPage: - """Wrapper for a notion page object. + """Wrapper for a Notion page object. Args: api: Instance of the NotionAPI. @@ -23,16 +26,22 @@ class NotionPage: """ class PatchRequest(BaseModel): - properties: Dict[str, PropertyValue] + properties: dict[str, PropertyValue] class AddBlocksRequest(BaseModel): - children: List[Block] + children: list[Block] # Map from property names to function names. # For use in subclasses - special_properties = {} + special_properties: dict[str, str] = {} - def __init__(self, api, page_id, obj=None, database=None): + def __init__( + self, + api: "AsyncNotionAPI", + page_id: str, + obj: Optional[Page] = None, + database: Optional[Database] = None, + ): self._api = api self._page_id = page_id self._object = obj @@ -47,27 +56,38 @@ async def reload(self): self.database = await self._api.get_database(parent_id) @ensure_loaded - def __getattr__(self, attr_key): + def __getattr__(self, attr_key: str): return getattr(self._object, attr_key) @property def page_id(self) -> str: + """Returns the page id.""" return self._page_id.replace("-", "") @property @ensure_loaded - def is_alive(self): + def is_alive(self) -> bool: + """Checks if the page is archived. + + Returns: + `True` if the page is not archived, False otherwise. + """ + assert self._object is not None return not self._object.archived async def archive(self): + """Archives the page""" await self._archive(True) async def unarchive(self): + """Unarchives the page""" await self._archive(False) async def _archive(self, archive_status=True) -> None: - """Wrapper for 'Archive page' action if archive_status is True, - or 'Restore page' action if archive_status is False. + """Changes archive status of the page. + + Args: + archive_status: Whether to archive or unarchive the page. """ await self._api._patch( endpoint=f"pages/{self._page_id}", @@ -78,11 +98,12 @@ async def _archive(self, archive_status=True) -> None: async def set( self, prop_key: str, value: Any, reload_page: bool = False ) -> None: - """Wrapper for 'Update page' action. + """Sets a single page property. Args: - prop_key: Name or id of the property to update - value: A new value of the property + prop_key: Name or id of the property to update. + value: A new value of the property. + reload_page: Whether to reload the page after updating the property. """ prop_name = self._get_prop_name(prop_key=prop_key) @@ -90,6 +111,8 @@ async def set( if prop_name is None: raise ValueError(f"Unknown property '{prop_name}'") + assert self._object is not None + prop_type = self._object.properties[prop_name]["type"] value = generate_value(prop_type, value) @@ -104,13 +127,14 @@ async def set( @ensure_loaded async def update( - self, properties: Dict[str, Any], reload_page: bool = False + self, properties: dict[str, Any], reload_page: bool = False ) -> None: - """Update page with a dictionary of new values. + """Updates the page with a dictionary of new values. Args: properties: A dictionary mapping property keys to new values. + reload_page: Whether to reload the page after updating the properties. """ values = {} for prop_key, value in properties.items(): @@ -119,6 +143,8 @@ async def update( if prop_name is None: raise ValueError(f"Unknown property '{prop_name}'") + assert self._object is not None + prop_type = self._object.properties[prop_name]["type"] value = generate_value(prop_type, value) @@ -136,8 +162,9 @@ async def update( @ensure_loaded async def get_properties( self, raw: bool = False - ) -> Dict[str, PropertyValue]: - """Returns all properties of the page.""" + ) -> dict[str, PropertyValue]: + """Gets all properties of the page.""" + assert self._object is not None return { prop_name: await self.get(prop_name, raw=raw) for prop_name in self._object.properties @@ -148,19 +175,21 @@ async def to_dict( self, include_rels: bool = True, rels_only=False, - properties: Optional[Union[str, List]] = None, - ) -> Dict[str, Union[str, List]]: - """Returns all properties of the page as simple values. + properties: Optional[dict] = None, + ) -> dict[str, Union[str, list]]: + """ "Returns all properties of the page as a dict of builtin type values. Args: include_rels: Include relations. rels_only: Return relations only. - properties: List of properties to return. If None, will - get values for all properties. + properties: List of properties to return. If `None`, will + get values for all properties. """ if properties is None: + assert self._object is not None properties = self._object.properties vals = {} + for prop_name in properties: prop = await self.get(prop_name, raw=True) @@ -177,14 +206,14 @@ async def to_dict( vals[prop_name] = value return vals - async def add_blocks(self, blocks: List[Block]) -> AsyncBlockIterator: - """Wrapper for add new blocks to an existing page. + async def add_blocks(self, blocks: list[Block]) -> AsyncBlockIterator: + """Adds new blocks to the page. Args: - blocks: List of Blocks to add + blocks: List of Blocks to add. Returns: - Iterator of blocks is returned. + Iterator of new blocks. """ request = NotionPage.AddBlocksRequest(children=blocks) @@ -198,8 +227,7 @@ async def add_blocks(self, blocks: List[Block]) -> AsyncBlockIterator: return AsyncBlockIterator(iter(new_blocks.results)) async def get_blocks(self) -> AsyncBlockIterator: - """ - Get an iterater of all blocks in the page + """Gets all blocks in the page. Returns: Iterator of blocks is returned. @@ -217,18 +245,19 @@ async def get( cache: bool = True, safety_off: bool = False, raw: bool = False, - ) -> Union[PropertyValue, AsyncPropertyItemIterator]: - """ + ) -> Union[PropertyValue, AsyncPropertyItemIterator, None]: + """Gets a single page property. + First checks if the property is 'special', if so, will call the special function to get that property value. If not, gets the property through the api. Args: prop_key: Name or id of the property to retrieve. - cache: Boolean to decide whether to return the info from the page - or query the API again. + cache: If `True` and the property has been retrieved before, will return a cached value. + Use `False` to force a new API call. safety_off: If `True` will use cached values of rollups and - formulas + formulas. """ if prop_key in self.special_properties: # For subclasses of NotionPage @@ -253,7 +282,7 @@ async def get( async def _direct_get( self, prop_key: str, cache: bool = True, safety_off: bool = False - ) -> Union[PropertyValue, AsyncPropertyItemIterator]: + ) -> Union[PropertyValue, AsyncPropertyItemIterator, None]: """Wrapper for 'Retrieve a page property item' action. Will return whatever is retrieved from the API, no special cases. @@ -270,6 +299,8 @@ async def _direct_get( if prop_name is None: raise ValueError(f"Invalid property key '{prop_key}'") + assert self._object is not None + prop = self._object.properties[prop_name] obj = PropertyItem.from_obj(prop) @@ -298,6 +329,8 @@ async def _direct_get( elif isinstance(ret, PropertyItem): return PropertyValue.from_property_item(ret) + else: + return None def _get_prop_name(self, prop_key: str) -> Optional[str]: """Gets propetry name from property key. @@ -308,6 +341,7 @@ def _get_prop_name(self, prop_key: str) -> Optional[str]: Returns: Property name or `None` if key is invalid. """ + assert self._object is not None _properties = self._object.properties prop_name = next( ( diff --git a/python_notion_api/async_api/tests/test_async_block.py b/python_notion_api/async_api/tests/test_async_block.py index 1bc44c9..220c1b4 100644 --- a/python_notion_api/async_api/tests/test_async_block.py +++ b/python_notion_api/async_api/tests/test_async_block.py @@ -17,7 +17,7 @@ async def block(self, async_api): await block.reload() return block - def test_async_block(block): + async def test_async_block(block): assert block is not None async def test_add_children(self, block): diff --git a/python_notion_api/async_api/tests/test_properties.py b/python_notion_api/async_api/tests/test_properties.py index 67e1058..67caac3 100644 --- a/python_notion_api/async_api/tests/test_properties.py +++ b/python_notion_api/async_api/tests/test_properties.py @@ -1,6 +1,6 @@ import asyncio import os -from datetime import datetime +from datetime import UTC, datetime from pytest import fixture, mark from pytest_asyncio import fixture as async_fixture @@ -16,7 +16,7 @@ from python_notion_api.models.sorts import Sort TEST_DB = "401076f6c7c04ae796bf3e4c847361e1" -TEST_TITLE = f"API Test {datetime.utcnow().isoformat()}" +TEST_TITLE = f"API Test {datetime.now(UTC).isoformat()}" TEST_TEXT = "Test text is boring" TEST_NUMBER = 12.5 TEST_SELECT = "foo" diff --git a/python_notion_api/models/common.py b/python_notion_api/models/common.py index 5241681..0535b04 100644 --- a/python_notion_api/models/common.py +++ b/python_notion_api/models/common.py @@ -1,11 +1,8 @@ -import os from datetime import date, datetime -from io import BytesIO from typing import Dict, List, Literal, Optional, Union from pydantic.v1 import BaseModel -from python_notion_api.gdrive import GDrive from python_notion_api.models.fields import idField, typeField @@ -23,38 +20,6 @@ class File(BaseModel): name: Optional[str] url: str - @classmethod - def from_file_path( - cls, file_path: str, parent_id: str, overwrite: bool = False - ): - gdrive = GDrive() - file = gdrive.add_media( - file=file_path, - parent_id=parent_id, - file_name=os.path.basename(file_path), - overwrite=overwrite, - ) - return cls(name=file.get("title"), url=file.get("alternateLink")) - - @classmethod - def from_stream( - cls, - stream: BytesIO, - parent_id: str, - file_name: str, - format: str, - overwrite: bool = False, - ): - gdrive = GDrive() - file = gdrive.add_media( - file=stream, - parent_id=parent_id, - file_name=file_name, - format=format, - overwrite=overwrite, - ) - return cls(name=file.get("title"), url=file.get("alternateLink")) - class ExternalFile(BaseModel): url: str diff --git a/python_notion_api/models/objects.py b/python_notion_api/models/objects.py index d10a61c..6bbb579 100644 --- a/python_notion_api/models/objects.py +++ b/python_notion_api/models/objects.py @@ -150,6 +150,7 @@ class Page(NotionObject): cover: Optional[Union[FileObject, Dict[str, Union[str, FileObject]]]] properties: Dict[str, Dict] parent: ParentObject + archived: bool class Block(NotionObject): diff --git a/python_notion_api/sync_api/__init__.py b/python_notion_api/sync_api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/python_notion_api/api.py b/python_notion_api/sync_api/api.py similarity index 75% rename from python_notion_api/api.py rename to python_notion_api/sync_api/api.py index 0075a67..1644dd9 100644 --- a/python_notion_api/api.py +++ b/python_notion_api/sync_api/api.py @@ -1,6 +1,8 @@ +from __future__ import annotations + import json from math import floor -from typing import Any, Dict, Generator, List, Literal, Optional, Type, Union +from typing import Any, Generator, Literal, Optional, Type, Union from loguru import logger from pydantic.v1 import BaseModel @@ -23,6 +25,7 @@ Block, Database, NotionObjectBase, + Page, Pagination, User, ) @@ -40,16 +43,22 @@ class NotionPage: """ class PatchRequest(BaseModel): - properties: Dict[str, PropertyValue] + properties: dict[str, PropertyValue] class AddBlocksRequest(BaseModel): - children: List[Block] + children: list[Block] # Map from property names to function names. # For use in subclasses - special_properties = {} + special_properties: dict[str, str] = {} - def __init__(self, api, page_id, obj=None, database=None): + def __init__( + self, + api: NotionAPI, + page_id: str, + obj: Optional[Page] = None, + database: Optional[NotionDatabase] = None, + ): self._api = api self._page_id = page_id self._object = obj @@ -58,7 +67,7 @@ def __init__(self, api, page_id, obj=None, database=None): if self._object is None: self.reload() - self._alive = None + self._alive: Optional[bool] = None if self._object is None: raise ValueError(f"Page {page_id} could not be found") @@ -67,17 +76,36 @@ def __init__(self, api, page_id, obj=None, database=None): parent_id = self.parent.database_id self.database = self._api.get_database(parent_id) - def __getattr__(self, attr_key): + def __getattr__(self, attr_key: str): return getattr(self._object, attr_key) + @property + def object(self) -> Page: + if self._object is None: + self.reload() + + assert self._object is not None + + return self._object + @property def page_id(self) -> str: + """Gets the page id. + + Returns: + Id of the page. + """ return self._page_id.replace("-", "") @property - def alive(self): + def alive(self) -> bool: + """Get the current archive status of the page. + Returns: + `True` if the page is not archived, `False` otherwise. + """ if self._alive is None: - self._alive = not self._object.archived + self._alive = not self.object.archived + return self._alive @alive.setter @@ -87,7 +115,7 @@ def alive(self, val: bool): self._alive = val def _get_prop_name(self, prop_key: str) -> Optional[str]: - """Gets propetry name from property key. + """Gets property name from property key. Args: prop_key: Either a property name or property id. @@ -95,7 +123,7 @@ def _get_prop_name(self, prop_key: str) -> Optional[str]: Returns: Property name or `None` if key is invalid. """ - _properties = self._object.properties + _properties = self.object.properties prop_name = next( ( key @@ -107,11 +135,11 @@ def _get_prop_name(self, prop_key: str) -> Optional[str]: return prop_name - def add_blocks(self, blocks: List[Block]) -> BlockIterator: - """Wrapper for add new blocks to an existing page. + def add_blocks(self, blocks: list[Block]) -> BlockIterator: + """Adds new blocks to an existing page. Args: - blocks: List of Blocks to add + blocks: list of Blocks to add Returns: Iterator of blocks is returned. @@ -125,14 +153,20 @@ def add_blocks(self, blocks: List[Block]) -> BlockIterator: new_blocks = self._api._patch( endpoint=f"blocks/{self.page_id}/children", data=data ) + + assert new_blocks is not None + return BlockIterator(iter(new_blocks.results)) - def get_blocks(self, page_limit: int = None) -> BlockIterator: - """ - Get an iterater of all blocks in the page + def get_blocks(self, page_limit: Optional[int] = None) -> BlockIterator: + """Gets all blocks in the page. + + Args: + page_limit: Limit the number of blocks to return. If `None`, will + return all blocks. Returns: - Iterator of blocks is returned. + Iterator of the page blocks. """ generator = self._api._get_iterate( @@ -145,19 +179,20 @@ def get( prop_key: str, cache: bool = True, safety_off: bool = False, - page_limit: int = None, - ) -> Union[PropertyValue, PropertyItemIterator]: - """ + page_limit: Optional[int] = None, + ) -> Union[PropertyValue, PropertyItemIterator, None]: + """Gets a single page property. + First checks if the property is 'special', if so, will call the special function to get that property value. If not, gets the property through the api. Args: prop_key: Name or id of the property to retrieve. - cache: Boolean to decide whether to return the info from the page - or query the API again. + cache: If `True` and the property has been retrieved before, will return a cached value. + Use `False` to force a new API call. safety_off: If `True` will use cached values of rollups and - formulas + formulas. """ if prop_key in self.special_properties: # For subclasses of NotionPage @@ -181,16 +216,16 @@ def _direct_get( prop_key: str, cache: bool = True, safety_off: bool = False, - page_limit: int = None, - ) -> Union[PropertyValue, PropertyItemIterator]: + page_limit: Optional[int] = None, + ) -> Union[PropertyValue, PropertyItemIterator, None]: """Wrapper for 'Retrieve a page property item' action. Will return whatever is retrieved from the API, no special cases. Args: prop_key: Name or id of the property to retrieve. - cache: Boolean to decide whether to return the info from the page - or query the API again. + cache: If `True` and the property has been retrieved before, will return a cached value. + Use `False` to force a new API call. safety_off: If `True` will use cached values of rollups and formulas """ @@ -199,7 +234,7 @@ def _direct_get( if prop_name is None: raise ValueError(f"Invalid property name {prop_name}") - prop = self._object.properties[prop_name] + prop = self.object.properties[prop_name] obj = PropertyItem.from_obj(prop) @@ -228,10 +263,16 @@ def _direct_get( elif isinstance(ret, PropertyItem): return PropertyValue.from_property_item(ret) + else: + return None - def _archive(self, archive_status=True) -> None: - """Wrapper for 'Archive page' action if archive_status is True, + def _archive(self, archive_status: bool = True) -> None: + """Wrapper for 'Archive page' action. + If archive_status is True, or 'Restore page' action if archive_status is False. + + Args: + archive_status: `True` to archive the page, `False` to restore it. """ self._api._patch( endpoint=f"pages/{self._page_id}", @@ -251,7 +292,7 @@ def set(self, prop_key: str, value: Any) -> None: if prop_name is None: raise ValueError(f"Unknown property '{prop_name}'") - prop_type = self._object.properties[prop_name]["type"] + prop_type = self.object.properties[prop_name]["type"] value = generate_value(prop_type, value) request = NotionPage.PatchRequest(properties={prop_name: value}) @@ -260,7 +301,7 @@ def set(self, prop_key: str, value: Any) -> None: self._api._patch(endpoint=f"pages/{self._page_id}", data=data) - def update(self, properties: Dict[str, Any]) -> None: + def update(self, properties: dict[str, Any]) -> None: """Update page with a dictionary of new values. Args: @@ -274,7 +315,7 @@ def update(self, properties: Dict[str, Any]) -> None: if prop_name is None: raise ValueError(f"Unknown property '{prop_name}'") - prop_type = self._object.properties[prop_name]["type"] + prop_type = self.object.properties[prop_name]["type"] value = generate_value(prop_type, value) values[prop_name] = value @@ -290,33 +331,34 @@ def reload(self): self._object = self._api._get(endpoint=f"pages/{self._page_id}") @property - def properties(self) -> Dict[str, PropertyValue]: + def properties(self) -> dict[str, PropertyValue]: """Returns all properties of the page.""" return { prop_name: self.get(prop_name) - for prop_name in self._object.properties + for prop_name in self.object.properties } def to_dict( self, include_rels: bool = True, rels_only=False, - properties: Optional[Union[str, List]] = None, - ) -> Dict[str, Union[str, List]]: - """Returns all properties of the page as simple values. + properties: Optional[Union[str, list]] = None, + ) -> dict[str, Union[str, list]]: + """Returns all properties of the page as a dict of builtin type values. Args: include_rels: Include relations. rels_only: Return relations only. - properties: List of properties to return. If None, will - get values for all properties. + properties: List of properties to return. If `None`, will + get values for all properties. """ if properties is None: - properties = self._object.properties + properties = self.object.properties vals = {} for prop_name in properties: prop = self.get(prop_name) - + if prop is None: + continue if prop.property_type == "relation": if include_rels: vals[prop_name] = prop.value @@ -327,37 +369,47 @@ def to_dict( class NotionBlock: - """wrapper for notion block object + """Wrapper for a Notion block object. Args: api: Instance of the NotionAPI. block_id: Id of the block. """ - def __init__(self, api, block_id): + def __init__(self, api: NotionAPI, block_id: str): self._api = api self._block_id = block_id @property def block_id(self) -> str: - return self._block_id.replace("-", "") + """Gets block id. - def get_child_blocks(self, page_limit: int = None) -> BlockIterator: - """ - Get an iterater of all blocks in the block Returns: + Id of the block. + """ + return self._block_id.replace("-", "") + + def get_child_blocks( + self, page_limit: Optional[int] = None + ) -> BlockIterator: + """Gets all child blocks in the block. + Returns: + An iterater of all blocks in the block """ generator = self._api._get_iterate( endpoint=f"blocks/{self._block_id}/children", page_limit=page_limit ) return BlockIterator(generator) - def add_child_block(self, content: List[Block]) -> BlockIterator: - """Wrapper for add new blocks to an existing page. + def add_child_block(self, content: list[Block]) -> BlockIterator: + """Adds new blocks as children. Args: content: Content of the new block. + + Returns: + An iterator of the newly created blocks. """ data = { "children": [ @@ -368,21 +420,30 @@ def add_child_block(self, content: List[Block]) -> BlockIterator: new_blocks = self._api._patch( endpoint=f"blocks/{self.block_id}/children", data=json.dumps(data) ) + + assert new_blocks is not None + return BlockIterator(iter(new_blocks.results)) def set(self, block: Block) -> Block: - """ - Updates the content of a Block. The entire content is replaced. + """Updates the content of a Block. + + The entire content is replaced. + Args: block: Block with the new values. Returns: - + New block with the updated content. """ data = block.dict(by_alias=True, exclude_unset=True) + new_block = self._api._patch( endpoint=f"blocks/{self.block_id}", data=json.dumps(data) ) + + assert new_block is not None + return new_block @@ -396,13 +457,13 @@ class NotionDatabase: class CreatePageRequest(BaseModel): parent: ParentObject - properties: Dict[str, PropertyValue] + properties: dict[str, PropertyValue] cover: Optional[FileObject] - def __init__(self, api, database_id): + def __init__(self, api: NotionAPI, database_id: str): self._api = api self._database_id = database_id - self._object = self._api._get( + self._object: Optional[Database] = self._api._get( endpoint=f"databases/{self._database_id}", cast_cls=Database ) @@ -417,27 +478,57 @@ def __init__(self, api, database_id): @property def database_id(self) -> str: + """Gets database id. + + Returns: + Id of the database. + """ return self._database_id.replace("-", "") + @property + def title(self) -> str: + """Gets title of the database.""" + return self._title + + @property + def properties(self) -> dict[str, NotionPropertyConfiguration]: + """Gets all property configurations of the database.""" + return self._properties + + @property + def relations(self) -> dict[str, RelationPropertyConfiguration]: + """Gets all property configurations of the database that are + relations. + """ + return { + key: val + for key, val in self._properties.items() + if isinstance(val, RelationPropertyConfiguration) + } + def query( self, filters: Optional[FilterItem] = None, - sorts: Optional[List[Sort]] = None, + sorts: Optional[list[Sort]] = None, cast_cls=NotionPage, - page_limit: int = None, + page_limit: Optional[int] = None, ) -> Generator[NotionPage, None, None]: - """A wrapper for 'Query a database' action. + """Queries the database. - Retrieves all pages belonging to the database. + Retrieves all pages belonging to the database that satisfy the given filters + in the order specified by the sorts. Args: - filters: - sorts: + filters: Filters to apply to the query. + sorts: Sorts to apply to the query. cast_cls: A subclass of a NotionPage. Allows custom - property retrieval + property retrieval. + Returns: + Generator of NotionPage objects. """ - data = {} + data: dict[str, Any] = {} + if filters is not None: filters = filters.dict(by_alias=True, exclude_unset=True) data["filter"] = filters @@ -457,63 +548,23 @@ def query( api=self._api, database=self, page_id=item.page_id, obj=item ) - @property - def title(self) -> str: - """Returns a title of the database.""" - return self._title - - @property - def properties(self) -> Dict[str, NotionPropertyConfiguration]: - """Returns all property configurations of the database.""" - return self._properties - - @property - def relations(self) -> Dict[str, RelationPropertyConfiguration]: - """Returns all property configurations of the database that are - relations. - """ - return { - key: val - for key, val in self._properties.items() - if isinstance(val, RelationPropertyConfiguration) - } - - def get_property(self, prop_config: Any, prop_value: str) -> Any: - """Create property for a given property configuration.""" - - if isinstance(prop_value, (PropertyItem, PropertyItemIterator)): - type_ = prop_value.property_type - - if type_ != prop_config.config_type: - # Have a mismatch between the property type and the - # given item - raise TypeError( - f"Item {prop_value.__class__} given as " - f"the value for property " - f"{prop_config.__class__}" - ) - new_prop = prop_value - - else: - new_prop = prop_config.create_property(prop_value) - - return new_prop - def create_page( self, - properties: Dict[str, Any] = {}, + properties: dict[str, Any] = {}, cover_url: Optional[str] = None, ) -> NotionPage: """Creates a new page in the Database and updates the new page with the properties. - Status, Files or any of the advanced properties are not yet supported. Args: properties: Dictionary of property names and values. Value types will depend on the property type. Can be the raw value (e.g. string, float) or an object (e.g. SelectValue, NumberPropertyItem) - cover: URL of an image for the page cover. E.g. a gdrive url. + cover: URL of an image for the page cover. + + Returns: + A new page. """ validated_properties = {} @@ -542,6 +593,8 @@ def create_page( "pages", data=data, retry_strategy=self._api.post_retry_strategy ) + assert new_page is not None + return NotionPage( api=self._api, page_id=new_page.page_id, @@ -556,10 +609,14 @@ class NotionAPI: Args: access_token: Notion access token api_version: Version of the notion API + page_limit: Maximum number of results per request. """ def __init__( - self, access_token: str, api_version="2022-06-28", page_limit=20 + self, + access_token: str, + api_version: str = "2022-06-28", + page_limit: int = 20, ): self._access_token = access_token self._base_url = "https://api.notion.com/v1/" @@ -585,7 +642,7 @@ def _request( self, request_type: Literal["get", "post", "patch"], endpoint: str = "", - params: Dict[str, Any] = {}, + params: dict[str, Any] = {}, data: Optional[str] = None, cast_cls: Type[NotionObjectBase] = NotionObject, retry_strategy: Retry = None, @@ -602,6 +659,9 @@ def _request( data: Data to pass to the request. cast_cls: A NotionObjectBase class to auto-cast the response of the request to. + + Returns: + Retrieved NotionObject or `None` if the request failed. """ url = self._base_url + endpoint @@ -629,6 +689,7 @@ def _request( f"Request to {url} failed:" f"\n{response.status}\n{decoded_data}" ) + return None def _post( self, @@ -647,6 +708,9 @@ def _post( data: Data to pass to the request. cast_cls: A NotionObjectBase class to auto-cast the response of the request to. + + Returns: + Retrieved NotionObject or `None` if the request failed. """ return self._request( request_type="post", @@ -659,7 +723,7 @@ def _post( def _get( self, endpoint: str, - params: Dict[str, str] = {}, + params: dict[str, str] = {}, cast_cls: Type[NotionObjectBase] = NotionObject, ) -> Optional[NotionObject]: """Wrapper for post requests. @@ -672,6 +736,9 @@ def _get( params: Params to pass to the request. cast_cls: A NotionObjectBase class to auto-cast the response of the request to. + + Returns: + Retrieved NotionObject or `None` if the request failed. """ return self._request( request_type="get", @@ -683,10 +750,10 @@ def _get( def _patch( self, endpoint: str, - params: Dict[str, str] = {}, + params: dict[str, str] = {}, data: Optional[str] = None, cast_cls=NotionObject, - ) -> NotionObject: + ) -> Optional[NotionObject]: """Wrapper for patch requests. Should not be called directly, for internal use only. @@ -698,6 +765,9 @@ def _patch( data: Data to pass to the request. cast_cls: A NotionObjectBase class to auto-cast the response of the request to. + + Returns: + Retrieved NotionObject or `None` if the request failed. """ return self._request( request_type="patch", @@ -710,18 +780,21 @@ def _patch( def _post_iterate( self, endpoint: str, - data: Dict[str, str] = {}, + data: dict[str, str] = {}, retry_strategy: Retry = None, - page_limit: int = None, + page_limit: Optional[int] = None, ) -> Generator[PropertyItem, None, None]: """Wrapper for post requests where expected return type is Pagination. Should not be called directly, for internal use only. Args: - endpoint: Endpoint of the request. Will be prepened with the - notion API base url. + endpoint: Endpoint of the request. Will be prefixed with the + Notion API base url. data: Data to pass to the request. + + Returns: + Generator yielding PropertyItem objects. """ has_more = True cursor = None @@ -741,6 +814,8 @@ def _post_iterate( retry_strategy=retry_strategy, ) + assert response is not None + for item in response.results: yield item @@ -757,17 +832,20 @@ def _post_iterate( def _get_iterate( self, endpoint: str, - params: Dict[str, str] = {}, - page_limit: int = None, - ) -> Generator[PropertyItem, None, None]: + params: dict[str, str] = {}, + page_limit: Optional[int] = None, + ) -> Generator[tuple[Any, Any], None, None]: """Wrapper for get requests where expected return type is Pagination. Should not be called directly, for internal use only. Args: - endpoint: Endpoint of the request. Will be prepened with the + endpoint: Endpoint of the request. Will be prefixed with the notion API base url. params: Params to pass to the request. + + Returns: + Generator yielding PropertyItem objects. """ has_more = True cursor = None @@ -783,6 +861,8 @@ def _get_iterate( try: response = self._get(endpoint=endpoint, params=params) + assert response is not None + if hasattr(response, "property_item"): # Required for rollups property_item = response.property_item @@ -804,30 +884,46 @@ def _get_iterate( params.update({"page_size": page_size}) def get_database(self, database_id: str) -> NotionDatabase: - """Wrapper for 'Retrieve a database' action. + """Gets Notion database. Args: database_id: Id of the database to fetch. + + Returns: + A Notion database with the given id. """ return NotionDatabase(self, database_id) - def get_page(self, page_id, page_cast=NotionPage) -> NotionPage: - """Wrapper for 'Retrieve a dpage' action. + def get_page( + self, page_id: str, page_cast: Type[NotionPage] = NotionPage + ) -> NotionPage: + """Gets Notion page. Args: page_id: Id of the database to fetch. page_cast: A subclass of a NotionPage. Allows custom - property retrieval + property retrieval. + + Returns: + A Notion page with the given id casted to the provided class. """ return page_cast(self, page_id) def get_block(self, block_id) -> NotionBlock: - """Wrapper for 'Retrieve a block' action. + """Gets Notion block. Args: block_id: Id of the block to fetch. + + Returns: + A Notion block with the given id. """ return NotionBlock(self, block_id) def me(self) -> User: - return self._get("users/me") + user = self._get("users/me") + + assert user is not None + assert isinstance(user, User) + + return user diff --git a/python_notion_api/test_nonasync.py b/python_notion_api/sync_api/test_sync.py similarity index 99% rename from python_notion_api/test_nonasync.py rename to python_notion_api/sync_api/test_sync.py index 5fdc32b..32e9696 100644 --- a/python_notion_api/test_nonasync.py +++ b/python_notion_api/sync_api/test_sync.py @@ -1,5 +1,5 @@ import os -from datetime import datetime +from datetime import UTC, datetime from pytest import fixture, mark @@ -15,7 +15,7 @@ TEST_DB = "401076f6c7c04ae796bf3e4c847361e1" -TEST_TITLE = f"API Test {datetime.utcnow().isoformat()}" +TEST_TITLE = f"API Test {datetime.now(UTC).isoformat()}" TEST_TEXT = "Test text is boring" TEST_NUMBER = 12.5 TEST_SELECT = "foo" diff --git a/readme.md b/readme.md deleted file mode 100644 index 2cbb5b8..0000000 --- a/readme.md +++ /dev/null @@ -1,327 +0,0 @@ -# A Python implementation of the Notion API - -Object oriented API wrapper that uses Pydantic to convert Notion objects to Python objects and viceversa. - -Current alternatives are: - -- Client library for the official API, at the moment it doesn't resolve the objects to classes: -https://github.com/ramnes/notion-sdk-py -- Unofficial Python 3 client for Notion.so API v3, it doesn't use the official Notion API. -https://github.com/jamalex/notion-py - -## Quick start - -```python -from python_notion_api import NotionAPI - -api = NotionAPI( - access_token='secret_token' -) -``` - -## Notion Database - -### Retrieve a database - -```python -from python_notion_api import NotionAPI - -api = NotionAPI( - access_token='secret_token' -) - -database = api.get_database(database_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') -``` - -Returns a `NotionDatabase` object. - -### Query - -```python -from python_notion_api import NotionAPI - -api = NotionAPI( - access_token='secret_token' -) - -database = api.get_database(database_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') - -for page in database.query(): - ... -``` - -Allows you to iterate over all pages in the database. - -### Filters - -You can use filter classes in `python_notion_api.models.filters` to create property filters and pass them to the query. - -```python -from python_notion_api.models.filters import SelectFilter - -res = database.query( - filters=SelectFilter(property="Property Name", equals="xxx") -) -``` - -Timestamp, 'and' and 'or' filters are supported: - -```python -from python_notion_api.models.filters import SelectFilter, NumberFilter, CheckboxFilter -from python_notion_api.models.filters import and_filter, or_filter - -res = database.query( - filters=or_filter([ - SelectFilter(property="Select", equals="xxx"), - and_filter([ - NumberFilter(property="Number", greater_than=10), - CheckboxFilter(property="Checkbox", equals=True) - ]) - ]) -) -``` - -You can read more on filters [here](https://developers.notion.com/reference/post-database-query-filter) - -### Sorts - -You can use `python_notion_api.models.sorts.Sort` class to create sorts and pass them to the query. - -```python -from python_notion_api.models.sorts import Sort - -res = database.query( - sorts=[ - Sort(property="Title"), - Sort(property="Date", descending=True) - ] -) -``` - -## Pages - -### Retrieve a page - -```python -page = api.get_page(page_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') -``` - -Will return a `NotionPage` object. - -### Create a page - -```python -from python_notion_api import NotionAPI - -api = NotionAPI( - access_token='secret_token' -) - -database = api.get_database(database_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') - -database.create_page( - properties={ - "Title": "New page" - } -) -``` - -The properties of the new page are set using a dictionary with the column name as the key and the new property as the value. The value can be set with either the raw value (as a string, a number, or a datetime) or with a class from `python_notion_api.models.common` for storing the object (e.g. `DateObject`, `SelectObject`, `RichTextObject`, `TextObject`). -E.g. - -```python -database = api.get_database(database_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') - -database.create_page(properties={ - 'Value': 234, - 'Select_property': 'select1', - 'Checkbox_property': True, - 'Relation_property': ['xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'] -}) -``` - -### Update page - -Currently only supported for inividual properties. - -You can create a page in a database and set the properties of the new page. Formuas are not supported. - -```python -page = api.get_page(page_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') - -page.set('Property name', 'new value') -``` - -### Archive page - -Pages can be archived as follows: -``` -page = api.get_page(page_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') - -page.alive = False -``` - -Archived pages can be restored for as long as they are in the bin. -``` -page.alive = True -``` - -### Retrieve a page property item - -When getting a property through `page.get` or `page.properties` the return type will -be either `PropertyValue` or `PropertyItemIterator` (for properties that can have multple values, i.e. relations, title, rich_text and people) - -Each property type is wrapped into it's own class defined in `api.models.properties`. To get a human-readable 'simple' value that represents the propery, you can use `PropertyValue.value` attribute. To get a list of all property items values from `PropertyItemIterator` you can use -`PropertyItemIterator.value`. For rich_text and title property types `value` will return a concatenaded string. - -```python -page.get('Property name').value -page.get('Relation property').value - -for value in page.get('Relation property'): - print(value) -``` - -### Retrieve page blocks - -Each block type has its own class in `models.blocks`. - -```python -blocks = page.get_blocks() -for block in blocks: - print(block.block_type) -``` - -### Custom page properties -In some cases, we may not want the values directly returned by the API. -In particular, the values of rollups and formulas may be incorrect when retrieved through the API, but we can calculate the correct value by recreating the formulas and rollups in Python code. - -To use custom page properties, create a subclass of NotionPage. Define a function to get each custom property (these must return a `PropertyValue`) and define the mapping from Notion property names to the function names. - -```python -from python_notion_api.api import NotionPage -from python_notion_api.models import RichTextObject -from python_notion_api.models.values import RichTextPropertyValue - -class MyPage(NotionPage): - # Use this dictionary to map the property names to functions - # Being explicit about the mapping so we don't restrict the property names in Notion - special_properties = { - 'Value': 'special_value' - } - - - def special_value(self) -> RichTextPropertyItem: - - # self.get('Value') would just loop back here, - # so use self._direct_get to retrieve the value returned by the API - x = self._direct_get('Value').value - - # Then do whatever processing is required - # Should return a PropertyValue to be compatible with downstream functions - if x == 1: - return RichTextPropertyValue(rich_text=RichTextObject( - plain_text='One', type='text')) - else: - return RichTextPropertyValue(rich_text=RichTextObject( - plain_text='Number unknown', type='text')) - -``` - -This page class can be passed when querying a database or getting a page. - -```python -page = api.get_page(page_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', - cast_cls=MyPage) - - -for page in database.query(cast_cls=MyPage, filters=NumberFilter(property='Value', equals=1)): - print('Custom processing:', page.get('Value').value) - print('Raw value:', page._direct_get('Value').value) - break - -## output -# Custom processing: One -# Raw value: 1.0 - -``` - -## Blocks - -### Retrieve a block - -```python -block = api.get_block(block_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') -``` - -### Get and add block children - -```python -p = ParagraphBlock( - rich_text=[RichTextObject.from_str("Some text to add through API")] -) -block.add_child_block(content=[p]) - - -child_blocks = block.get_child_blocks() -``` - -### Update a block - -All values must be updated at once. - -```python -from python_notion_api.models.blocks import ParagraphBlock, ParagraphBlockValue, RichTextObject - -# Make new block with updated values -new_block = ParagraphBlock.from_obj({'object': 'block', - 'type': 'paragraph', - 'paragraph': {'rich_text': [ - {'plain_text': 'Text here not used for some reason', 'type': 'text', - 'text': {'content': 'This is the text that will be added', 'link': None}}]} -}) - -block = api.get_block(block_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') -block.set(new_block) -``` - -## Problems with rollups and formulas -These can only reference values 1 level deep. For any deeper reference, for example A references B which references C, the returned value will likely be incorrect. -There is no error or warning when this occurs, so be careful! - -A subclass of NotionPage can be used to fully recreate rollups and formulas (see above). - -## File upload -The official Notion API doesn't yet support uploading files. As an alternative, it is possible to upload files to GDrive and use the -link in a column of type File. - -To configure it, set the env variable `CLIENT_CONFIG_FILE` to the location of a json configuration file with the OAuth config file and the env variable `CREDENTIAlS` to the location of a json configuration file with the OAuth credentials. - -To run the tests, set the env variable `PARENT_ID` to the folder id of where to run the tests. - -Further information on how to set up your google drive authentication can be found [here](https://support.google.com/cloud/answer/6158849?hl=en&ref_topic=3473162). - -Example: - -```python -from python_notion_api import NotionAPI -from python_notion_api.models.common import File - -api = NotionAPI(access_token='secret_token') -page = api.get_page(page_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') -file = File.from_file_path( - file=file_path, - parent_id="xxxxxxxxxxxxxxxxxxxxxxxxxxxx", - file_name="My File on GDrive", - format="pdf" -) -page.set('Files Property',[file]) -``` - -The above example is specific to Files & Media properties. To upload a file to a URL property use `page.set("URL Property", file)`. - -Instead of a file path, a BytesIO object can be uploaded using the `File.from_stream` method. - -## Requirements - -This library requires `Python >= 3.7`. For full list of requirements, see the `pyproject.toml` file. From ee1c85d76a5cb1a2d4dda31402df38f9c7549d32 Mon Sep 17 00:00:00 2001 From: mdelmans <2719461+mdelmans@users.noreply.github.com> Date: Fri, 31 Jan 2025 14:04:54 +0000 Subject: [PATCH 2/3] Bump version to 1.0.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c32019c..9819d0d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "python-notion-api" -version = "0.12.0" +version = "1.0.0" description = "Python wrapper for the official Notion API" authors = [ "Mihails Delmans ", From b52681668b13f0763e8e92ae379804a315fbdf4d Mon Sep 17 00:00:00 2001 From: Mihails Delmans Date: Fri, 31 Jan 2025 14:09:15 +0000 Subject: [PATCH 3/3] Add a changelog note --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97b5f69..a7d26b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. ## Unreleased +## [1.0.0] - 2025/01/31 + +- First public release + ## [0.10.0] - 2024/12/20 ### Added