diff --git a/ex_app/lib/main.py b/ex_app/lib/main.py index 7068693..85a9625 100644 --- a/ex_app/lib/main.py +++ b/ex_app/lib/main.py @@ -1,5 +1,6 @@ # SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors # SPDX-License-Identifier: AGPL-3.0-or-later +import concurrent.futures import os import traceback from contextlib import asynccontextmanager @@ -7,7 +8,7 @@ from threading import Event import asyncio -import httpx +from niquests import RequestException import json from fastapi import FastAPI from nc_py_api import NextcloudApp, NextcloudException @@ -39,6 +40,9 @@ fast_app = FastAPI(lifespan=http_mcp_app.lifespan) app_enabled = Event() +TRIGGER = Event() +IDLE_POLLING_INTERVAL = 5 +IDLE_POLLING_INTERVAL_WITH_TRIGGER = 5 * 60 LOCALE_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "locale") current_translator = ContextVar("current_translator") @@ -52,9 +56,14 @@ async def lifespan(app: FastAPI): async with exapp_lifespan(app): async with http_mcp_app.lifespan(app): yield + @asynccontextmanager async def exapp_lifespan(app: FastAPI): - set_handlers(app, enabled_handler) + set_handlers( + app, + enabled_handler, + trigger_handler=trigger_handler, + ) start_bg_task() nc = NextcloudApp() if nc.enabled_state: @@ -135,21 +144,16 @@ async def background_thread_task(): try: response = nc.providers.task_processing.next_task([provider.id], [provider.task_type]) if not response or not 'task' in response: - await asyncio.sleep(2) + await wait_for_task() continue - except (NextcloudException, httpx.RequestError, JSONDecodeError) as e: + except (NextcloudException, RequestException, JSONDecodeError) as e: tb_str = ''.join(traceback.format_exception(e)) log(nc, LogLvl.WARNING, "Error fetching the next task " + tb_str) - await asyncio.sleep(5) + await wait_for_task(5) continue - except ( - httpx.RemoteProtocolError, - httpx.ReadError, - httpx.LocalProtocolError, - httpx.PoolTimeout, - ) as e: + except RequestException as e: log(nc, LogLvl.DEBUG, "Ignored error during task polling") - await asyncio.sleep(2) + await wait_for_task(2) continue task = response["task"] @@ -157,7 +161,6 @@ async def background_thread_task(): log(nc, LogLvl.DEBUG, str(task)) log(nc, LogLvl.INFO, str({'input': task['input']['input'], 'confirmation': task['input']['confirmation'], 'conversation_token': ''})) asyncio.create_task(handle_task(task, nc)) - await asyncio.sleep(5) async def handle_task(task, nc: NextcloudApp): @@ -171,7 +174,7 @@ async def handle_task(task, nc: NextcloudApp): log(nc, LogLvl.ERROR, "Error: " + tb_str) try: nc.providers.task_processing.report_result(task["id"], error_message=str(e)) - except (NextcloudException, httpx.RequestError) as net_err: + except (NextcloudException, RequestException) as net_err: tb_str = ''.join(traceback.format_exception(net_err)) log(nc, LogLvl.WARNING, "Network error in reporting the error: " + tb_str) return @@ -180,7 +183,7 @@ async def handle_task(task, nc: NextcloudApp): task["id"], output, ) - except (NextcloudException, httpx.RequestError, JSONDecodeError) as e: + except (NextcloudException, RequestException, JSONDecodeError) as e: tb_str = ''.join(traceback.format_exception(e)) log(nc, LogLvl.ERROR, "Network error trying to report the task result: " + tb_str) @@ -190,6 +193,29 @@ def start_bg_task(): loop = asyncio.get_event_loop() loop.create_task(background_thread_task()) +# Trigger event is available starting with nextcloud v33 +def trigger_handler(providerId: str): + global TRIGGER + TRIGGER.set() + +# Waits for interval seconds or IDLE_POLLING_INTERVAL seconds +# but can return earlier when TRIGGER event is received from nextcloud +# if the trigger event is received, IDLE_POLLING_INTERVAL is set to IDLE_POLLING_INTERVAL_WITH_TRIGGER +async def wait_for_task(interval = None): + global TRIGGER + global IDLE_POLLING_INTERVAL + global IDLE_POLLING_INTERVAL_WITH_TRIGGER + if interval is None: + interval = IDLE_POLLING_INTERVAL + # Call TRIGGER.wait() in a separate thread + loop = asyncio.get_running_loop() + with concurrent.futures.ThreadPoolExecutor() as pool: + was_event = await loop.run_in_executor(pool, TRIGGER.wait, interval) + if was_event: + IDLE_POLLING_INTERVAL = IDLE_POLLING_INTERVAL_WITH_TRIGGER + TRIGGER.clear() + + APP.mount("/mcp", http_mcp_app) if __name__ == "__main__": diff --git a/poetry.lock b/poetry.lock index 2e204ba..e798404 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1050,6 +1050,128 @@ files = [ {file = "isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6"}, ] +[[package]] +name = "jh2" +version = "5.0.10" +description = "HTTP/2 State-Machine based protocol implementation" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jh2-5.0.10-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5a6885a315bdd24d822873d5e581eac90ab25589fb48d34f822352710139439a"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa031e2aba9bd4cf6e1c0514764781b907557484cf163f02f1ad65a5932faf2"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c816cfe85ae5d4fb26efc2713aedf9dfe1bb826544fe76cfd35ce7a60e099e8f"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b28c70b440f32bb8f14c3adaa11c094ea109fc1d2540434a8fc6e08cf4cf1aef"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:df79bdf69d33ec0093c63abb633a6cbdb4b905a5ea3dda2514c4adf7e5713d20"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c0b7cda4b50692e2f259382fc2a374cd9118a96f8d369ef04fe088124f84fc"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ffeb6a352ce6c89d77bd185972185f20e3c35b3be4d0253963b6d8b6444c4aa"}, + {file = "jh2-5.0.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:271720035a1293031c807e24a27235a2426c51de8755db872eb1adad310213cd"}, + {file = "jh2-5.0.10-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:7b28fc12106654573881f19b1a78e41cf37657ae76efa84e7da518faced56f0f"}, + {file = "jh2-5.0.10-cp313-cp313t-musllinux_1_1_armv7l.whl", hash = "sha256:976134b61b7fdf290a7cc70e7676c2605af84dd83e2a1e78c170928a0119278b"}, + {file = "jh2-5.0.10-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:75581b5acbcc344e070f811938919165999bf7221406845306e0ab860605cdbf"}, + {file = "jh2-5.0.10-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:206e4a92c687f6928b3846d7666ebf2602c16556feb154f16f1d399219046f5d"}, + {file = "jh2-5.0.10-cp313-cp313t-win32.whl", hash = "sha256:fca31a36827205c76c959be94e8bad7aaa1be06ea8ed904b20b5d96a7829ce45"}, + {file = "jh2-5.0.10-cp313-cp313t-win_amd64.whl", hash = "sha256:4bbefb69efaa365f3193d0db096d34e9e0da5885b0bb1341ab7593852e811f69"}, + {file = "jh2-5.0.10-cp313-cp313t-win_arm64.whl", hash = "sha256:9752ea045ab3da4544104201a800d3f7ce7c63b529db5a9715c587cbfedca9b7"}, + {file = "jh2-5.0.10-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e340215fa14b914096aa2e0960798603939f6bc85e9467057121c3aae4eadda1"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6124124ea77ba77b22cb1f66554eddd61b14a2ce0bb2bc2032d91c3a2b9cbfed"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:db95f18b629f5dc914cf962725b7dfcb9673c4bb06e50d654426615c3d8d88d2"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c16af652777ce4edc0627d037ac5195b921665b2e13e3547782116ce5a62cd5a"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0190daf5b65fbf52641ba761d1b895b74abcdb671ca1fb6cd138dd49050cfa8"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:578394d8a9409d540b45138cbecb9d611830ccce6c7f81157c96f2d8d54abd5a"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:108143494bba0b1bf5f8cd205f9c659667235e788d3e3f0f454ad8e52f2c8056"}, + {file = "jh2-5.0.10-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85631d5b4d0e1eb9f9daacc43e6394efd8c65eb39c7a7e8458f0c3894108003c"}, + {file = "jh2-5.0.10-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a9aec4760a6545a654f503d709456c1d8afb63b0ee876a1e11090b75f2fd7488"}, + {file = "jh2-5.0.10-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:028227ec9e44fb62e073b71ca391cb1f932c5c7da3981ccafff852df81d2b7f9"}, + {file = "jh2-5.0.10-cp314-cp314t-musllinux_1_1_i686.whl", hash = "sha256:2c2ed55a32735b91a0683c7b995433e39325fdf42c6ffc8e87d56606ac6235bb"}, + {file = "jh2-5.0.10-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:0075415d2a2dfdf3a8ddeaa51cf8d92fb3d7c90fa09cb9752c79ee54e960b9a8"}, + {file = "jh2-5.0.10-cp314-cp314t-win32.whl", hash = "sha256:a8404e17a3d90c215e67be8a5ccb679eb9cf9bfeeec732521487b65ffaeac4a6"}, + {file = "jh2-5.0.10-cp314-cp314t-win_amd64.whl", hash = "sha256:5d664450ab1435f6a78c64e076c7ea22ffe779bafceb9c42600cce95ff20f927"}, + {file = "jh2-5.0.10-cp314-cp314t-win_arm64.whl", hash = "sha256:ad6d18301f2162996d679be6759c6a120325b58a196231220b7a809e034280ed"}, + {file = "jh2-5.0.10-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7c2918379cce3352b6d40717ed3d5b06da6e6c17253317302cab2f0dbff62a5d"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd229bbe7dfdf499394fa8453c92e2ea19de47c80afc1efaec7f85704be97717"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:36e9b5fb9cd8872846d031fae442df1b5c83f4dd29ef1dd1c3f70afd86fe8fc3"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:217af8256551627b9253737a866c05ce5f6c49f171c099260b76915239cfb13a"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e20e3d747c4022d890865fb25f2e8b3ff6cbacf7556f29155dcfbff592d96202"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ea77b8b6b7defb67cbec69340e653495b36881671e9f0ac395cdd6b27144000"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fd6b5b2d4d38e089ac982ea341b36f2cb827c0765217e6b8f3e58a409290e6f"}, + {file = "jh2-5.0.10-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c3d38121a1ddc2ffc769f09aaaa4c7e67f89e25c578921326b515402176e7cf"}, + {file = "jh2-5.0.10-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:33e4ac058acf8f3f89ea1375deb33ac61713d60fb9e3333bd079f3602425739c"}, + {file = "jh2-5.0.10-cp37-abi3-musllinux_1_1_armv7l.whl", hash = "sha256:86571f18274d7a5a7e6406e156a9f27fa1a72203a176921ea234c4a11fe0e105"}, + {file = "jh2-5.0.10-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:62f0842b5f8da463b6a548a8c2a7e69fa709888d03c997486390097341e88e09"}, + {file = "jh2-5.0.10-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f3b6401f089a65b87f2e5beffe81666a1c2ab1d90e8406cd49c756d66881bedc"}, + {file = "jh2-5.0.10-cp37-abi3-win32.whl", hash = "sha256:7b79771bd366a11a36041f49cabc7876047cf1b99cee89df1333e6890f66d973"}, + {file = "jh2-5.0.10-cp37-abi3-win_amd64.whl", hash = "sha256:9c730e3f40f22bd4ff0ab63ee41d70ee22aa1cc54e5cb295ae0ac3b0a016af3e"}, + {file = "jh2-5.0.10-cp37-abi3-win_arm64.whl", hash = "sha256:d18eccec757374afca8de31bf012a888fb82903d5803e84f2e6f0b707478ced6"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:73d06462ca9434e857812c1c0aa68089e3ecd779460fdbaaf7e08870b7316ea3"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:576ff6cc4a6324984e24ee8736a6ba8c9de01bdd09a5b2198f47d541f5d0ce4e"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:210ef1f9760487b620c7925640381d66553876711876f9f57e148a0e0013e942"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:70fee86a017e55df64f6e16e5b88a6aebe97b7361a9df0cd315101fba3ef0b0f"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5fd951c4b34276e02f68b87c38d9d7c342cfe9b9ff63207e15ee24578aa32cd"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bcfb10a568d112ab80f4650505e6e0df6e10df5337e376e36dce4f4b5043708"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:419dbbbd63dd9b801f392d9f1ddbfca9deb173236acb3a2eb608dce9ec25dd52"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:072d10b46445a4017b3fa4599b13b32f309da39b7bb7f5857e38cced285744d0"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2bfa77969b5a238726514c58cd3b91fa084ddfd8f28a12e0511713c842279290"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:43aa6e45393001e0aa59d9ee6eff12d315af99bb7404ad19c60a09ead7ac1f17"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-musllinux_1_1_i686.whl", hash = "sha256:15f04f32e8877f10db811f8f11fa0e07dc20e9672a4d1677c98e15e0ef26ccae"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e15ac3c98258a89cb6f7533b052d393e6bff64691e11af9a06c68b271b512873"}, + {file = "jh2-5.0.10-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9c19aee609d8c957c0484b79a357f12421c35ae6eca88c540b75e1c6b1d23d20"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7c7fa4c48eeb72d6fd0b4c52982454c6adbb5b9058b391f12597edc3dd9d612e"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0f0bac7286af3ba0556c5865322cdbfbbf77f43aa313be721523618d6d82216"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c409cc630faf7c06b8da5391043409a5f7758cdcd5de520999855d2df6d59d7"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2e8d3803e2cb2caca82e68eafd16db9d239888cbed7fd79ffa209898cfa89eda"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bba536afdab619299f30473de68144714bf8fc82dc452b77333cf66a7ab78c77"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7807ade662d56dcf5d67d92940d97a4d277be90735e085ce4719f0242c1af82b"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d9bf0eb30d40f5a82c816c52c6007b0acd317d418ee8e1d8d32b7d2d5314519"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bf61215aa09bda4ac20e726f6dce701991fa81f043de7355899efd363444534"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4b9d6c16b466f0dce3b9c9bcab743ca1c1e36443d0db450c353652210a89a946"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d752f99644c2d34a27863bdb8ac79f39938f83331f2f31d5e9c19bbf58a84ca2"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-musllinux_1_1_i686.whl", hash = "sha256:be98c17f5a2a9c0b11393c7c208f47a599664311d18aac135841d1674b15c209"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f082f417c0219a355e209dbfde71a9a57d3c9a6e67bec91a1128cc0e25999e75"}, + {file = "jh2-5.0.10-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:576037676654def515aab8926da7f2ca069d6356bb55fde1a8f2e6f4c4f291c6"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:ee5d703b3575105cb38af7b02aec947f96d821a05fbc744df688dddf6d268ca5"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa7f8d92802bab794237ce427db77bddeddbec4b0884a66e2c4c17b821027dbf"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c0917edb7cfb7590029e164e2e2cc80f5649bfe015866e1134314ef172d013b"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13076e3733d6e79b5901f365ad1a5a9f8a3d00df964f6243d0aba01cb8aca702"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fb4fd3bb4d8228b45121850ecd1bcdf77c7b0344274d453e41d9eebef2aad98"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b638945ce00bf3136333b74477ae49d79f5bee4c19c2e2cfa184e1e59efd8b9a"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8f3247a903490457909e55729b5c3ee7988e81fe59a5d098c74873227f7940"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a10631f3ca1e87e4d096225fa931462a4ac6ba7acf5c794c16b4bbfe04a55431"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:48eef636741b864b87292a701c39a3206ff421eeb9d4bcc1ec43ec0f6672d430"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:160f7c0d38a27cea7fcab25e3714a601f7548b01fc07b7c9376534a2a4bc6537"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-musllinux_1_1_i686.whl", hash = "sha256:969737c56f4d86788c9f2b0b3bacd2c2f3f053089ce8c72c134b4874b963fcc3"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:703435735f11e2f0f084993c9d615c1f4ec0e2d837a9171bb85fdd123c1bd073"}, + {file = "jh2-5.0.10-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:15c2f1a28412a5d09a591f5d16dc61ce73652273a65138e422f7b73d0fec66f2"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:b02a45bb91e512434692d3d1875f741504ccdff5a357c6b1cba60ca9e2f7b554"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaca7694bc97a8de53c83bd27670c6de55429f5762971b36e0ae7870ac822664"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:edd74d87825127a434a999a736824ed865a5de412ea79278609e9ccbea4ee359"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ea44cb6a54a476f3a530ad2888e5d513acf8d011849b7e81ad2fdb409ef052c9"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3907f6eb004d874164df337a3c60d6aa86128799f421eddf4e390322bc197d2a"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57ebb51149e5df88b0a897a1e5ab7d118010eee10042b7c9a199b0825eb74ab8"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86674770831ebb3af021b96b2b100f82f08c5f750af4f608e203e53299be9fa7"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:701a7daaf9860acaa924cc02f2d601fd882c68bcef6ba51c484debd8a02be3d6"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e0b4c9d826aa6325cb97172483caf89df3d45cc72af449f5e2644d17889a0f64"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ae3e241f786c1e8eb3a15c801577fbf73adb508fa6b8b2be9032b9d18df80e4f"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-musllinux_1_1_i686.whl", hash = "sha256:a4b07d8a1e2d7e590032557363bba7c483fee6551a7dcf0a7808c49c67fd36ac"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c7e9c47f64166e9da15b5ff9a35b9688df0ddada844712add7fc377baaaf6869"}, + {file = "jh2-5.0.10-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5cf37b56053b233be1dae21378e6a83d294aab12c1c01a309b8787db6261a166"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:b11c5e9fc241c95f256c44ec42d6c996b14983828e1a9a35d7a5fc92df5755ba"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aae0990ef5f96658986c92cc02147af0e47c63221db4157a930023284f5f2fea"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1f116a796e7d867e8cd9a5d5257e4522fa3f4056676d89fc1ae11d5df26f477"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e99c20d5195447c43cd125145f52cc48fb6ad823081ec2960261bf56b14c71b5"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d10a08e464d8768dc4335401bf736cac0d54dfd92bd5250a97b1775166f3ce96"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7438ee9dad35c3a8e2631aff38f981bc727f2f04978473434989d0bda9ceca64"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07d4aa1750f11e790fcf51c989d12a84022e484eea030e63d512c40a6489ac3a"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a73a163cb3edc08b862f2f9db0bb5a83f730d2d51226aa0414e46ce882fa3dc3"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e5d6c72aa833abb709ac0df17404ae3a78b200dc1ae1aa980e86844c29c85b4e"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a0a49b001776e40fd1d615f868f4cdb6f773040c865ef114a558762624810fb7"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-musllinux_1_1_i686.whl", hash = "sha256:79c79cb3ff62ab3c9d4c9d9b1d90860c0fd822e5c9cb865da8745ebeb999b19c"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:47019664b2c7f58c8241d056c48f669d19817a508f6749f1c5c851c4b4229601"}, + {file = "jh2-5.0.10-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fedbc11530954314c428be9882c1f8358ef5836d1fa4ac4b72e1aab30f0adeb2"}, + {file = "jh2-5.0.10-py3-none-any.whl", hash = "sha256:1808c0e5d355c60485bb282b34c6aa3f15069b2634eb44779fb9f3bda0256ac0"}, + {file = "jh2-5.0.10.tar.gz", hash = "sha256:2c737a47bee50dc727f7a766185e110befdceba5efb1c4fa240b1e4399291487"}, +] + [[package]] name = "jsonpatch" version = "1.33" @@ -1830,23 +1952,22 @@ files = [ [[package]] name = "nc-py-api" -version = "0.20.0" +version = "0.22.0" description = "Nextcloud Python Framework" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "nc_py_api-0.20.0-py3-none-any.whl", hash = "sha256:267d7fef46e249486b9842ff9a3428913d78333eb8672fb4ba4dd8945e57b3b0"}, - {file = "nc_py_api-0.20.0.tar.gz", hash = "sha256:8a1bf58415260c1bbdd9f5de3375b23e3a0d4c012916c469ecb7831c89fad117"}, + {file = "nc_py_api-0.22.0-py3-none-any.whl", hash = "sha256:a4c797dd075984678bccf662a3dbfa9295c0829c4a3695ae0299465a32f3e25c"}, + {file = "nc_py_api-0.22.0.tar.gz", hash = "sha256:68a86894dec264858e772e0304f47cb8ad6bbfa8356736e067bfaf55ca2cea6b"}, ] [package.dependencies] caldav = {version = "1.3.6", optional = true, markers = "extra == \"calendar\""} fastapi = ">=0.109.2" -httpx = ">=0.25.2" +niquests = ">=3,<4" pydantic = ">=2.1.1" python-dotenv = ">=1" -truststore = "0.10" xmltodict = ">=0.13" [package.extras] @@ -1857,6 +1978,33 @@ dev = ["caldav (==1.3.6)", "coverage", "huggingface-hub", "matplotlib", "numpy", dev-min = ["coverage", "huggingface-hub", "pillow", "pre-commit", "pylint", "pytest", "pytest-asyncio"] docs = ["autodoc-pydantic (>=2.0.1)", "caldav (==1.3.6)", "sphinx (<8)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-rtd-theme (<3)", "uvicorn[standard] (>=0.23.2)"] +[[package]] +name = "niquests" +version = "3.15.2" +description = "Niquests is a simple, yet elegant, HTTP library. It is a drop-in replacement for Requests, which is under feature freeze." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "niquests-3.15.2-py3-none-any.whl", hash = "sha256:2446e3602ba1418434822f5c1fcf8b8d1b52a3c296d2808a1ab7de4cf1312d99"}, + {file = "niquests-3.15.2.tar.gz", hash = "sha256:8076b1d2ff957022d52b2216ca7df92d92ce426d19a7ed63c7fd4fd630ab6c2b"}, +] + +[package.dependencies] +charset-normalizer = ">=2,<4" +urllib3-future = ">=2.13.903,<3" +wassima = ">=1.0.1,<3" + +[package.extras] +brotli = ["urllib3-future[brotli]"] +full = ["orjson (>=3,<4)", "urllib3-future[brotli,socks,ws,zstd]"] +http3 = ["urllib3-future[qh3]"] +ocsp = ["urllib3-future[qh3]"] +socks = ["urllib3-future[socks]"] +speedups = ["orjson (>=3,<4)", "urllib3-future[brotli,zstd]"] +ws = ["urllib3-future[ws]"] +zstd = ["urllib3-future[zstd]"] + [[package]] name = "numpy" version = "2.2.5" @@ -2648,6 +2796,129 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "qh3" +version = "1.5.5" +description = "A lightway and fast implementation of QUIC and HTTP/3" +optional = false +python-versions = ">=3.7" +groups = ["main"] +markers = "(platform_system == \"Darwin\" or platform_system == \"Windows\" or platform_system == \"Linux\") and (platform_machine == \"x86_64\" or platform_machine == \"s390x\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"ppc64\" or platform_machine == \"AMD64\" or platform_machine == \"aarch64\" or platform_machine == \"arm64\" or platform_machine == \"ARM64\" or platform_machine == \"x86\" or platform_machine == \"i686\" or platform_machine == \"riscv64\" or platform_machine == \"riscv64gc\") and (platform_python_implementation == \"CPython\" or platform_python_implementation == \"PyPy\" and python_version < \"3.12\")" +files = [ + {file = "qh3-1.5.5-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:67dc1332ed84ef81a0f0bce79a464bdc43f4d695bd701dcb275287241d4d6cc5"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3649b42a9e045e6a76e24b9cbeb2c4fff8cb7aca5d899bb9da40f04eec1e5179"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acb18c87ca0b022be3ee40ade88a772233c119032c688805ddbb67996748203d"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c065497e0c66574009db9849dc6f42c1851adc34c459db0b777be6d341a33b6"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e7eac59f6fc79db530d9032c91b009de63a11237ba2d7b71d846d260722016d0"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:566976894044cdde5bb67b73003673c71980429e8a7218d39b048a899b296dc3"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c47d04ac94aeff1813d9e579786737bec214526f1592553719e9952b3aee626f"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4757bccfa60b17896b0641d4c9a9f91307f699d4bf06e50fb661cec8da49421c"}, + {file = "qh3-1.5.5-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:0612f911dc6e1f8bdb198b41f71ce8f581cdfa08e801b8a37095866fbca26139"}, + {file = "qh3-1.5.5-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:8cfb34037a4cee69784504f9fb93b8b76f74bb25e1bbe8ff8d17bfc2a67b07ff"}, + {file = "qh3-1.5.5-cp313-cp313t-musllinux_1_1_armv7l.whl", hash = "sha256:004b4ce49daa2f4c22ac89658732a10e5ecf652f221ebf5ce879d954a03c5b82"}, + {file = "qh3-1.5.5-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:bc571a41a8e8c71708a90005eea3eafa31cd9cf38bfd20eae54d0a097ed038f0"}, + {file = "qh3-1.5.5-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:7cf106b2da4755f19e6e289710714fc254cf926c6b481346b9ab6fa1bde62c5a"}, + {file = "qh3-1.5.5-cp313-cp313t-win32.whl", hash = "sha256:18a53167a439301ed080d08c46d136777ecfea7f38cce9efe7fb44799cd1d14b"}, + {file = "qh3-1.5.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b2c2c82ca77f269c9a78fbc50affb831cfbc7f683a76092562331b9bc529cdb9"}, + {file = "qh3-1.5.5-cp313-cp313t-win_arm64.whl", hash = "sha256:91f34b49658cd59aa92956b4fe1a81b9368cad32a64f86cb2c90f8f8774bb9f2"}, + {file = "qh3-1.5.5-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:426e064d29da0f729c0d2b2f678c32d95ac61baa5b2b2760b8c2a8f465d8755a"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c2f6d20163637c52ce3acdc6d26b0db563d64dd0881d7c7a2c06cbfbf20cab"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac5542c58a86110a9fa18540546055d08da631e9d6a67bad278f9d51e04b3122"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93e7c91391d3e237902f544cf47fb83c168f6b4c1c3f84c20ab580a93d2994ac"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:84f4fcc3d01f0d147439eed98a38db776d11563ef8a42095f2a7ac272be9a79a"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c06ff7c40da5459ac5aed99e690a5682689f19671ae87e42b67300132801db24"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b556dba61d31f4715e04aae9c0d89233871ec9f3a0ce1ca7368cc6cb6b92b50"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a77dd6e8c2fd6c00f8d2500768f45edddeebe71c0ee3063f7fdcdfcd57bdaa1"}, + {file = "qh3-1.5.5-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:b8cb6a493eb0197970e19aeba52de21002221e8b33daba42e5fee47b50db50d2"}, + {file = "qh3-1.5.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:757be08c725e79f8c35a3896d7e13297be7c80105112d06981aca460b4ff8da5"}, + {file = "qh3-1.5.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:65184645f6d1834c5fdc2130c905a93fc962fe00d301233534c90fe95e8e3489"}, + {file = "qh3-1.5.5-cp314-cp314t-musllinux_1_1_i686.whl", hash = "sha256:d2221852355688b7fce5b330d2b76f987352aab5e29594b3084235a8a1621bef"}, + {file = "qh3-1.5.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:e85d6653b001122ace5e5ddd5ce6d689e30d933be844d06b5a3fc97adb093f1c"}, + {file = "qh3-1.5.5-cp314-cp314t-win32.whl", hash = "sha256:ac90715f666d0447a531f865808a519b953c71d29d82f31d47b50b3da18fdfba"}, + {file = "qh3-1.5.5-cp314-cp314t-win_amd64.whl", hash = "sha256:bf8c2f47b4fa0261e607c4fac9c45c629b53f3b256a4871eede84be39f8deab5"}, + {file = "qh3-1.5.5-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8f81d0914dd012ff4d24298e49dd0db98d26341d3ed18f6beb0cbbad9bfc8d07"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04075474a1e41547826c73dbe4fce416ba24a936e3acdb6652a157b7a9cf3acb"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f960db0737ffda735e6d90eae2401d72e83cfae6b35e46ca3812550c1609a05"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:684bcb3529072f66f13b1e79badde27380d3eb79e90cda91475d3194201e2487"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:34c979d79ee7d8a7d976b35c77f4dd87a4ccbf87fd826cb0620daa4677a88e50"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10ec96556dc5555e676071e74a2d6a49ddedbc4c2c6ca086e097d016d9c192a5"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b8c715e8a97601362c898f6044da808e637eadcabf3c5bc38da76a6a614095"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5430339f13e2fc320e77c10cb34103a3f2d4260638446fa9cbdbfe0401b261ad"}, + {file = "qh3-1.5.5-cp37-abi3-manylinux_2_39_riscv64.whl", hash = "sha256:0e0597da5e167d5e59dff37b6b8874fe7822ebb2572d05e5cab9470f90d1a9a8"}, + {file = "qh3-1.5.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:1187a2b862c05eb3fe251f5af9bf9b8d079179f70f411875f25292ade39390a8"}, + {file = "qh3-1.5.5-cp37-abi3-musllinux_1_1_armv7l.whl", hash = "sha256:4f6b48c8b481104c355b4d840723ce10f2cdf2000d57523223489e598c75d247"}, + {file = "qh3-1.5.5-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:9bd537ec4189fff640f68a82b377351b26fd46183215881b26a326d89859a54d"}, + {file = "qh3-1.5.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:eff41202b40b7b525d24fb956ba6be4f8ad6a56e4c4dca7ca5235c26957152b0"}, + {file = "qh3-1.5.5-cp37-abi3-win32.whl", hash = "sha256:3ee29d8e987cbdd89f7c8f4975161c571d9b0807aebad1b131e1efbbaef0018f"}, + {file = "qh3-1.5.5-cp37-abi3-win_amd64.whl", hash = "sha256:71e6891e194707aad4ab8e530b961d08ddba297bd452162abd43f62dede3fdc3"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0687b37c1df944221f269a59810679f4ba8cd6546567311400c1d36c558c0644"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4563006eb92a51d95fec13d2a82ebac1f21a2d0fc0eca49ad009c10865a16f0c"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:552d63db8d795106dc03c7ed7c2599824ff751145f1c1f9f9c7ebffc1975c72e"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe86b7dede79627ccc1327defaf4317bc06e5d9fd1ba5b0099a6143304da4dac"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a0934ad5080008deec8982478f086389449ce117f2da8b3cc604762dc16b8f3"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb624ee36c623d0eec95a20856622dea02c4c3dc818e99cc40cc1a8f2621e3f3"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:202744dcee224bc974de639bd9199759eb2026e17095acec46c3fb1205c066e1"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e269ed32ccf384b6e26ecc85817e9046068a3db905a22d4ab76b3a50a7ecd31a"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:259c2b894f65aeef006cedefd1b4a8cab732d8651c03c32bc2526dcf93412b55"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8150d4bbcf83aab8ef31fb744a8c11c4fc0a7043ba8a81a2b14569ded2235295"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-musllinux_1_1_i686.whl", hash = "sha256:58b38ee3986e257a0daa64584e2dac0023d960dbd8870ab629c1a82e82e77d2f"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dd83dd9b2c503467014ec0997e46a20a68ff9a7485568a5e8429fe3e2f188c3b"}, + {file = "qh3-1.5.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8b4929f76e8b40723e17731ec8186dd02c522341622047f29f68a606ab35a9c3"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:bec53fb2d82df451b70e88d47ee8010a069ff4553a11b99951797db4b3bb37ea"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3104f1c2ca255e1c2ea5b8ed590380d4ef18e312bcd367b2e86697635d0dc855"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:620cbc25ad4601a33b6be7b3d00b94a5543b844b3879be27c1fde19aea44bbba"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874ad1ff2b32eac52f5abfbc8d28bd51794f52f90271404bb4255f30ccf4354e"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8563db39e0d0bb644753ea5d94fcd3ec231a81ec5a5e86767c0e473991bd07c4"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73adc47fe93ce85eea731d5a64c004b3f25775b5c7bd58c485d9f3221c58847f"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35d7f5f3ec553a75f392bdb5572bd0d3546d0477258cbfb1bc8fc3105a94493e"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bafb6811b4b202d595253ded655c1b52ac22e6cf6743b6ef045a40396f4c0191"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:70e916053c3a569dfde9d1e9604dffb0ebb506b8f18e94421625b3fa9bc064d1"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:9cc3364d1b8b3b31368ab7ed748bad80535c089b633903cd18a929a773094886"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-musllinux_1_1_i686.whl", hash = "sha256:fe56052f177d13597a61e8124a9205c2f976b861d40d3ccb520e51545b4b7191"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d16815d8936525f239b01470eb3bd9e2a8d7ce9a702dc9018a979d060476f591"}, + {file = "qh3-1.5.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e5ed1449db926eaa2433290b86458f6564b648dc968db78827de218020fdec41"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2b1f89fc8f27f67c9bea3209dfb71bfeb89ba5da5c10f9616df9f74127c75ed5"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:871121cafeb4c0cdbc346b930ce48a1e4212dc9bbacdc589c24ec4d22178b450"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebccabbee034e0fe72542e98248a0719f00f3d85656c2b47c09f84634085b693"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bd2a3449d690b21a7232f70ced7aec70bc35493ddbb25f8603cddef93ab4790"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9ad9cb9e174ae06ed2aee6c39e1cdd6b85a06533ae26b11ef9e2903558d103a1"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc6386a63d3c0d4edfc2bcb8b784bf58b96676e45fc887aded03a1ed6a3a3834"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28b036bcc7d978871cbdb3548ae4bc9647630eeb5bdc650612e7c16e29a6e4e0"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d9b1ee6a8d99d7e7cfb0193bf40b829e89e99d3482e5f51d5b8fd2a0b46f859"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bb4a62b80e57ef5b2d1caefeb18865c5b84539f35c6ba0bb438acf82d827f211"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:77272c37f52fc4f0c385f1b2a5a8c40baa56d7b6a1186a3d06f34f6838a8c0ea"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-musllinux_1_1_i686.whl", hash = "sha256:77c5e87a781920e585d1fcf3de369a6bac4ee312aa1275ea853aeb26732e5080"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0a48abdee69c082d16f056c7fd1cf73bbc24b855601707f8e19535f76a43a6bb"}, + {file = "qh3-1.5.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:fd7703e20b1c1ccd4e0ad322557995ec353eb662fcee82e3c6de8efb512ce00d"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77b9fcd5c25883292e6a63e2d184b884cc1ede52aeb0f7a702aad0be9c83f3a6"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aba2f35c9d0beaf6670e859b0a53772d646cbd7652d8a16bf06842045536ba2f"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f2a26522ed5e59f86d126ce1b2ea986bccd550806f95b590b8d23e8beb98d348"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7feb3926362ca0a457f021121f91d8a1df0b231c80b4c77bc4caa52e42cedf1e"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7305b0fdf9319ccf3fa13bd6d3cef3d8b6175b5383d6bee5063953a453cfd764"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a249797629e7659c21e934a1b74a40ebcbbc661cc5ab0d4609d7de859587adbc"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4a60b9d119f6a27cdfb2b9f4753a40fc41ad7815b8e55b4bf18ac75b29669b70"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af717b03813c408c72ba78af3639837e04b171078ae4c993241ed100e683b470"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5efcb9049fc70d27c17719392faee9ec90d91fc43af4ae36ad99cf5ca7f67802"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:b9c385bb419e8d2995e8ba1a61a971bdbd7666e21221985864f764d934705167"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-musllinux_1_1_i686.whl", hash = "sha256:1ab6eaf20a2260d3583951ae77d769cbfb8b4b3d7ae62c37fb3f1385a09f47fd"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3eb624c8bfc0c7c065b4af5cb128e207f5f171acb989057832b24d3f17516e74"}, + {file = "qh3-1.5.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7c16b9c35f30452d291a52bc8baa499188d1e25b9d687383054afaf0d296f667"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:11504605bf1fb54a946a047e52bc14fd595f11e16acb564b05ce4366aca97831"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bea21ca004cc451592bb2b90b457aeb1d04eac979f6d1df6acd14390cca1c7c"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5cb9c186f7c3c36fb593dbd54a2915c969f7df69c39a0612fe880aa0979f05dd"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2ceeb019a59ed605bf97be7f0fdc1bd4b59db0efa39942918516f99ecdf99d3"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d30605428da2fa3e95b998cd43b04af9699b16ff0aa9700e477d2ebd6f175c9"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:981e0b580882a6d3ceaefb3e79960113292e4a571acd295a016338410fecd61f"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49fc558edd07c9b982715c4b80c022d1a75cc59bddb86358b7f845b6ec2c81e1"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a7135b34bc4843e6d46a129133fa356356c4749a712bb2bed5cba90d27d11ab"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee56589dda6e3a2aa75a69f42b8ad8e2f902dff988ef48f936b9f30bfaacf88c"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:727322e050f02cdf5e5e13a28af28389375fcbb3bc72ddd96618d656bcee47be"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-musllinux_1_1_i686.whl", hash = "sha256:23a5379fb14a760cdac2f01fd2a27a6b87239cce257d2ee475821cd04661e2a9"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a828d20a31b318367256059dbf58d54d82a708f90f4722f04a7b8e8e30a9b952"}, + {file = "qh3-1.5.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c7c0f969f928ec6ecf27d2b7f7abf5c2308bafa77a8552516288fcfe1b9bdb75"}, + {file = "qh3-1.5.5.tar.gz", hash = "sha256:fd9dd4bc435914aaaad63d5212f35d4e3f887de2814b6f9f93b94984deb52179"}, +] + [[package]] name = "recurring-ical-events" version = "3.7.0" @@ -3118,18 +3389,6 @@ files = [ doc = ["reno", "sphinx"] test = ["pytest", "tornado (>=4.5)", "typeguard"] -[[package]] -name = "truststore" -version = "0.10.0" -description = "Verify certificates using native system trust stores" -optional = false -python-versions = ">=3.10" -groups = ["main"] -files = [ - {file = "truststore-0.10.0-py3-none-any.whl", hash = "sha256:b3798548e421ffe2ca2a6217cca49e7a17baf40b72d86a5505dc7d701e77d15b"}, - {file = "truststore-0.10.0.tar.gz", hash = "sha256:5da347c665714fdfbd46f738c823fe9f0d8775e41ac5fb94f325749091187896"}, -] - [[package]] name = "types-python-dateutil" version = "2.9.0.20241206" @@ -3233,6 +3492,30 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "urllib3-future" +version = "2.14.905" +description = "urllib3.future is a powerful HTTP 1.1, 2, and 3 client with both sync and async interfaces" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "urllib3_future-2.14.905-py3-none-any.whl", hash = "sha256:c9ad3a3860f2f2548e4ef297a152e5b66a9e19774c0557bfa55ae5d270868025"}, + {file = "urllib3_future-2.14.905.tar.gz", hash = "sha256:3693ad0fcaa97001dfee760ed45c44bf8234b178189ebcb6892a9f9a29b29834"}, +] + +[package.dependencies] +h11 = ">=0.11.0,<1.0.0" +jh2 = ">=5.0.3,<6.0.0" +qh3 = {version = ">=1.5.4,<2.0.0", markers = "(platform_python_implementation != \"CPython\" or python_full_version > \"3.7.10\") and (platform_system == \"Darwin\" or platform_system == \"Windows\" or platform_system == \"Linux\") and (platform_machine == \"x86_64\" or platform_machine == \"s390x\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"ppc64\" or platform_machine == \"AMD64\" or platform_machine == \"aarch64\" or platform_machine == \"arm64\" or platform_machine == \"ARM64\" or platform_machine == \"x86\" or platform_machine == \"i686\" or platform_machine == \"riscv64\" or platform_machine == \"riscv64gc\") and (platform_python_implementation == \"CPython\" or platform_python_implementation == \"PyPy\" and python_version < \"3.12\")"} + +[package.extras] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +qh3 = ["qh3 (>=1.5.4,<2.0.0)"] +socks = ["python-socks (>=2.0,<=2.6.1)"] +ws = ["wsproto (>=1.2,<2)"] +zstd = ["zstandard (>=0.18.0) ; python_version < \"3.14\""] + [[package]] name = "uvicorn" version = "0.34.2" @@ -3270,6 +3553,18 @@ python-dateutil = {version = ">=2.7.0", markers = "python_version >= \"3.10\""} pytz = "*" six = "*" +[[package]] +name = "wassima" +version = "2.0.2" +description = "Access your OS root certificates with utmost ease" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "wassima-2.0.2-py3-none-any.whl", hash = "sha256:54396882c0a210e404bb11740d47d66a35a6d68dde073a381c57d6e112cc245a"}, + {file = "wassima-2.0.2.tar.gz", hash = "sha256:45de4ddf2a99e9277cc33616b3b34eee7dfcaaf5059b6e8c19ca62a6c5a65fbf"}, +] + [[package]] name = "werkzeug" version = "3.1.1" @@ -3700,4 +3995,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "b8fe9ff57553a669bc05d0e5a665c23a904fe737aa06288115363b40b061bf7a" +content-hash = "8cfd53498f3952d52d8170828a497dfc2021b97fe3ab11240032a225f74dd3ad" diff --git a/pyproject.toml b/pyproject.toml index e477514..073c2c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" -nc-py-api = {extras = ["calendar"], version = "^0.20.0"} +nc-py-api = {extras = ["calendar"], version = "^0.22.0"} langgraph = "^0.4.1" langchain = "^0.3.25" ics = "^0.7.2"