From 48327483565a1a6bae7b00b8dd69e6512db7895f Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Wed, 31 Dec 2025 17:17:47 +0000 Subject: [PATCH 01/14] Added in stubs for the registry --- .../.orca/orca_python/registry/__init__.pyi | 0 .../.orca/orca_python/registry/algorithms.pyi | 78 ++++ .../orca_python/registry/metadata_fields.pyi | 5 + .../.orca/orca_python/registry/processors.pyi | 7 + .../orca_python/registry/window_types.pyi | 6 + examples/simpletrigger/.orca/registry.json | 160 +++++++ examples/simpletrigger/README.md | 0 examples/simpletrigger/__init__.py | 0 examples/simpletrigger/poetry.lock | 418 ++++++++++++++++++ examples/simpletrigger/pyproject.toml | 17 + examples/simpletrigger/pyrightconfig.json | 3 + .../simpletrigger/simpletrigger/__init__.py | 21 + .../simpletrigger/simpletrigger/algorithms.py | 0 .../{ => simpletrigger}/processor.py | 15 +- .../{ => simpletrigger}/window.py | 0 orca_python/registry/__init__.py | 0 orca_python/registry/algorithms.py | 1 + orca_python/registry/metadata_fields.py | 0 orca_python/registry/processors.py | 0 orca_python/registry/window_types.py | 0 20 files changed, 730 insertions(+), 1 deletion(-) create mode 100644 examples/simpletrigger/.orca/orca_python/registry/__init__.pyi create mode 100644 examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi create mode 100644 examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi create mode 100644 examples/simpletrigger/.orca/orca_python/registry/processors.pyi create mode 100644 examples/simpletrigger/.orca/orca_python/registry/window_types.pyi create mode 100644 examples/simpletrigger/.orca/registry.json create mode 100644 examples/simpletrigger/README.md create mode 100644 examples/simpletrigger/__init__.py create mode 100644 examples/simpletrigger/poetry.lock create mode 100644 examples/simpletrigger/pyproject.toml create mode 100644 examples/simpletrigger/pyrightconfig.json create mode 100644 examples/simpletrigger/simpletrigger/__init__.py create mode 100644 examples/simpletrigger/simpletrigger/algorithms.py rename examples/simpletrigger/{ => simpletrigger}/processor.py (79%) rename examples/simpletrigger/{ => simpletrigger}/window.py (100%) create mode 100644 orca_python/registry/__init__.py create mode 100644 orca_python/registry/algorithms.py create mode 100644 orca_python/registry/metadata_fields.py create mode 100644 orca_python/registry/processors.py create mode 100644 orca_python/registry/window_types.py diff --git a/examples/simpletrigger/.orca/orca_python/registry/__init__.pyi b/examples/simpletrigger/.orca/orca_python/registry/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi b/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi new file mode 100644 index 0000000..c176387 --- /dev/null +++ b/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi @@ -0,0 +1,78 @@ +from orca_python import ( + ExecutionParams, + StructResult, + ValueResult, +) + +def summary_stat_8052ca3c(params: ExecutionParams) -> ValueResult: + """ + Produces a collection of summary statistics + """ + ... + +def shaft_freq_estimator_5438ff55(params: ExecutionParams) -> StructResult: + """ + Estimates the shaft frequency + """ + ... + +def mean_signal_detector_3b2b43f1(params: ExecutionParams) -> ValueResult: + """ + Calculates the mean signal + """ + ... + +def resonance_detector_a1de5edf(params: ExecutionParams) -> StructResult: + """ + Detects if there is excess resonance + """ + ... + +def behaviour_deviation_detector_b80ff2f4(params: ExecutionParams) -> StructResult: + """ + Detects deviation in the behaviour of the asset + """ + ... + +def super_duper_magic_machine_7a63dd46(params: ExecutionParams) -> ValueResult: + """ + Does something amazing + """ + ... + +def summary_stat_c36b4cf9(params: ExecutionParams) -> ValueResult: + """ + Produces a collection of summary statistics + """ + ... + +def shaft_freq_estimator_27649598(params: ExecutionParams) -> StructResult: + """ + Estimates the shaft frequency + """ + ... + +def mean_signal_detector_4877293c(params: ExecutionParams) -> ValueResult: + """ + Calculates the mean signal + """ + ... + +def resonance_detector_21a21058(params: ExecutionParams) -> StructResult: + """ + Detects if there is excess resonance + """ + ... + +def behaviour_deviation_detector_b354e12a(params: ExecutionParams) -> StructResult: + """ + Detects deviation in the behaviour of the asset + """ + ... + +def super_duper_magic_machine_640697b5(params: ExecutionParams) -> ValueResult: + """ + Does something amazing + """ + ... + diff --git a/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi b/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi new file mode 100644 index 0000000..663b49e --- /dev/null +++ b/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi @@ -0,0 +1,5 @@ +from orca_python import MetadataField + +# --- Global Metadata Fields --- +asset_id_stub: MetadataField + diff --git a/examples/simpletrigger/.orca/orca_python/registry/processors.pyi b/examples/simpletrigger/.orca/orca_python/registry/processors.pyi new file mode 100644 index 0000000..d1b7093 --- /dev/null +++ b/examples/simpletrigger/.orca/orca_python/registry/processors.pyi @@ -0,0 +1,7 @@ +from orca_python import Processor + +# --- Processor: ml --- +proc_ml: Processor +# --- Processor: mlv2 --- +proc_mlv2: Processor + diff --git a/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi b/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi new file mode 100644 index 0000000..2228f2e --- /dev/null +++ b/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi @@ -0,0 +1,6 @@ +from orca_python import WindowType + +# --- Global Window Types --- +daily_1_1_1_stub: WindowType +daily_1_0_0_stub: WindowType + diff --git a/examples/simpletrigger/.orca/registry.json b/examples/simpletrigger/.orca/registry.json new file mode 100644 index 0000000..9044048 --- /dev/null +++ b/examples/simpletrigger/.orca/registry.json @@ -0,0 +1,160 @@ +{ + "processors": [ + { + "name": "ml", + "runtime": "py3.*", + "supported_algorithms": [ + { + "name": "SummaryStat", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.1.1", + "description": "Triggered daily", + "metadataFields": [ + { + "name": "asset_id", + "description": "The asset identified" + } + ] + }, + "result_type": 2, + "description": "Produces a collection of summary statistics" + }, + { + "name": "ShaftFreqEstimator", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Estimates the shaft frequency" + }, + { + "name": "MeanSignalDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 2, + "description": "Calculates the mean signal" + }, + { + "name": "ResonanceDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Detects if there is excess resonance" + }, + { + "name": "BehaviourDeviationDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Detects deviation in the behaviour of the asset" + }, + { + "name": "SuperDuperMagicMachine", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 2, + "description": "Does something amazing" + } + ] + }, + { + "name": "mlv2", + "runtime": "py3.*", + "supported_algorithms": [ + { + "name": "SummaryStat", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.1.1", + "description": "Triggered daily", + "metadataFields": [ + { + "name": "asset_id", + "description": "The asset identified" + } + ] + }, + "result_type": 2, + "description": "Produces a collection of summary statistics" + }, + { + "name": "ShaftFreqEstimator", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Estimates the shaft frequency" + }, + { + "name": "MeanSignalDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 2, + "description": "Calculates the mean signal" + }, + { + "name": "ResonanceDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Detects if there is excess resonance" + }, + { + "name": "BehaviourDeviationDetector", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 1, + "description": "Detects deviation in the behaviour of the asset" + }, + { + "name": "SuperDuperMagicMachine", + "version": "1.0.0", + "window_type": { + "name": "daily", + "version": "1.0.0", + "description": "Triggered daily" + }, + "result_type": 2, + "description": "Does something amazing" + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/simpletrigger/README.md b/examples/simpletrigger/README.md new file mode 100644 index 0000000..e69de29 diff --git a/examples/simpletrigger/__init__.py b/examples/simpletrigger/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/simpletrigger/poetry.lock b/examples/simpletrigger/poetry.lock new file mode 100644 index 0000000..13d1a57 --- /dev/null +++ b/examples/simpletrigger/poetry.lock @@ -0,0 +1,418 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "grpcio" +version = "1.76.0" +description = "HTTP/2-based RPC framework" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "grpcio-1.76.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:65a20de41e85648e00305c1bb09a3598f840422e522277641145a32d42dcefcc"}, + {file = "grpcio-1.76.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:40ad3afe81676fd9ec6d9d406eda00933f218038433980aa19d401490e46ecde"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:035d90bc79eaa4bed83f524331d55e35820725c9fbb00ffa1904d5550ed7ede3"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4215d3a102bd95e2e11b5395c78562967959824156af11fa93d18fdd18050990"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:49ce47231818806067aea3324d4bf13825b658ad662d3b25fada0bdad9b8a6af"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8cc3309d8e08fd79089e13ed4819d0af72aa935dd8f435a195fd152796752ff2"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:971fd5a1d6e62e00d945423a567e42eb1fa678ba89072832185ca836a94daaa6"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d9adda641db7207e800a7f089068f6f645959f2df27e870ee81d44701dd9db3"}, + {file = "grpcio-1.76.0-cp310-cp310-win32.whl", hash = "sha256:063065249d9e7e0782d03d2bca50787f53bd0fb89a67de9a7b521c4a01f1989b"}, + {file = "grpcio-1.76.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6ae758eb08088d36812dd5d9af7a9859c05b1e0f714470ea243694b49278e7b"}, + {file = "grpcio-1.76.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2e1743fbd7f5fa713a1b0a8ac8ebabf0ec980b5d8809ec358d488e273b9cf02a"}, + {file = "grpcio-1.76.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:a8c2cf1209497cf659a667d7dea88985e834c24b7c3b605e6254cbb5076d985c"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:08caea849a9d3c71a542827d6df9d5a69067b0a1efbea8a855633ff5d9571465"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f0e34c2079d47ae9f6188211db9e777c619a21d4faba6977774e8fa43b085e48"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8843114c0cfce61b40ad48df65abcfc00d4dba82eae8718fab5352390848c5da"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8eddfb4d203a237da6f3cc8a540dad0517d274b5a1e9e636fd8d2c79b5c1d397"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:32483fe2aab2c3794101c2a159070584e5db11d0aa091b2c0ea9c4fc43d0d749"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dcfe41187da8992c5f40aa8c5ec086fa3672834d2be57a32384c08d5a05b4c00"}, + {file = "grpcio-1.76.0-cp311-cp311-win32.whl", hash = "sha256:2107b0c024d1b35f4083f11245c0e23846ae64d02f40b2b226684840260ed054"}, + {file = "grpcio-1.76.0-cp311-cp311-win_amd64.whl", hash = "sha256:522175aba7af9113c48ec10cc471b9b9bd4f6ceb36aeb4544a8e2c80ed9d252d"}, + {file = "grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8"}, + {file = "grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882"}, + {file = "grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958"}, + {file = "grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347"}, + {file = "grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2"}, + {file = "grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42"}, + {file = "grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f"}, + {file = "grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8"}, + {file = "grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62"}, + {file = "grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc"}, + {file = "grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e"}, + {file = "grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e"}, + {file = "grpcio-1.76.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:8ebe63ee5f8fa4296b1b8cfc743f870d10e902ca18afc65c68cf46fd39bb0783"}, + {file = "grpcio-1.76.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3bf0f392c0b806905ed174dcd8bdd5e418a40d5567a05615a030a5aeddea692d"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b7604868b38c1bfd5cf72d768aedd7db41d78cb6a4a18585e33fb0f9f2363fd"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:e6d1db20594d9daba22f90da738b1a0441a7427552cc6e2e3d1297aeddc00378"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d099566accf23d21037f18a2a63d323075bebace807742e4b0ac210971d4dd70"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ebea5cc3aa8ea72e04df9913492f9a96d9348db876f9dda3ad729cfedf7ac416"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0c37db8606c258e2ee0c56b78c62fc9dee0e901b5dbdcf816c2dd4ad652b8b0c"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ebebf83299b0cb1721a8859ea98f3a77811e35dce7609c5c963b9ad90728f886"}, + {file = "grpcio-1.76.0-cp39-cp39-win32.whl", hash = "sha256:0aaa82d0813fd4c8e589fac9b65d7dd88702555f702fb10417f96e2a2a6d4c0f"}, + {file = "grpcio-1.76.0-cp39-cp39-win_amd64.whl", hash = "sha256:acab0277c40eff7143c2323190ea57b9ee5fd353d8190ee9652369fae735668a"}, + {file = "grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73"}, +] + +[package.dependencies] +typing-extensions = ">=4.12,<5.0" + +[package.extras] +protobuf = ["grpcio-tools (>=1.76.0)"] + +[[package]] +name = "grpcio-reflection" +version = "1.76.0" +description = "Standard Protobuf Reflection Service for gRPC" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "grpcio_reflection-1.76.0-py3-none-any.whl", hash = "sha256:d7c43f2047a2a9c9320a5905aa7133c677977436b5f63e6a868e507864a11c73"}, + {file = "grpcio_reflection-1.76.0.tar.gz", hash = "sha256:e0e7e49921c2ee951e5ddff0bdbacbd1ac1a70888beb61d567f3d01b799decb1"}, +] + +[package.dependencies] +grpcio = ">=1.76.0" +protobuf = ">=6.31.1,<7.0.0" + +[[package]] +name = "grpcio-tools" +version = "1.76.0" +description = "Protobuf code generator for gRPC" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "grpcio_tools-1.76.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:9b99086080ca394f1da9894ee20dedf7292dd614e985dcba58209a86a42de602"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8d95b5c2394bbbe911cbfc88d15e24c9e174958cb44dad6aa8c46fe367f6cc2a"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d54e9ce2ffc5d01341f0c8898c1471d887ae93d77451884797776e0a505bd503"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c83f39f64c2531336bd8d5c846a2159c9ea6635508b0f8ed3ad0d433e25b53c9"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be480142fae0d986d127d6cb5cbc0357e4124ba22e96bb8b9ece32c48bc2c8ea"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7fefd41fc4ca11fab36f42bdf0f3812252988f8798fca8bec8eae049418deacd"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63551f371082173e259e7f6ec24b5f1fe7d66040fadd975c966647bca605a2d3"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75a2c34584c99ff47e5bb267866e7dec68d30cd3b2158e1ee495bfd6db5ad4f0"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-win32.whl", hash = "sha256:908758789b0a612102c88e8055b7191eb2c4290d5d6fc50fb9cac737f8011ef1"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-win_amd64.whl", hash = "sha256:ec6e49e7c4b2a222eb26d1e1726a07a572b6e629b2cf37e6bb784c9687904a52"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:c6480f6af6833850a85cca1c6b435ef4ffd2ac8e88ef683b4065233827950243"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:c7c23fe1dc09818e16a48853477806ad77dd628b33996f78c05a293065f8210c"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fcdce7f7770ff052cd4e60161764b0b3498c909bde69138f8bd2e7b24a3ecd8f"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b598fdcebffa931c7da5c9e90b5805fff7e9bc6cf238319358a1b85704c57d33"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6a9818ff884796b12dcf8db32126e40ec1098cacf5697f27af9cfccfca1c1fae"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:105e53435b2eed3961da543db44a2a34479d98d18ea248219856f30a0ca4646b"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:454a1232c7f99410d92fa9923c7851fd4cdaf657ee194eac73ea1fe21b406d6e"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ca9ccf667afc0268d45ab202af4556c72e57ea36ebddc93535e1a25cbd4f8aba"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-win32.whl", hash = "sha256:a83c87513b708228b4cad7619311daba65b40937745103cadca3db94a6472d9c"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-win_amd64.whl", hash = "sha256:2ce5e87ec71f2e4041dce4351f2a8e3b713e3bca6b54c69c3fbc6c7ad1f4c386"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:4ad555b8647de1ebaffb25170249f89057721ffb74f7da96834a07b4855bb46a"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:243af7c8fc7ff22a40a42eb8e0f6f66963c1920b75aae2a2ec503a9c3c8b31c1"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8207b890f423142cc0025d041fb058f7286318df6a049565c27869d73534228b"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3dafa34c2626a6691d103877e8a145f54c34cf6530975f695b396ed2fc5c98f8"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30f1d2dda6ece285b3d9084e94f66fa721ebdba14ae76b2bc4c581c8a166535c"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a889af059dc6dbb82d7b417aa581601316e364fe12eb54c1b8d95311ea50916d"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c3f2c3c44c56eb5d479ab178f0174595d0a974c37dade442f05bb73dfec02f31"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:479ce02dff684046f909a487d452a83a96b4231f7c70a3b218a075d54e951f56"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-win32.whl", hash = "sha256:9ba4bb539936642a44418b38ee6c3e8823c037699e2cb282bd8a44d76a4be833"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:0cd489016766b05f9ed8a6b6596004b62c57d323f49593eac84add032a6d43f7"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ff48969f81858397ef33a36b326f2dbe2053a48b254593785707845db73c8f44"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa2f030fd0ef17926026ee8e2b700e388d3439155d145c568fa6b32693277613"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bacbf3c54f88c38de8e28f8d9b97c90b76b105fb9ddef05d2c50df01b32b92af"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0d4e4afe9a0e3c24fad2f1af45f98cf8700b2bfc4d790795756ba035d2ea7bdc"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fbbd4e1fc5af98001ceef5e780e8c10921d94941c3809238081e73818ef707f1"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b05efe5a59883ab8292d596657273a60e0c3e4f5a9723c32feb9fc3a06f2f3ef"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:be483b90e62b7892eb71fa1fc49750bee5b2ee35b5ec99dd2b32bed4bedb5d71"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:630cd7fd3e8a63e20703a7ad816979073c2253e591b5422583c27cae2570de73"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-win32.whl", hash = "sha256:eb2567280f9f6da5444043f0e84d8408c7a10df9ba3201026b30e40ef3814736"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:0071b1c0bd0f5f9d292dca4efab32c92725d418e57f9c60acdc33c0172af8b53"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:c53c5719ef2a435997755abde3826ba4087174bd432aa721d8fac781fcea79e4"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:e3db1300d7282264639eeee7243f5de7e6a7c0283f8bf05d66c0315b7b0f0b36"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b018a4b7455a7e8c16d0fdb3655a6ba6c9536da6de6c5d4f11b6bb73378165b"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ec6e4de3866e47cfde56607b1fae83ecc5aa546e06dec53de11f88063f4b5275"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b8da4d828883913f1852bdd67383713ae5c11842f6c70f93f31893eab530aead"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5c120c2cf4443121800e7f9bcfe2e94519fa25f3bb0b9882359dd3b252c78a7b"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8b7df5591d699cd9076065f1f15049e9c3597e0771bea51c8c97790caf5e4197"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a25048c5f984d33e3f5b6ad7618e98736542461213ade1bd6f2fcfe8ce804e3d"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-win32.whl", hash = "sha256:4b77ce6b6c17869858cfe14681ad09ed3a8a80e960e96035de1fd87f78158740"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:2ccd2c8d041351cc29d0fc4a84529b11ee35494a700b535c1f820b642f2a72fc"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:12e1186b0256414a9153d414e4852e7282863a8173ebcee67b3ebe2e1c47a755"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:14c17014d2349b9954385bee487f51979b4b7f9067017099ae45c4f93360d373"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:888346b8b3f4152953626e38629ade9d79940ae85c8fd539ce39b72602191fb2"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0cc0b3edf1f076b2475a98122a51f3f3358b9a740dedff1a9a4dec6477ef96"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cbc16156ba2533e5bad16ff1648213dc3b0a0b0e4de6d17b65e8d60578014002"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f919e480983e610263846dbeab22ad808ad0fac6d4bd15c52e9f7f80d1f08479"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fdd8b382ed21d7d429a9879198743abead0b08ad2249b554fd2f2395450bcdf1"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fe0cc10dd31ac01cadc8af1ce7877cc770bc2a71aa96569bc3c1897c1eac0116"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-win32.whl", hash = "sha256:6ae1d11477b05baead0fce051dece86a0e79d9b592245e0026c998da11c278c4"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-win_amd64.whl", hash = "sha256:2d7679680a456528b9a71a2589cb24d3dd82ec34327281f5695077a567dee433"}, + {file = "grpcio_tools-1.76.0.tar.gz", hash = "sha256:ce80169b5e6adf3e8302f3ebb6cb0c3a9f08089133abca4b76ad67f751f5ad88"}, +] + +[package.dependencies] +grpcio = ">=1.76.0" +protobuf = ">=6.31.1,<7.0.0" +setuptools = "*" + +[[package]] +name = "librt" +version = "0.7.5" +description = "Mypyc runtime library" +optional = false +python-versions = ">=3.9" +groups = ["main"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.7.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81056e01bba1394f1d92904ec61a4078f66df785316275edbaf51d90da8c6e26"}, + {file = "librt-0.7.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7c72c8756eeb3aefb1b9e3dac7c37a4a25db63640cac0ab6fc18e91a0edf05a"}, + {file = "librt-0.7.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddc4a16207f88f9597b397fc1f60781266d13b13de922ff61c206547a29e4bbd"}, + {file = "librt-0.7.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63055d3dda433ebb314c9f1819942f16a19203c454508fdb2d167613f7017169"}, + {file = "librt-0.7.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f85f9b5db87b0f52e53c68ad2a0c5a53e00afa439bd54a1723742a2b1021276"}, + {file = "librt-0.7.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c566a4672564c5d54d8ab65cdaae5a87ee14c1564c1a2ddc7a9f5811c750f023"}, + {file = "librt-0.7.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fee15c2a190ef389f14928135c6fb2d25cd3fdb7887bfd9a7b444bbdc8c06b96"}, + {file = "librt-0.7.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:584cb3e605ec45ba350962cec853e17be0a25a772f21f09f1e422f7044ae2a7d"}, + {file = "librt-0.7.5-cp310-cp310-win32.whl", hash = "sha256:9c08527055fbb03c641c15bbc5b79dd2942fb6a3bd8dabf141dd7e97eeea4904"}, + {file = "librt-0.7.5-cp310-cp310-win_amd64.whl", hash = "sha256:dd810f2d39c526c42ea205e0addad5dc08ef853c625387806a29d07f9d150d9b"}, + {file = "librt-0.7.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f952e1a78c480edee8fb43aa2bf2e84dcd46c917d44f8065b883079d3893e8fc"}, + {file = "librt-0.7.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75965c1f4efb7234ff52a58b729d245a21e87e4b6a26a0ec08052f02b16274e4"}, + {file = "librt-0.7.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:732e0aa0385b59a1b2545159e781c792cc58ce9c134249233a7c7250a44684c4"}, + {file = "librt-0.7.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cdde31759bd8888f3ef0eebda80394a48961328a17c264dce8cc35f4b9cde35d"}, + {file = "librt-0.7.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df3146d52465b3b6397d25d513f428cb421c18df65b7378667bb5f1e3cc45805"}, + {file = "librt-0.7.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29c8d2fae11d4379ea207ba7fc69d43237e42cf8a9f90ec6e05993687e6d648b"}, + {file = "librt-0.7.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb41f04046b4f22b1e7ba5ef513402cd2e3477ec610e5f92d38fe2bba383d419"}, + {file = "librt-0.7.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8bb7883c1e94ceb87c2bf81385266f032da09cd040e804cc002f2c9d6b842e2f"}, + {file = "librt-0.7.5-cp311-cp311-win32.whl", hash = "sha256:84d4a6b9efd6124f728558a18e79e7cc5c5d4efc09b2b846c910de7e564f5bad"}, + {file = "librt-0.7.5-cp311-cp311-win_amd64.whl", hash = "sha256:ab4b0d3bee6f6ff7017e18e576ac7e41a06697d8dea4b8f3ab9e0c8e1300c409"}, + {file = "librt-0.7.5-cp311-cp311-win_arm64.whl", hash = "sha256:730be847daad773a3c898943cf67fb9845a3961d06fb79672ceb0a8cd8624cfa"}, + {file = "librt-0.7.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba1077c562a046208a2dc6366227b3eeae8f2c2ab4b41eaf4fd2fa28cece4203"}, + {file = "librt-0.7.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:654fdc971c76348a73af5240d8e2529265b9a7ba6321e38dd5bae7b0d4ab3abe"}, + {file = "librt-0.7.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6b7b58913d475911f6f33e8082f19dd9b120c4f4a5c911d07e395d67b81c6982"}, + {file = "librt-0.7.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e0fd344bad57026a8f4ccfaf406486c2fc991838050c2fef156170edc3b775"}, + {file = "librt-0.7.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46aa91813c267c3f60db75d56419b42c0c0b9748ec2c568a0e3588e543fb4233"}, + {file = "librt-0.7.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ddc0ab9dbc5f9ceaf2bf7a367bf01f2697660e908f6534800e88f43590b271db"}, + {file = "librt-0.7.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7a488908a470451338607650f1c064175094aedebf4a4fa37890682e30ce0b57"}, + {file = "librt-0.7.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e47fc52602ffc374e69bf1b76536dc99f7f6dd876bd786c8213eaa3598be030a"}, + {file = "librt-0.7.5-cp312-cp312-win32.whl", hash = "sha256:cda8b025875946ffff5a9a7590bf9acde3eb02cb6200f06a2d3e691ef3d9955b"}, + {file = "librt-0.7.5-cp312-cp312-win_amd64.whl", hash = "sha256:b591c094afd0ffda820e931148c9e48dc31a556dc5b2b9b3cc552fa710d858e4"}, + {file = "librt-0.7.5-cp312-cp312-win_arm64.whl", hash = "sha256:532ddc6a8a6ca341b1cd7f4d999043e4c71a212b26fe9fd2e7f1e8bb4e873544"}, + {file = "librt-0.7.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b1795c4b2789b458fa290059062c2f5a297ddb28c31e704d27e161386469691a"}, + {file = "librt-0.7.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2fcbf2e135c11f721193aa5f42ba112bb1046afafbffd407cbc81d8d735c74d0"}, + {file = "librt-0.7.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c039bbf79a9a2498404d1ae7e29a6c175e63678d7a54013a97397c40aee026c5"}, + {file = "librt-0.7.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3919c9407faeeee35430ae135e3a78acd4ecaaaa73767529e2c15ca1d73ba325"}, + {file = "librt-0.7.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26b46620e1e0e45af510d9848ea0915e7040605dd2ae94ebefb6c962cbb6f7ec"}, + {file = "librt-0.7.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9bbb8facc5375476d392990dd6a71f97e4cb42e2ac66f32e860f6e47299d5e89"}, + {file = "librt-0.7.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e9e9c988b5ffde7be02180f864cbd17c0b0c1231c235748912ab2afa05789c25"}, + {file = "librt-0.7.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edf6b465306215b19dbe6c3fb63cf374a8f3e1ad77f3b4c16544b83033bbb67b"}, + {file = "librt-0.7.5-cp313-cp313-win32.whl", hash = "sha256:060bde69c3604f694bd8ae21a780fe8be46bb3dbb863642e8dfc75c931ca8eee"}, + {file = "librt-0.7.5-cp313-cp313-win_amd64.whl", hash = "sha256:a82d5a0ee43aeae2116d7292c77cc8038f4841830ade8aa922e098933b468b9e"}, + {file = "librt-0.7.5-cp313-cp313-win_arm64.whl", hash = "sha256:3c98a8d0ac9e2a7cb8ff8c53e5d6e8d82bfb2839abf144fdeaaa832f2a12aa45"}, + {file = "librt-0.7.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9937574e6d842f359b8585903d04f5b4ab62277a091a93e02058158074dc52f2"}, + {file = "librt-0.7.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5cd3afd71e9bc146203b6c8141921e738364158d4aa7cdb9a874e2505163770f"}, + {file = "librt-0.7.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9cffa3ef0af29687455161cb446eff059bf27607f95163d6a37e27bcb37180f6"}, + {file = "librt-0.7.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82f3f088482e2229387eadf8215c03f7726d56f69cce8c0c40f0795aebc9b361"}, + {file = "librt-0.7.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7aa33153a5bb0bac783d2c57885889b1162823384e8313d47800a0e10d0070e"}, + {file = "librt-0.7.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:265729b551a2dd329cc47b323a182fb7961af42abf21e913c9dd7d3331b2f3c2"}, + {file = "librt-0.7.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:168e04663e126416ba712114050f413ac306759a1791d87b7c11d4428ba75760"}, + {file = "librt-0.7.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:553dc58987d1d853adda8aeadf4db8e29749f0b11877afcc429a9ad892818ae2"}, + {file = "librt-0.7.5-cp314-cp314-win32.whl", hash = "sha256:263f4fae9eba277513357c871275b18d14de93fd49bf5e43dc60a97b81ad5eb8"}, + {file = "librt-0.7.5-cp314-cp314-win_amd64.whl", hash = "sha256:85f485b7471571e99fab4f44eeb327dc0e1f814ada575f3fa85e698417d8a54e"}, + {file = "librt-0.7.5-cp314-cp314-win_arm64.whl", hash = "sha256:49c596cd18e90e58b7caa4d7ca7606049c1802125fcff96b8af73fa5c3870e4d"}, + {file = "librt-0.7.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:54d2aef0b0f5056f130981ad45081b278602ff3657fe16c88529f5058038e802"}, + {file = "librt-0.7.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0b4791202296ad51ac09a3ff58eb49d9da8e3a4009167a6d76ac418a974e5fd4"}, + {file = "librt-0.7.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6e860909fea75baef941ee6436e0453612505883b9d0d87924d4fda27865b9a2"}, + {file = "librt-0.7.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f02c4337bf271c4f06637f5ff254fad2238c0b8e32a3a480ebb2fc5e26f754a5"}, + {file = "librt-0.7.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7f51ffe59f4556243d3cc82d827bde74765f594fa3ceb80ec4de0c13ccd3416"}, + {file = "librt-0.7.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0b7f080ba30601dfa3e3deed3160352273e1b9bc92e652f51103c3e9298f7899"}, + {file = "librt-0.7.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fb565b4219abc8ea2402e61c7ba648a62903831059ed3564fa1245cc245d58d7"}, + {file = "librt-0.7.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a3cfb15961e7333ea6ef033dc574af75153b5c230d5ad25fbcd55198f21e0cf"}, + {file = "librt-0.7.5-cp314-cp314t-win32.whl", hash = "sha256:118716de5ad6726332db1801bc90fa6d94194cd2e07c1a7822cebf12c496714d"}, + {file = "librt-0.7.5-cp314-cp314t-win_amd64.whl", hash = "sha256:3dd58f7ce20360c6ce0c04f7bd9081c7f9c19fc6129a3c705d0c5a35439f201d"}, + {file = "librt-0.7.5-cp314-cp314t-win_arm64.whl", hash = "sha256:08153ea537609d11f774d2bfe84af39d50d5c9ca3a4d061d946e0c9d8bce04a1"}, + {file = "librt-0.7.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df2e210400b28e50994477ebf82f055698c79797b6ee47a1669d383ca33263e1"}, + {file = "librt-0.7.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d2cc7d187e8c6e9b7bdbefa9697ce897a704ea7a7ce844f2b4e0e2aa07ae51d3"}, + {file = "librt-0.7.5-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:39183abee670bc37b85f11e86c44a9cad1ed6efa48b580083e89ecee13dd9717"}, + {file = "librt-0.7.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191cbd42660446d67cf7a95ac7bfa60f49b8b3b0417c64f216284a1d86fc9335"}, + {file = "librt-0.7.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea1b60b86595a5dc1f57b44a801a1c4d8209c0a69518391d349973a4491408e6"}, + {file = "librt-0.7.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:af69d9e159575e877c7546d1ee817b4ae089aa221dd1117e20c24ad8dc8659c7"}, + {file = "librt-0.7.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0e2bf8f91093fac43e3eaebacf777f12fd539dce9ec5af3efc6d8424e96ccd49"}, + {file = "librt-0.7.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8dcae24de1bc9da93aa689cb6313c70e776d7cea2fcf26b9b6160fedfe6bd9af"}, + {file = "librt-0.7.5-cp39-cp39-win32.whl", hash = "sha256:cdb001a1a0e4f41e613bca2c0fc147fc8a7396f53fc94201cbfd8ec7cd69ca4b"}, + {file = "librt-0.7.5-cp39-cp39-win_amd64.whl", hash = "sha256:a9eacbf983319b26b5f340a2e0cd47ac1ee4725a7f3a72fd0f15063c934b69d6"}, + {file = "librt-0.7.5.tar.gz", hash = "sha256:de4221a1181fa9c8c4b5f35506ed6f298948f44003d84d2a8b9885d7e01e6cfa"}, +] + +[[package]] +name = "mypy" +version = "1.19.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, +] + +[package.dependencies] +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} +mypy_extensions = ">=1.0.0" +pathspec = ">=0.9.0" +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, +] + +[[package]] +name = "orca-python" +version = "0.10.0" +description = "Python SDK for the Predixus Orca product" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "orca_python-0.10.0-py3-none-any.whl", hash = "sha256:5e4a9f924c78cd879e9c6b68faf48e0f2d8a7e41277239803dbf8aec570ad586"}, + {file = "orca_python-0.10.0.tar.gz", hash = "sha256:628e301c6797ff7e4afc616222e9a835ceb6454ca9044131a80c133a73ba04ee"}, +] + +[package.dependencies] +grpcio = ">=1.71.0,<2.0.0" +grpcio-reflection = ">=1.74.0,<2.0.0" +grpcio-tools = ">=1.71.0,<2.0.0" +mypy = ">=1.18.1,<2.0.0" + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "protobuf" +version = "6.33.2" +description = "" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "protobuf-6.33.2-cp310-abi3-win32.whl", hash = "sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d"}, + {file = "protobuf-6.33.2-cp310-abi3-win_amd64.whl", hash = "sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4"}, + {file = "protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f"}, + {file = "protobuf-6.33.2-cp39-cp39-win32.whl", hash = "sha256:7109dcc38a680d033ffb8bf896727423528db9163be1b6a02d6a49606dcadbfe"}, + {file = "protobuf-6.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:2981c58f582f44b6b13173e12bb8656711189c2a70250845f264b877f00b1913"}, + {file = "protobuf-6.33.2-py3-none-any.whl", hash = "sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c"}, + {file = "protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4"}, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"}, + {file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] +core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, +] + +[metadata] +lock-version = "2.1" +python-versions = ">=3.13" +content-hash = "19dc68409daf52e2b160bd32b2c841ce261606e7d76c238f23fbd75adbb0e3ed" diff --git a/examples/simpletrigger/pyproject.toml b/examples/simpletrigger/pyproject.toml new file mode 100644 index 0000000..ed6cb1d --- /dev/null +++ b/examples/simpletrigger/pyproject.toml @@ -0,0 +1,17 @@ +[project] +name = "simpletrigger" +version = "0.1.0" +description = "" +authors = [ + {name = "Frederick Mannings",email = "fred.mannings@solvicode.com"} +] +readme = "README.md" +requires-python = ">=3.13" +dependencies = [ + "orca-python (>=0.10.0,<0.11.0)" +] + + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/examples/simpletrigger/pyrightconfig.json b/examples/simpletrigger/pyrightconfig.json new file mode 100644 index 0000000..0b8d485 --- /dev/null +++ b/examples/simpletrigger/pyrightconfig.json @@ -0,0 +1,3 @@ +{ + "stubPath": ".orca", +} diff --git a/examples/simpletrigger/simpletrigger/__init__.py b/examples/simpletrigger/simpletrigger/__init__.py new file mode 100644 index 0000000..8200849 --- /dev/null +++ b/examples/simpletrigger/simpletrigger/__init__.py @@ -0,0 +1,21 @@ +import os +from pathlib import Path + + +def ensure_orca_link(): + # This assumes the user runs the script from their project root + project_orca = Path.cwd() / ".orca" + + # 2. Locate where your package wants the symlink to be + package_link = Path(__file__).parent / "orca_link" + + if project_orca.exists() and project_orca.is_dir(): + if not package_link.exists(): + try: + os.symlink(project_orca, package_link) + print(f"Linked {project_orca} to {package_link}") + except OSError as e: + print(f"Could not create symlink: {e}") + else: + # Handle the case where the folder is missing + pass diff --git a/examples/simpletrigger/simpletrigger/algorithms.py b/examples/simpletrigger/simpletrigger/algorithms.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/simpletrigger/processor.py b/examples/simpletrigger/simpletrigger/processor.py similarity index 79% rename from examples/simpletrigger/processor.py rename to examples/simpletrigger/simpletrigger/processor.py index 7d0cfca..0a3ac13 100644 --- a/examples/simpletrigger/processor.py +++ b/examples/simpletrigger/simpletrigger/processor.py @@ -7,6 +7,7 @@ MetadataField, ExecutionParams, ) +from orca_python.main import ValueResult proc = Processor("ml") @@ -22,7 +23,11 @@ ) -@proc.algorithm("MyAlgo", "1.0.0", Every30Second) +@proc.algorithm( + "MyAlgo", + "1.0.0", + Every30Second, +) def my_algorithm(params: ExecutionParams) -> StructResult: route_id = params.window.metadata.get("route_id", None) bus_id = params.window.metadata.get("bus_id", None) @@ -32,6 +37,14 @@ def my_algorithm(params: ExecutionParams) -> StructResult: return StructResult({"result": 42}) +@proc.algorithm( + "SecondAlgo", + "1.0.0", + Every30Second, +) +def second_algorithm(params: ExecutionParams) -> ValueResult: ... + + if __name__ == "__main__": proc.Register() proc.Start() diff --git a/examples/simpletrigger/window.py b/examples/simpletrigger/simpletrigger/window.py similarity index 100% rename from examples/simpletrigger/window.py rename to examples/simpletrigger/simpletrigger/window.py diff --git a/orca_python/registry/__init__.py b/orca_python/registry/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/orca_python/registry/algorithms.py b/orca_python/registry/algorithms.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/orca_python/registry/algorithms.py @@ -0,0 +1 @@ + diff --git a/orca_python/registry/metadata_fields.py b/orca_python/registry/metadata_fields.py new file mode 100644 index 0000000..e69de29 diff --git a/orca_python/registry/processors.py b/orca_python/registry/processors.py new file mode 100644 index 0000000..e69de29 diff --git a/orca_python/registry/window_types.py b/orca_python/registry/window_types.py new file mode 100644 index 0000000..e69de29 From f7db136d2d9bdb4bc1bd0f0bb043bc90f1eae43a Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Wed, 31 Dec 2025 17:19:11 +0000 Subject: [PATCH 02/14] Updated gitignore --- .gitignore | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index fc38538..1c9a648 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,7 @@ __pycache__/ *.py[cod] *$py.class -# C extensions -*.so - +# C extensions *.so # Distribution / packaging .Python build/ @@ -175,3 +173,6 @@ cython_debug/ # IDE .vscode + +# Custom +.orca From 32d99d913a10267b9b431421121f2eacff68aa5e Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Wed, 31 Dec 2025 17:20:02 +0000 Subject: [PATCH 03/14] REmoved stubs gs --- .../.orca/orca_python/registry/__init__.pyi | 0 .../.orca/orca_python/registry/algorithms.pyi | 78 --------- .../orca_python/registry/metadata_fields.pyi | 5 - .../.orca/orca_python/registry/processors.pyi | 7 - .../orca_python/registry/window_types.pyi | 6 - examples/simpletrigger/.orca/registry.json | 160 ------------------ 6 files changed, 256 deletions(-) delete mode 100644 examples/simpletrigger/.orca/orca_python/registry/__init__.pyi delete mode 100644 examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi delete mode 100644 examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi delete mode 100644 examples/simpletrigger/.orca/orca_python/registry/processors.pyi delete mode 100644 examples/simpletrigger/.orca/orca_python/registry/window_types.pyi delete mode 100644 examples/simpletrigger/.orca/registry.json diff --git a/examples/simpletrigger/.orca/orca_python/registry/__init__.pyi b/examples/simpletrigger/.orca/orca_python/registry/__init__.pyi deleted file mode 100644 index e69de29..0000000 diff --git a/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi b/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi deleted file mode 100644 index c176387..0000000 --- a/examples/simpletrigger/.orca/orca_python/registry/algorithms.pyi +++ /dev/null @@ -1,78 +0,0 @@ -from orca_python import ( - ExecutionParams, - StructResult, - ValueResult, -) - -def summary_stat_8052ca3c(params: ExecutionParams) -> ValueResult: - """ - Produces a collection of summary statistics - """ - ... - -def shaft_freq_estimator_5438ff55(params: ExecutionParams) -> StructResult: - """ - Estimates the shaft frequency - """ - ... - -def mean_signal_detector_3b2b43f1(params: ExecutionParams) -> ValueResult: - """ - Calculates the mean signal - """ - ... - -def resonance_detector_a1de5edf(params: ExecutionParams) -> StructResult: - """ - Detects if there is excess resonance - """ - ... - -def behaviour_deviation_detector_b80ff2f4(params: ExecutionParams) -> StructResult: - """ - Detects deviation in the behaviour of the asset - """ - ... - -def super_duper_magic_machine_7a63dd46(params: ExecutionParams) -> ValueResult: - """ - Does something amazing - """ - ... - -def summary_stat_c36b4cf9(params: ExecutionParams) -> ValueResult: - """ - Produces a collection of summary statistics - """ - ... - -def shaft_freq_estimator_27649598(params: ExecutionParams) -> StructResult: - """ - Estimates the shaft frequency - """ - ... - -def mean_signal_detector_4877293c(params: ExecutionParams) -> ValueResult: - """ - Calculates the mean signal - """ - ... - -def resonance_detector_21a21058(params: ExecutionParams) -> StructResult: - """ - Detects if there is excess resonance - """ - ... - -def behaviour_deviation_detector_b354e12a(params: ExecutionParams) -> StructResult: - """ - Detects deviation in the behaviour of the asset - """ - ... - -def super_duper_magic_machine_640697b5(params: ExecutionParams) -> ValueResult: - """ - Does something amazing - """ - ... - diff --git a/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi b/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi deleted file mode 100644 index 663b49e..0000000 --- a/examples/simpletrigger/.orca/orca_python/registry/metadata_fields.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from orca_python import MetadataField - -# --- Global Metadata Fields --- -asset_id_stub: MetadataField - diff --git a/examples/simpletrigger/.orca/orca_python/registry/processors.pyi b/examples/simpletrigger/.orca/orca_python/registry/processors.pyi deleted file mode 100644 index d1b7093..0000000 --- a/examples/simpletrigger/.orca/orca_python/registry/processors.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from orca_python import Processor - -# --- Processor: ml --- -proc_ml: Processor -# --- Processor: mlv2 --- -proc_mlv2: Processor - diff --git a/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi b/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi deleted file mode 100644 index 2228f2e..0000000 --- a/examples/simpletrigger/.orca/orca_python/registry/window_types.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from orca_python import WindowType - -# --- Global Window Types --- -daily_1_1_1_stub: WindowType -daily_1_0_0_stub: WindowType - diff --git a/examples/simpletrigger/.orca/registry.json b/examples/simpletrigger/.orca/registry.json deleted file mode 100644 index 9044048..0000000 --- a/examples/simpletrigger/.orca/registry.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "processors": [ - { - "name": "ml", - "runtime": "py3.*", - "supported_algorithms": [ - { - "name": "SummaryStat", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.1.1", - "description": "Triggered daily", - "metadataFields": [ - { - "name": "asset_id", - "description": "The asset identified" - } - ] - }, - "result_type": 2, - "description": "Produces a collection of summary statistics" - }, - { - "name": "ShaftFreqEstimator", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Estimates the shaft frequency" - }, - { - "name": "MeanSignalDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 2, - "description": "Calculates the mean signal" - }, - { - "name": "ResonanceDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Detects if there is excess resonance" - }, - { - "name": "BehaviourDeviationDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Detects deviation in the behaviour of the asset" - }, - { - "name": "SuperDuperMagicMachine", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 2, - "description": "Does something amazing" - } - ] - }, - { - "name": "mlv2", - "runtime": "py3.*", - "supported_algorithms": [ - { - "name": "SummaryStat", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.1.1", - "description": "Triggered daily", - "metadataFields": [ - { - "name": "asset_id", - "description": "The asset identified" - } - ] - }, - "result_type": 2, - "description": "Produces a collection of summary statistics" - }, - { - "name": "ShaftFreqEstimator", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Estimates the shaft frequency" - }, - { - "name": "MeanSignalDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 2, - "description": "Calculates the mean signal" - }, - { - "name": "ResonanceDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Detects if there is excess resonance" - }, - { - "name": "BehaviourDeviationDetector", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 1, - "description": "Detects deviation in the behaviour of the asset" - }, - { - "name": "SuperDuperMagicMachine", - "version": "1.0.0", - "window_type": { - "name": "daily", - "version": "1.0.0", - "description": "Triggered daily" - }, - "result_type": 2, - "description": "Does something amazing" - } - ] - } - ] -} \ No newline at end of file From 93b2a2aeeaead2db8d60aca43863cff76e3cbd2d Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Wed, 31 Dec 2025 20:34:44 +0000 Subject: [PATCH 04/14] Updated readme and changelog --- CHANGELOG.md | 3 ++ README.md | 46 ++++++++++++++++++- examples/simpletrigger/poetry.lock | 17 ++++++- examples/simpletrigger/pyproject.toml | 3 +- .../simpletrigger/simpletrigger/processor.py | 12 +---- 5 files changed, 68 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4691fd..4b3f53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [unreleased] +### Added +- A stubbed out `registry` module within the package that the Orca CLI generates type stubs for. This module will contain the algorithms, window types and metadata present within Orca core. The LSP that the user uses must be pointed towards the stubs generated from the CLI for this to be effective. + ## [v0.10.0] - 27-09-2025 - Bumped Orca version diff --git a/README.md b/README.md index 2628561..d7f5785 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,50 @@ Replace the contents of `ORCA_CORE` and `PROCESSOR_ADDRESS` with the output of ` Check out more examples [here](./examples/). +7. Sync local registry of algorithms to Orca Core + +When building algorithms that depend on the result of algorithms in other proccessors it's neccessary to reference these algorithms as python objects in the `depends_on` argument of the `algorithm` decorator function. + +To do this, sync your python project with Orca Core: + +```bash +orca sync +``` + +Run this command at the root level of your python project. This will generate a `.orca` folder that contains type stubs for the algorithms stored in other processors. + +Then, configure the settings of your language server and/or linter to include these type stubs. E.g. for pyright, you would include these settings in your `pyrightconfig.json` file at the root of your python project: +```json +{ + "stubPath": ".orca", +} +``` +Now, when importing modules from `orca_python.registry.algorithms` you will see algorithms configured by remote processors. + +For example: +```python +from orca_python.registry.algorithms import +``` + +This stubbed algorithm can be used as an algorithm in the `depends_on` argument of the `algorithm` decorator function. + +```python +from orca_python import Processor +from orca_python.registry.window_types import every_30_seconds +from orca_python.registry.algorithms import my_remote_algorithm + +proc = Processor("ml") + +@proc.algorithm( + "MyAlgo", + "1.0.0", + every_30_seconds, + depends_on=[my_remote_algorithm] +) +def my_algorithm(params: ExecutionParams) -> StructResult: + ... +``` + ## Environment Variables Several environment variables are require to register an Orca Processor: @@ -84,7 +128,7 @@ Several environment variables are require to register an Orca Processor: ## 🧱 Key Concepts -Checkout the Orca [docs](https://app.orc-a.io/docs) for info on how Orca works. +Checkout the Orca [docs](https://orc-a.io/docs) for info on how Orca works. ## 👥 Community diff --git a/examples/simpletrigger/poetry.lock b/examples/simpletrigger/poetry.lock index 13d1a57..bf1516b 100644 --- a/examples/simpletrigger/poetry.lock +++ b/examples/simpletrigger/poetry.lock @@ -379,6 +379,21 @@ files = [ {file = "protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4"}, ] +[[package]] +name = "schedule" +version = "1.2.2" +description = "Job scheduling for humans." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "schedule-1.2.2-py3-none-any.whl", hash = "sha256:5bef4a2a0183abf44046ae0d164cadcac21b1db011bdd8102e4a0c1e91e06a7d"}, + {file = "schedule-1.2.2.tar.gz", hash = "sha256:15fe9c75fe5fd9b9627f3f19cc0ef1420508f9f9a46f45cd0769ef75ede5f0b7"}, +] + +[package.extras] +timezone = ["pytz"] + [[package]] name = "setuptools" version = "80.9.0" @@ -415,4 +430,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">=3.13" -content-hash = "19dc68409daf52e2b160bd32b2c841ce261606e7d76c238f23fbd75adbb0e3ed" +content-hash = "0297f2419e9b06c1d25b7b72860187cd0cb8ab403e1f836c07dac67967b2384b" diff --git a/examples/simpletrigger/pyproject.toml b/examples/simpletrigger/pyproject.toml index ed6cb1d..02e2d40 100644 --- a/examples/simpletrigger/pyproject.toml +++ b/examples/simpletrigger/pyproject.toml @@ -8,7 +8,8 @@ authors = [ readme = "README.md" requires-python = ">=3.13" dependencies = [ - "orca-python (>=0.10.0,<0.11.0)" + "orca-python (>=0.10.0,<0.11.0)", + "schedule (>=1.2.2,<2.0.0)" ] diff --git a/examples/simpletrigger/simpletrigger/processor.py b/examples/simpletrigger/simpletrigger/processor.py index 0a3ac13..61cdbfa 100644 --- a/examples/simpletrigger/simpletrigger/processor.py +++ b/examples/simpletrigger/simpletrigger/processor.py @@ -7,11 +7,11 @@ MetadataField, ExecutionParams, ) -from orca_python.main import ValueResult proc = Processor("ml") -# E.g. you have you have a fleet of busses, where every bus has a particular ID and runs a particular route +# E.g. you have you have a fleet of busses, where every bus has a particular +# ID and runs a particular route route_id = MetadataField(name="route_id", description="The unique ID of the route") bus_id = MetadataField(name="bus_id", description="The unique ID of the bus") @@ -37,14 +37,6 @@ def my_algorithm(params: ExecutionParams) -> StructResult: return StructResult({"result": 42}) -@proc.algorithm( - "SecondAlgo", - "1.0.0", - Every30Second, -) -def second_algorithm(params: ExecutionParams) -> ValueResult: ... - - if __name__ == "__main__": proc.Register() proc.Start() From b44158593ecc263d071bac8b0633f6af9af6f8d8 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Wed, 31 Dec 2025 23:07:40 +0000 Subject: [PATCH 05/14] Integrated new method for stubbing out algorithm definitions --- .gitignore | 1 + README.md | 11 +- .../simpletrigger/simpletrigger/processor.py | 2 + orca | 2 +- orca_python/envs.py | 103 +++++++++++++++--- orca_python/exceptions.py | 7 ++ orca_python/main.py | 55 ++++++++-- orca_python/registry/algorithms.py | 73 +++++++++++++ pyproject.toml | 2 +- 9 files changed, 232 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 1c9a648..edd1ca3 100644 --- a/.gitignore +++ b/.gitignore @@ -176,3 +176,4 @@ cython_debug/ # Custom .orca +orca.json \ No newline at end of file diff --git a/README.md b/README.md index d7f5785..e392adb 100644 --- a/README.md +++ b/README.md @@ -118,13 +118,20 @@ def my_algorithm(params: ExecutionParams) -> StructResult: ... ``` -## Environment Variables +## Configuration -Several environment variables are require to register an Orca Processor: +Some configuration is required to register a process then start accepting processing requests. If using the internal orca stack for development (via `orca start`), then simply initialise the repository with an `orca.json` file: + +```bash +orca init +``` + +You can additionally provide these environment variables to override, or set, certain configurations: - `ORCA_CORE` - the address to reach the Orca-core service - `PROCESSOR_ADDRESS` - the address needed by Orca-core to reach the processor, of format `
:` - `PROCESSOR_EXTERNAL_PORT` - an optional alternative port that should be used by Orca-core to contact the processor. Useful in scenarios like deploying the processor behind a managed service. +- `ENV` - when set to `production` the processor will serve using TLS ## 🧱 Key Concepts diff --git a/examples/simpletrigger/simpletrigger/processor.py b/examples/simpletrigger/simpletrigger/processor.py index 61cdbfa..0774c44 100644 --- a/examples/simpletrigger/simpletrigger/processor.py +++ b/examples/simpletrigger/simpletrigger/processor.py @@ -7,6 +7,7 @@ MetadataField, ExecutionParams, ) +from orca_python.registry.algorithms import shaft_freq_estimator_27649598 proc = Processor("ml") @@ -27,6 +28,7 @@ "MyAlgo", "1.0.0", Every30Second, + depends_on=[shaft_freq_estimator_27649598] ) def my_algorithm(params: ExecutionParams) -> StructResult: route_id = params.window.metadata.get("route_id", None) diff --git a/orca b/orca index b2e84f2..a2238d2 160000 --- a/orca +++ b/orca @@ -1 +1 @@ -Subproject commit b2e84f205183feaa3f68ded18fc73565abf1980a +Subproject commit a2238d249831534800d001fbea38e720c42e655b diff --git a/orca_python/envs.py b/orca_python/envs.py index 15bb0e0..02eeb06 100644 --- a/orca_python/envs.py +++ b/orca_python/envs.py @@ -1,8 +1,14 @@ import os import re +import json from typing import Tuple, Optional +from logging import getLogger +from pathlib import Path +from dataclasses import dataclass -from orca_python.exceptions import BadEnvVar, MissingEnvVar +from orca_python.exceptions import BadEnvVar, BadConfigFile, MissingEnvVar + +LOGGER = getLogger(__name__) def _parse_connection_string(connection_string: str) -> Optional[Tuple[str, int]]: @@ -33,28 +39,73 @@ def _parse_connection_string(connection_string: str) -> Optional[Tuple[str, int] return (address, port) -def getenvs() -> Tuple[bool, str, str, int, int]: +@dataclass +class ConfigData: + projectName: str + orcaConnectionString: str + processorPort: int + processorConnectionString: str + + +def parseConfigFile() -> Tuple[bool, str, str, int, int]: + currentDir = Path.cwd() + configFile = currentDir / "orca.json" + hasConfig = False + + if configFile.exists(): + hasConfig = True + try: + with open(configFile, "r") as f: + configData = ConfigData(**json.load(f)) + except Exception as e: + LOGGER.error(f"Could not parse config file: {e}") + raise BadConfigFile(f"Could not parse config file: {e}") + else: + return (False, "", "", 0, 0) + + res = _parse_connection_string(configData.processorConnectionString) + if res is None: + raise BadConfigFile( + "processorConnectionString is not a valid address of the form :" + ) + processor_address, processor_port = res + + return ( + hasConfig, + configData.orcaConnectionString, + processor_address, + processor_port, + configData.processorPort, + ) + + +def getenvs(strict: bool = False) -> Tuple[bool, str, str, int | None, int | None]: orca_core = os.getenv("ORCA_CORE", "") - if orca_core == "": + if strict and orca_core == "": raise MissingEnvVar("ORCA_CORE is required") orca_core = orca_core.lstrip("grpc://") proc_address = os.getenv("PROCESSOR_ADDRESS", "") - if proc_address == "": + if strict and proc_address == "": raise MissingEnvVar("PROCESSOR_ADDRESS is required") - res = _parse_connection_string(proc_address) - if res is None: - raise BadEnvVar( - "PROCESSOR_ADDRESS is not a valid address of the form :" - ) - processor_address, processor_port = res + processor_address = "" + processor_port = None + if proc_address != "": + res = _parse_connection_string(proc_address) + if res is None: + raise BadEnvVar( + "PROCESSOR_ADDRESS is not a valid address of the form :" + ) + processor_address, processor_port = res _processor_external_port = os.getenv("PROCESSOR_EXTERNAL_PORT", "") - if _processor_external_port != "": + if strict and _processor_external_port != "": if not _processor_external_port.isdigit(): raise BadEnvVar("PROCESSOR_EXTERNAL_PORT is not a valid number") processor_external_port = int(_processor_external_port) + elif _processor_external_port == "": + processor_external_port = None else: processor_external_port = processor_port @@ -73,6 +124,32 @@ def getenvs() -> Tuple[bool, str, str, int, int]: ) -is_production, ORCA_CORE, PROCESSOR_HOST, PROCESSOR_PORT, PROCESSOR_EXTERNAL_PORT = ( - getenvs() +# config file takes priority. Env vars can overwrite. And if config file not +# present, all the env vars have to be there. +hasConfig, ORCA_CORE, PROCESSOR_HOST, PROCESSOR_PORT, PROCESSOR_EXTERNAL_PORT = ( + parseConfigFile() ) +if hasConfig: + ( + is_production, + _ORCA_CORE, + _PROCESSOR_HOST, + _PROCESSOR_PORT, + _PROCESSOR_EXTERNAL_PORT, + ) = getenvs() + if _ORCA_CORE != '': + ORCA_CORE= ORCA_CORE + if _PROCESSOR_HOST != '': + PROCESSOR_HOST = _PROCESSOR_HOST + if _PROCESSOR_PORT is not None: + PROCESSOR_PORT = _PROCESSOR_PORT + if _PROCESSOR_EXTERNAL_PORT is not None: + PROCESSOR_EXTERNAL_PORT = _PROCESSOR_EXTERNAL_PORT +else: + ( + is_production, + ORCA_CORE, + PROCESSOR_HOST, + PROCESSOR_PORT, + PROCESSOR_EXTERNAL_PORT, + ) = getenvs(strict=True) diff --git a/orca_python/exceptions.py b/orca_python/exceptions.py index e11f804..5ef3518 100644 --- a/orca_python/exceptions.py +++ b/orca_python/exceptions.py @@ -28,3 +28,10 @@ class MissingEnvVar(BaseOrcaException): class BadEnvVar(BaseOrcaException): """Raised when an environment variable is poorly defined""" + + +class BadConfigFile(BaseOrcaException): + """Raised when the orca.json config file is poorly defined""" + +class BrokenRemoteAlgorithmStubs(BaseOrcaException): + """Raised when remote algorithm stubs cannot be properly parsed and read""" \ No newline at end of file diff --git a/orca_python/main.py b/orca_python/main.py index bae00b9..a85f43a 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -6,6 +6,7 @@ which are managed by Orca-core. """ +from io import StringIO import re import sys import asyncio @@ -51,6 +52,7 @@ from orca_python import envs from orca_python.exceptions import ( + BrokenRemoteAlgorithmStubs, InvalidDependency, InvalidWindowArgument, InvalidAlgorithmArgument, @@ -205,6 +207,12 @@ def __call__( self, params: ExecutionParams, *args: Any, **kwargs: Any ) -> returnResult: ... +@dataclass +class RemoteAlgorithm(): + ProcessorName: str + ProcessorRuntime: str + Name: str + Version: str T = TypeVar("T", bound=AlgorithmFn) @@ -260,6 +268,7 @@ class Algorithm: Attributes: name (str): The name of the algorithm (PascalCase). version (str): Semantic version of the algorithm (e.g., "1.0.0"). + description (str): A description of the algorithm. window_type (WindowType): The window type triggers the algorithm. exec_fn (AlgorithmFn): The execution function for the algorithm. processor (str): Name of the processor where it's registered. @@ -268,6 +277,7 @@ class Algorithm: name: str version: str + description: str window_type: WindowType exec_fn: AlgorithmFn processor: str @@ -299,6 +309,7 @@ def _flush(self) -> None: self._algorithms: Dict[str, Algorithm] = {} self._dependencies: Dict[str, List[Algorithm]] = {} self._dependencyFns: Dict[str, List[AlgorithmFn]] = {} + self._remoteDependencies: Dict[str, List[RemoteAlgorithm]] = {} self._window_triggers: Dict[str, List[Algorithm]] = {} def _add_algorithm(self, name: str, algorithm: Algorithm) -> None: @@ -320,31 +331,49 @@ def _add_algorithm(self, name: str, algorithm: Algorithm) -> None: ) self._algorithms[name] = algorithm - def _add_dependency(self, algorithm: str, dependency: AlgorithmFn) -> None: + def _add_dependency(self, algorithm: str, dependency: AlgorithmFn, remote: bool = False) -> None: """ Adds a dependency to an algorithm. Args: algorithm (str): Target algorithm's full name. dependency (AlgorithmFn): Dependency function already registered. + remote: Whether the dependency is a remote algorithm. Raises: ValueError: If the dependency function is not registered. """ LOGGER.debug(f"Adding dependency for algorithm: {algorithm}") + if remote: + # TODO: how do we resolve this - we need information about a remote + # algorithm but do not have it. We don't want to go further than stubs as + # it makes deployment messy. + remoteDepMetadata = getattr(dependency, "__orca_metadata__", None) + if remoteDepMetadata is None: + raise BrokenRemoteAlgorithmStubs("Could not parse metadata from Orca stubs. Rerun stub generation: `orca sync`") + try: + remoteAlgo = RemoteAlgorithm(**remoteDepMetadata) + except Exception as e: + raise BrokenRemoteAlgorithmStubs(f"Could not parse metadata from Orca stubs: {e} Rerun stub generation: `orca sync`") + + if algorithm not in self._remoteDependencies: + self._remoteDependencies[algorithm] = [remoteAlgo] + else: + self._remoteDependencies[algorithm].append(remoteAlgo) + + return + dependencyAlgo = None for algo in self._algorithms.values(): if algo.exec_fn == dependency: dependencyAlgo = algo break - if not dependencyAlgo: dep_name = getattr(dependency, "__name__", "") LOGGER.error( f"Failed to find registered algorithm for dependency: {dep_name}" ) - raise ValueError(f"Dependency {dep_name} not found in reg=ms") - + raise ValueError(f"Dependency {dep_name} not found") if algorithm not in self._dependencyFns: self._dependencyFns[algorithm] = [dependency] self._dependencies[algorithm] = [dependencyAlgo] @@ -641,6 +670,7 @@ def Register(self) -> None: algo_msg = registration_request.supported_algorithms.add() algo_msg.name = algorithm.name algo_msg.version = algorithm.version + algo_msg.description = algorithm.description # manage the return type of the algorithm if algorithm.result_type == ValueResult: # type: ignore @@ -679,6 +709,15 @@ def Register(self) -> None: dep_msg.version = dep.version dep_msg.processor_name = dep.processor dep_msg.processor_runtime = dep.runtime + + # Add remote dependencies if they exist + if algorithm.full_name in self._algorithmsSingleton._remoteDependencies: + for dep in self._algorithmsSingleton._remoteDependencies[algorithm.full_name]: + dep_msg = algo_msg.dependencies.add() + dep_msg.name = dep.Name + dep_msg.version = dep.Version + dep_msg.processor_name = dep.ProcessorName + dep_msg.processor_runtime = dep.ProcessorRuntime try: if envs.is_production: # secure channel with TLS @@ -772,6 +811,7 @@ def algorithm( self, name: str, version: str, + description: str, window_type: WindowType, depends_on: List[Callable[..., Any]] = [], ) -> Callable[[T], T]: @@ -800,7 +840,7 @@ def algorithm( f"Version '{version}' must follow basic semantic " "versioning (e.g., '1.0.0') without release portions" ) - + def inner(algo: T) -> T: def wrapper( params: ExecutionParams, @@ -838,6 +878,7 @@ def wrapper( algorithm = Algorithm( name=name, version=version, + description=description, window_type=window_type, exec_fn=wrapper, processor=self._name, @@ -851,14 +892,14 @@ def wrapper( ) for dependency in depends_on: - if not self._algorithmsSingleton._has_algorithm_fn(dependency): + if not getattr(dependency, "__orca_is_remote__", False) and not self._algorithmsSingleton._has_algorithm_fn(dependency): message = ( f"Cannot add function `{dependency.__name__}` to dependency stack. All dependencies must " "be decorated with `@algorithm` before they can be used as dependencies." ) raise InvalidDependency(message) self._algorithmsSingleton._add_dependency( - algorithm.full_name, dependency + algorithm.full_name, dependency, getattr(dependency, "__orca_is_remote__", False) ) # TODO: check for circular dependencies. It's not easy to create one in python as the function diff --git a/orca_python/registry/algorithms.py b/orca_python/registry/algorithms.py index 8b13789..6e5d4fa 100644 --- a/orca_python/registry/algorithms.py +++ b/orca_python/registry/algorithms.py @@ -1 +1,74 @@ +import re +import ast +import json +from typing import Any +from pathlib import Path + +def _load_stub_metadata(func_name: str) -> dict[str, Any]: + """Load annotations and metadata from the .pyi stub file.""" + stub_file = Path.cwd() / ".orca" / "orca_python" / "registry" / "algorithms.pyi" + + if not stub_file.exists(): + return {"annotations": {}, "metadata": {}} + + try: + content = stub_file.read_text() + tree = ast.parse(content) + + result = {"annotations": {}, "metadata": {}} + + # get the function node + for node in ast.walk(tree): + if isinstance(node, ast.FunctionDef) and node.name == func_name: + # get annotations + annotations = {} + for arg in node.args.args: + if arg.annotation: + annotations[arg.arg] = ast.unparse(arg.annotation) + if node.returns: + annotations["return"] = ast.unparse(node.returns) + result["annotations"] = annotations + + # get metadata from comment above function + # find the line number and look for comment above it + lines = content.split("\n") + func_line = node.lineno - 1 # 0-indexed + + # look at previous lines for metadata comment + for i in range(func_line - 1, max(0, func_line - 5), -1): + line = lines[i].strip() + if match := re.search(r"#\s*ALGO_METADATA:\s*(\{.*\})", line): + result["metadata"] = json.loads(match.group(1)) + break + + break + + return result + except Exception as e: + print(f"Error parsing stub: {e}") + + return {"annotations": {}, "metadata": {}} + + +def __getattr__(name): + if name.startswith("_"): + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") + + stub_info = _load_stub_metadata(name) + + class StubAlgorithm: + __orca_is_remote__ = True + + def __init__(self, func_name: str): + self.__name__ = func_name + self.__annotations__ = stub_info["annotations"] + self.__orca_metadata__ = stub_info["metadata"] + + def __call__(self, *args, **kwargs): + raise NotImplementedError( + f"{self.__name__} is only available as a remote algorithm. " + f"Metadata: {self.__orca_metadata__}" + ) + + return StubAlgorithm(name) diff --git a/pyproject.toml b/pyproject.toml index e12d85e..470f014 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ authors = [ readme = "README.md" packages = [ {include = "orca_python"}, - {include = "*", from = "./orca/core/protobufs/python" }, + {include = "*", from = "./orca/protobufs/python" }, ] [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] From 0ac53c3a6284d40bc192627917c764d5f8338334 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Thu, 1 Jan 2026 13:21:35 +0000 Subject: [PATCH 06/14] Added in complete window type data to satisfy orca core on processor registration --- .../simpletrigger/simpletrigger/algorithms.py | 0 orca_python/exceptions.py | 4 +- orca_python/main.py | 42 ++++--- orca_python/registry/algorithms.py | 3 +- orca_python/registry/metadata_fields.py | 78 +++++++++++++ orca_python/registry/processors.py | 0 orca_python/registry/window_types.py | 109 ++++++++++++++++++ 7 files changed, 218 insertions(+), 18 deletions(-) delete mode 100644 examples/simpletrigger/simpletrigger/algorithms.py delete mode 100644 orca_python/registry/processors.py diff --git a/examples/simpletrigger/simpletrigger/algorithms.py b/examples/simpletrigger/simpletrigger/algorithms.py deleted file mode 100644 index e69de29..0000000 diff --git a/orca_python/exceptions.py b/orca_python/exceptions.py index 5ef3518..de5f250 100644 --- a/orca_python/exceptions.py +++ b/orca_python/exceptions.py @@ -33,5 +33,7 @@ class BadEnvVar(BaseOrcaException): class BadConfigFile(BaseOrcaException): """Raised when the orca.json config file is poorly defined""" + class BrokenRemoteAlgorithmStubs(BaseOrcaException): - """Raised when remote algorithm stubs cannot be properly parsed and read""" \ No newline at end of file + """Raised when remote algorithm stubs cannot be properly parsed and read""" + diff --git a/orca_python/main.py b/orca_python/main.py index a85f43a..2c9603d 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -6,7 +6,6 @@ which are managed by Orca-core. """ -from io import StringIO import re import sys import asyncio @@ -52,10 +51,10 @@ from orca_python import envs from orca_python.exceptions import ( - BrokenRemoteAlgorithmStubs, InvalidDependency, InvalidWindowArgument, InvalidAlgorithmArgument, + BrokenRemoteAlgorithmStubs, InvalidAlgorithmReturnType, InvalidMetadataFieldArgument, ) @@ -207,13 +206,15 @@ def __call__( self, params: ExecutionParams, *args: Any, **kwargs: Any ) -> returnResult: ... + @dataclass -class RemoteAlgorithm(): +class RemoteAlgorithm: ProcessorName: str ProcessorRuntime: str Name: str Version: str + T = TypeVar("T", bound=AlgorithmFn) @@ -331,7 +332,9 @@ def _add_algorithm(self, name: str, algorithm: Algorithm) -> None: ) self._algorithms[name] = algorithm - def _add_dependency(self, algorithm: str, dependency: AlgorithmFn, remote: bool = False) -> None: + def _add_dependency( + self, algorithm: str, dependency: AlgorithmFn, remote: bool = False + ) -> None: """ Adds a dependency to an algorithm. @@ -345,22 +348,23 @@ def _add_dependency(self, algorithm: str, dependency: AlgorithmFn, remote: bool """ LOGGER.debug(f"Adding dependency for algorithm: {algorithm}") if remote: - # TODO: how do we resolve this - we need information about a remote - # algorithm but do not have it. We don't want to go further than stubs as - # it makes deployment messy. remoteDepMetadata = getattr(dependency, "__orca_metadata__", None) if remoteDepMetadata is None: - raise BrokenRemoteAlgorithmStubs("Could not parse metadata from Orca stubs. Rerun stub generation: `orca sync`") + raise BrokenRemoteAlgorithmStubs( + "Could not parse metadata from Orca stubs. Rerun stub generation: `orca sync`" + ) try: remoteAlgo = RemoteAlgorithm(**remoteDepMetadata) except Exception as e: - raise BrokenRemoteAlgorithmStubs(f"Could not parse metadata from Orca stubs: {e} Rerun stub generation: `orca sync`") + raise BrokenRemoteAlgorithmStubs( + f"Could not parse metadata from Orca stubs: {e} Rerun stub generation: `orca sync`" + ) if algorithm not in self._remoteDependencies: self._remoteDependencies[algorithm] = [remoteAlgo] else: self._remoteDependencies[algorithm].append(remoteAlgo) - + return dependencyAlgo = None @@ -694,7 +698,7 @@ def Register(self) -> None: algo_msg.window_type.version = algorithm.window_type.version algo_msg.window_type.description = algorithm.window_type.description - # Fill in metadata fields if present + # fill in metadata fields if present if len(algorithm.window_type.metadataFields) > 0: for metadataField in algorithm.window_type.metadataFields: metadata_fields_msg = algo_msg.window_type.metadataFields.add() @@ -709,10 +713,12 @@ def Register(self) -> None: dep_msg.version = dep.version dep_msg.processor_name = dep.processor dep_msg.processor_runtime = dep.runtime - + # Add remote dependencies if they exist if algorithm.full_name in self._algorithmsSingleton._remoteDependencies: - for dep in self._algorithmsSingleton._remoteDependencies[algorithm.full_name]: + for dep in self._algorithmsSingleton._remoteDependencies[ + algorithm.full_name + ]: dep_msg = algo_msg.dependencies.add() dep_msg.name = dep.Name dep_msg.version = dep.Version @@ -840,7 +846,7 @@ def algorithm( f"Version '{version}' must follow basic semantic " "versioning (e.g., '1.0.0') without release portions" ) - + def inner(algo: T) -> T: def wrapper( params: ExecutionParams, @@ -892,14 +898,18 @@ def wrapper( ) for dependency in depends_on: - if not getattr(dependency, "__orca_is_remote__", False) and not self._algorithmsSingleton._has_algorithm_fn(dependency): + if not getattr( + dependency, "__orca_is_remote__", False + ) and not self._algorithmsSingleton._has_algorithm_fn(dependency): message = ( f"Cannot add function `{dependency.__name__}` to dependency stack. All dependencies must " "be decorated with `@algorithm` before they can be used as dependencies." ) raise InvalidDependency(message) self._algorithmsSingleton._add_dependency( - algorithm.full_name, dependency, getattr(dependency, "__orca_is_remote__", False) + algorithm.full_name, + dependency, + getattr(dependency, "__orca_is_remote__", False), ) # TODO: check for circular dependencies. It's not easy to create one in python as the function diff --git a/orca_python/registry/algorithms.py b/orca_python/registry/algorithms.py index 6e5d4fa..b2e8751 100644 --- a/orca_python/registry/algorithms.py +++ b/orca_python/registry/algorithms.py @@ -38,7 +38,7 @@ def _load_stub_metadata(func_name: str) -> dict[str, Any]: # look at previous lines for metadata comment for i in range(func_line - 1, max(0, func_line - 5), -1): line = lines[i].strip() - if match := re.search(r"#\s*ALGO_METADATA:\s*(\{.*\})", line): + if match := re.search(r"#\s*METADATA:\s*(\{.*\})", line): result["metadata"] = json.loads(match.group(1)) break @@ -66,6 +66,7 @@ def __init__(self, func_name: str): self.__orca_metadata__ = stub_info["metadata"] def __call__(self, *args, **kwargs): + _, _ = args, kwargs raise NotImplementedError( f"{self.__name__} is only available as a remote algorithm. " f"Metadata: {self.__orca_metadata__}" diff --git a/orca_python/registry/metadata_fields.py b/orca_python/registry/metadata_fields.py index e69de29..a6c0ded 100644 --- a/orca_python/registry/metadata_fields.py +++ b/orca_python/registry/metadata_fields.py @@ -0,0 +1,78 @@ +import re +import ast +import json +from typing import Any +from pathlib import Path + +from orca_python.exceptions import BrokenRemoteAlgorithmStubs + + +def _load_stub_metadata(obj_name: str) -> dict[str, Any]: + """Load annotations and metadata from the .pyi stub file.""" + stub_file = ( + Path.cwd() / ".orca" / "orca_python" / "registry" / "metadata_fields.pyi" + ) + + if not stub_file.exists(): + return {"annotations": {}, "metadata": {}} + + try: + content = stub_file.read_text() + tree = ast.parse(content) + + result = {"annotations": {}, "metadata": {}} + + # get the annotated assignment node (e.g., asset_id: MetadataField) + for node in ast.walk(tree): + if isinstance(node, ast.AnnAssign): + # check if this is the target we're looking for + if isinstance(node.target, ast.Name) and node.target.id == obj_name: + # get annotation + if node.annotation: + result["annotations"]["type"] = ast.unparse(node.annotation) + + # get metadata from comment above assignment + lines = content.split("\n") + assign_line = node.lineno - 1 # 0-indexed + + # look at previous lines for metadata comment + for i in range(assign_line - 1, max(0, assign_line - 5), -1): + line = lines[i].strip() + if match := re.search(r"#\s*METADATA:\s*(\{.*\})", line): + result["metadata"] = json.loads(match.group(1)) + break + + break + + return result + except Exception as e: + print(f"Error parsing stub: {e}") + + return {"annotations": {}, "metadata": {}} + + +def __getattr__(name): + if name.startswith("_"): + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") + + stub_info = _load_stub_metadata(name) + + class StubMetadataField: + __orca_is_remote__ = True + name: str + description: str + + def __init__(self, field_name: str): + self.__name__ = field_name + self.__annotations__ = stub_info["annotations"] + self.__orca_metadata__ = stub_info["metadata"] + name = stub_info["metadata"].get("Name", None) + description = stub_info["metadata"].get("Description", None) + if name is None or description is None: + raise BrokenRemoteAlgorithmStubs( + "Stubs appear broken. Regenerate with `orca sync`." + ) + self.name = name + self.description = description + + return StubMetadataField(name) diff --git a/orca_python/registry/processors.py b/orca_python/registry/processors.py deleted file mode 100644 index e69de29..0000000 diff --git a/orca_python/registry/window_types.py b/orca_python/registry/window_types.py index e69de29..d1e366a 100644 --- a/orca_python/registry/window_types.py +++ b/orca_python/registry/window_types.py @@ -0,0 +1,109 @@ +import re +import ast +import json +from typing import Any, List +from pathlib import Path +from dataclasses import dataclass + +from orca_python.main import BrokenRemoteAlgorithmStubs + + +def _load_stub_metadata(obj_name: str) -> dict[str, Any]: + """Load annotations and metadata from the .pyi stub file.""" + stub_file = Path.cwd() / ".orca" / "orca_python" / "registry" / "window_types.pyi" + + if not stub_file.exists(): + return {"annotations": {}, "metadata": {}} + + try: + content = stub_file.read_text() + tree = ast.parse(content) + + result = {"annotations": {}, "metadata": {}} + + # get the annotated assignment node + for node in ast.walk(tree): + if isinstance(node, ast.AnnAssign): + # check if this is the target we're looking for + if isinstance(node.target, ast.Name) and node.target.id == obj_name: + # get annotation + if node.annotation: + result["annotations"]["type"] = ast.unparse(node.annotation) + + # get metadata from comment above assignment + lines = content.split("\n") + assign_line = node.lineno - 1 # 0-indexed + + # look at previous lines for metadata comment + for i in range(assign_line - 1, max(0, assign_line - 5), -1): + line = lines[i].strip() + if match := re.search(r"#\s*METADATA:\s*(\{.*\})", line): + result["metadata"] = json.loads(match.group(1)) + break + + break + + return result + except Exception as e: + print(f"Error parsing stub: {e}") + + return {"annotations": {}, "metadata": {}} + + +def __getattr__(name): + if name.startswith("_"): + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") + + stub_info = _load_stub_metadata(name) + + @dataclass + class StubMetadataField: + __orca_is_remote__ = True + name: str + description: str + + class StubWindowType: + __orca_is_remote__ = True + name: str + version: str + description: str + metadataFields: List[StubMetadataField] + + def __init__(self, window_name: str): + self.__annotations__ = stub_info["annotations"] + self.__orca_metadata__ = stub_info["metadata"] + + # assign the values that the main package expects from a window + name = stub_info["metadata"].get("Name", None) + version = stub_info["metadata"].get("Version", None) + description = stub_info["metadata"].get("Description", None) + metadataFields = stub_info["metadata"].get("MetadataFields", None) + + if ( + name is None + or version is None + or description is None + or metadataFields is None + ): + raise BrokenRemoteAlgorithmStubs( + "Stubs appear broken. Regenerate them with `orca sync`." + ) + + self.name = name + self.version = version + self.description = description + try: + self.metadataFields = [ + StubMetadataField( + name=v.get("Name"), description=v.get("Description") + ) + for v in metadataFields + ] + except Exception as e: + raise BrokenRemoteAlgorithmStubs( + f"Stubs appear broken: {e}. Regenerate with `orca sync`" + ) + + self.__name__ = window_name + + return StubWindowType(name) From 3ef306d1d45db9351b10982ecd8d20225adb6a10 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Thu, 1 Jan 2026 14:12:28 +0000 Subject: [PATCH 07/14] added in warning on missing project name --- orca_python/envs.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/orca_python/envs.py b/orca_python/envs.py index 02eeb06..d1fac44 100644 --- a/orca_python/envs.py +++ b/orca_python/envs.py @@ -47,7 +47,7 @@ class ConfigData: processorConnectionString: str -def parseConfigFile() -> Tuple[bool, str, str, int, int]: +def parseConfigFile() -> Tuple[bool, str, str, str, int, int]: currentDir = Path.cwd() configFile = currentDir / "orca.json" hasConfig = False @@ -61,7 +61,7 @@ def parseConfigFile() -> Tuple[bool, str, str, int, int]: LOGGER.error(f"Could not parse config file: {e}") raise BadConfigFile(f"Could not parse config file: {e}") else: - return (False, "", "", 0, 0) + return (False, "", "", "", 0, 0) res = _parse_connection_string(configData.processorConnectionString) if res is None: @@ -73,6 +73,7 @@ def parseConfigFile() -> Tuple[bool, str, str, int, int]: return ( hasConfig, configData.orcaConnectionString, + configData.projectName, processor_address, processor_port, configData.processorPort, @@ -126,9 +127,19 @@ def getenvs(strict: bool = False) -> Tuple[bool, str, str, int | None, int | Non # config file takes priority. Env vars can overwrite. And if config file not # present, all the env vars have to be there. -hasConfig, ORCA_CORE, PROCESSOR_HOST, PROCESSOR_PORT, PROCESSOR_EXTERNAL_PORT = ( - parseConfigFile() -) +( + hasConfig, + PROJECT_NAME, + ORCA_CORE, + PROCESSOR_HOST, + PROCESSOR_PORT, + PROCESSOR_EXTERNAL_PORT, +) = parseConfigFile() + +if PROJECT_NAME == "": + LOGGER.warning( + "Project name could not be found in `orca.json` (or the config is not present). When generating stubs with `orca sync` this may cause algorithm definitions that are present in this repository to be duplicated locally.\nRun `orca init` to generate a `orca.json` config file to avoid this." + ) if hasConfig: ( is_production, @@ -137,9 +148,9 @@ def getenvs(strict: bool = False) -> Tuple[bool, str, str, int | None, int | Non _PROCESSOR_PORT, _PROCESSOR_EXTERNAL_PORT, ) = getenvs() - if _ORCA_CORE != '': - ORCA_CORE= ORCA_CORE - if _PROCESSOR_HOST != '': + if _ORCA_CORE != "": + ORCA_CORE = ORCA_CORE + if _PROCESSOR_HOST != "": PROCESSOR_HOST = _PROCESSOR_HOST if _PROCESSOR_PORT is not None: PROCESSOR_PORT = _PROCESSOR_PORT From 1ca2fd1648b17baa16e96c0fa3b4e8343c16f3c3 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Thu, 1 Jan 2026 15:02:54 +0000 Subject: [PATCH 08/14] Updated orca core version --- orca | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orca b/orca index a2238d2..25be961 160000 --- a/orca +++ b/orca @@ -1 +1 @@ -Subproject commit a2238d249831534800d001fbea38e720c42e655b +Subproject commit 25be9612192bd0016a15c1d1056c29dee1eec037 From 49c12aaccc45d9534f0d9b77ee4f8f2aa483a2b7 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Thu, 1 Jan 2026 15:22:21 +0000 Subject: [PATCH 09/14] Bugfixes --- orca_python/envs.py | 2 +- orca_python/main.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/orca_python/envs.py b/orca_python/envs.py index d1fac44..a2f9abc 100644 --- a/orca_python/envs.py +++ b/orca_python/envs.py @@ -72,8 +72,8 @@ def parseConfigFile() -> Tuple[bool, str, str, str, int, int]: return ( hasConfig, - configData.orcaConnectionString, configData.projectName, + configData.orcaConnectionString, processor_address, processor_port, configData.processorPort, diff --git a/orca_python/main.py b/orca_python/main.py index 2c9603d..9003634 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -667,6 +667,9 @@ def Register(self) -> None: registration_request.runtime = self._runtime registration_request.connection_str = self._orcaProcessorConnStr + if envs.PROJECT_NAME != "": + registration_request.project_name = envs.PROJECT_NAME + for _, algorithm in self._algorithmsSingleton._algorithms.items(): LOGGER.debug( f"Adding algorithm to registration: {algorithm.name}_{algorithm.version}" From 4914136b26e1418b161a2ad8be5a8e158e49e816 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Thu, 1 Jan 2026 23:31:03 +0000 Subject: [PATCH 10/14] Updated dependencies --- poetry.lock | 658 ++++++++++++++++++++++++++++++------------------- pyproject.toml | 3 +- 2 files changed, 401 insertions(+), 260 deletions(-) diff --git a/poetry.lock b/poetry.lock index cedf966..d300e0c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -15,15 +15,15 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.3.0" +version = "1.3.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["dev"] markers = "python_version == \"3.10\"" files = [ - {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, - {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, + {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, + {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, ] [package.dependencies] @@ -34,211 +34,322 @@ test = ["pytest (>=6)"] [[package]] name = "grpcio" -version = "1.74.0" +version = "1.76.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "grpcio-1.74.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:85bd5cdf4ed7b2d6438871adf6afff9af7096486fcf51818a81b77ef4dd30907"}, - {file = "grpcio-1.74.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:68c8ebcca945efff9d86d8d6d7bfb0841cf0071024417e2d7f45c5e46b5b08eb"}, - {file = "grpcio-1.74.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:e154d230dc1bbbd78ad2fdc3039fa50ad7ffcf438e4eb2fa30bce223a70c7486"}, - {file = "grpcio-1.74.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8978003816c7b9eabe217f88c78bc26adc8f9304bf6a594b02e5a49b2ef9c11"}, - {file = "grpcio-1.74.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3d7bd6e3929fd2ea7fbc3f562e4987229ead70c9ae5f01501a46701e08f1ad9"}, - {file = "grpcio-1.74.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:136b53c91ac1d02c8c24201bfdeb56f8b3ac3278668cbb8e0ba49c88069e1bdc"}, - {file = "grpcio-1.74.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fe0f540750a13fd8e5da4b3eaba91a785eea8dca5ccd2bc2ffe978caa403090e"}, - {file = "grpcio-1.74.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4e4181bfc24413d1e3a37a0b7889bea68d973d4b45dd2bc68bb766c140718f82"}, - {file = "grpcio-1.74.0-cp310-cp310-win32.whl", hash = "sha256:1733969040989f7acc3d94c22f55b4a9501a30f6aaacdbccfaba0a3ffb255ab7"}, - {file = "grpcio-1.74.0-cp310-cp310-win_amd64.whl", hash = "sha256:9e912d3c993a29df6c627459af58975b2e5c897d93287939b9d5065f000249b5"}, - {file = "grpcio-1.74.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:69e1a8180868a2576f02356565f16635b99088da7df3d45aaa7e24e73a054e31"}, - {file = "grpcio-1.74.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8efe72fde5500f47aca1ef59495cb59c885afe04ac89dd11d810f2de87d935d4"}, - {file = "grpcio-1.74.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a8f0302f9ac4e9923f98d8e243939a6fb627cd048f5cd38595c97e38020dffce"}, - {file = "grpcio-1.74.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f609a39f62a6f6f05c7512746798282546358a37ea93c1fcbadf8b2fed162e3"}, - {file = "grpcio-1.74.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c98e0b7434a7fa4e3e63f250456eaef52499fba5ae661c58cc5b5477d11e7182"}, - {file = "grpcio-1.74.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:662456c4513e298db6d7bd9c3b8df6f75f8752f0ba01fb653e252ed4a59b5a5d"}, - {file = "grpcio-1.74.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3d14e3c4d65e19d8430a4e28ceb71ace4728776fd6c3ce34016947474479683f"}, - {file = "grpcio-1.74.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bf949792cee20d2078323a9b02bacbbae002b9e3b9e2433f2741c15bdeba1c4"}, - {file = "grpcio-1.74.0-cp311-cp311-win32.whl", hash = "sha256:55b453812fa7c7ce2f5c88be3018fb4a490519b6ce80788d5913f3f9d7da8c7b"}, - {file = "grpcio-1.74.0-cp311-cp311-win_amd64.whl", hash = "sha256:86ad489db097141a907c559988c29718719aa3e13370d40e20506f11b4de0d11"}, - {file = "grpcio-1.74.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8533e6e9c5bd630ca98062e3a1326249e6ada07d05acf191a77bc33f8948f3d8"}, - {file = "grpcio-1.74.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:2918948864fec2a11721d91568effffbe0a02b23ecd57f281391d986847982f6"}, - {file = "grpcio-1.74.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:60d2d48b0580e70d2e1954d0d19fa3c2e60dd7cbed826aca104fff518310d1c5"}, - {file = "grpcio-1.74.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3601274bc0523f6dc07666c0e01682c94472402ac2fd1226fd96e079863bfa49"}, - {file = "grpcio-1.74.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:176d60a5168d7948539def20b2a3adcce67d72454d9ae05969a2e73f3a0feee7"}, - {file = "grpcio-1.74.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e759f9e8bc908aaae0412642afe5416c9f983a80499448fcc7fab8692ae044c3"}, - {file = "grpcio-1.74.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e7c4389771855a92934b2846bd807fc25a3dfa820fd912fe6bd8136026b2707"}, - {file = "grpcio-1.74.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cce634b10aeab37010449124814b05a62fb5f18928ca878f1bf4750d1f0c815b"}, - {file = "grpcio-1.74.0-cp312-cp312-win32.whl", hash = "sha256:885912559974df35d92219e2dc98f51a16a48395f37b92865ad45186f294096c"}, - {file = "grpcio-1.74.0-cp312-cp312-win_amd64.whl", hash = "sha256:42f8fee287427b94be63d916c90399ed310ed10aadbf9e2e5538b3e497d269bc"}, - {file = "grpcio-1.74.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:2bc2d7d8d184e2362b53905cb1708c84cb16354771c04b490485fa07ce3a1d89"}, - {file = "grpcio-1.74.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:c14e803037e572c177ba54a3e090d6eb12efd795d49327c5ee2b3bddb836bf01"}, - {file = "grpcio-1.74.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:f6ec94f0e50eb8fa1744a731088b966427575e40c2944a980049798b127a687e"}, - {file = "grpcio-1.74.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:566b9395b90cc3d0d0c6404bc8572c7c18786ede549cdb540ae27b58afe0fb91"}, - {file = "grpcio-1.74.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1ea6176d7dfd5b941ea01c2ec34de9531ba494d541fe2057c904e601879f249"}, - {file = "grpcio-1.74.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:64229c1e9cea079420527fa8ac45d80fc1e8d3f94deaa35643c381fa8d98f362"}, - {file = "grpcio-1.74.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:0f87bddd6e27fc776aacf7ebfec367b6d49cad0455123951e4488ea99d9b9b8f"}, - {file = "grpcio-1.74.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3b03d8f2a07f0fea8c8f74deb59f8352b770e3900d143b3d1475effcb08eec20"}, - {file = "grpcio-1.74.0-cp313-cp313-win32.whl", hash = "sha256:b6a73b2ba83e663b2480a90b82fdae6a7aa6427f62bf43b29912c0cfd1aa2bfa"}, - {file = "grpcio-1.74.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd3c71aeee838299c5887230b8a1822795325ddfea635edd82954c1eaa831e24"}, - {file = "grpcio-1.74.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:4bc5fca10aaf74779081e16c2bcc3d5ec643ffd528d9e7b1c9039000ead73bae"}, - {file = "grpcio-1.74.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:6bab67d15ad617aff094c382c882e0177637da73cbc5532d52c07b4ee887a87b"}, - {file = "grpcio-1.74.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:655726919b75ab3c34cdad39da5c530ac6fa32696fb23119e36b64adcfca174a"}, - {file = "grpcio-1.74.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a2b06afe2e50ebfd46247ac3ba60cac523f54ec7792ae9ba6073c12daf26f0a"}, - {file = "grpcio-1.74.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f251c355167b2360537cf17bea2cf0197995e551ab9da6a0a59b3da5e8704f9"}, - {file = "grpcio-1.74.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f7b5882fb50632ab1e48cb3122d6df55b9afabc265582808036b6e51b9fd6b7"}, - {file = "grpcio-1.74.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:834988b6c34515545b3edd13e902c1acdd9f2465d386ea5143fb558f153a7176"}, - {file = "grpcio-1.74.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:22b834cef33429ca6cc28303c9c327ba9a3fafecbf62fae17e9a7b7163cc43ac"}, - {file = "grpcio-1.74.0-cp39-cp39-win32.whl", hash = "sha256:7d95d71ff35291bab3f1c52f52f474c632db26ea12700c2ff0ea0532cb0b5854"}, - {file = "grpcio-1.74.0-cp39-cp39-win_amd64.whl", hash = "sha256:ecde9ab49f58433abe02f9ed076c7b5be839cf0153883a6d23995937a82392fa"}, - {file = "grpcio-1.74.0.tar.gz", hash = "sha256:80d1f4fbb35b0742d3e3d3bb654b7381cd5f015f8497279a1e9c21ba623e01b1"}, + {file = "grpcio-1.76.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:65a20de41e85648e00305c1bb09a3598f840422e522277641145a32d42dcefcc"}, + {file = "grpcio-1.76.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:40ad3afe81676fd9ec6d9d406eda00933f218038433980aa19d401490e46ecde"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:035d90bc79eaa4bed83f524331d55e35820725c9fbb00ffa1904d5550ed7ede3"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4215d3a102bd95e2e11b5395c78562967959824156af11fa93d18fdd18050990"}, + {file = "grpcio-1.76.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:49ce47231818806067aea3324d4bf13825b658ad662d3b25fada0bdad9b8a6af"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8cc3309d8e08fd79089e13ed4819d0af72aa935dd8f435a195fd152796752ff2"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:971fd5a1d6e62e00d945423a567e42eb1fa678ba89072832185ca836a94daaa6"}, + {file = "grpcio-1.76.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d9adda641db7207e800a7f089068f6f645959f2df27e870ee81d44701dd9db3"}, + {file = "grpcio-1.76.0-cp310-cp310-win32.whl", hash = "sha256:063065249d9e7e0782d03d2bca50787f53bd0fb89a67de9a7b521c4a01f1989b"}, + {file = "grpcio-1.76.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6ae758eb08088d36812dd5d9af7a9859c05b1e0f714470ea243694b49278e7b"}, + {file = "grpcio-1.76.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2e1743fbd7f5fa713a1b0a8ac8ebabf0ec980b5d8809ec358d488e273b9cf02a"}, + {file = "grpcio-1.76.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:a8c2cf1209497cf659a667d7dea88985e834c24b7c3b605e6254cbb5076d985c"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:08caea849a9d3c71a542827d6df9d5a69067b0a1efbea8a855633ff5d9571465"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f0e34c2079d47ae9f6188211db9e777c619a21d4faba6977774e8fa43b085e48"}, + {file = "grpcio-1.76.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8843114c0cfce61b40ad48df65abcfc00d4dba82eae8718fab5352390848c5da"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8eddfb4d203a237da6f3cc8a540dad0517d274b5a1e9e636fd8d2c79b5c1d397"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:32483fe2aab2c3794101c2a159070584e5db11d0aa091b2c0ea9c4fc43d0d749"}, + {file = "grpcio-1.76.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dcfe41187da8992c5f40aa8c5ec086fa3672834d2be57a32384c08d5a05b4c00"}, + {file = "grpcio-1.76.0-cp311-cp311-win32.whl", hash = "sha256:2107b0c024d1b35f4083f11245c0e23846ae64d02f40b2b226684840260ed054"}, + {file = "grpcio-1.76.0-cp311-cp311-win_amd64.whl", hash = "sha256:522175aba7af9113c48ec10cc471b9b9bd4f6ceb36aeb4544a8e2c80ed9d252d"}, + {file = "grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8"}, + {file = "grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11"}, + {file = "grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980"}, + {file = "grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882"}, + {file = "grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958"}, + {file = "grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347"}, + {file = "grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2"}, + {file = "grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb"}, + {file = "grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03"}, + {file = "grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42"}, + {file = "grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f"}, + {file = "grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8"}, + {file = "grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62"}, + {file = "grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a"}, + {file = "grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc"}, + {file = "grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc"}, + {file = "grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e"}, + {file = "grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e"}, + {file = "grpcio-1.76.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:8ebe63ee5f8fa4296b1b8cfc743f870d10e902ca18afc65c68cf46fd39bb0783"}, + {file = "grpcio-1.76.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3bf0f392c0b806905ed174dcd8bdd5e418a40d5567a05615a030a5aeddea692d"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b7604868b38c1bfd5cf72d768aedd7db41d78cb6a4a18585e33fb0f9f2363fd"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:e6d1db20594d9daba22f90da738b1a0441a7427552cc6e2e3d1297aeddc00378"}, + {file = "grpcio-1.76.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d099566accf23d21037f18a2a63d323075bebace807742e4b0ac210971d4dd70"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ebea5cc3aa8ea72e04df9913492f9a96d9348db876f9dda3ad729cfedf7ac416"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0c37db8606c258e2ee0c56b78c62fc9dee0e901b5dbdcf816c2dd4ad652b8b0c"}, + {file = "grpcio-1.76.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ebebf83299b0cb1721a8859ea98f3a77811e35dce7609c5c963b9ad90728f886"}, + {file = "grpcio-1.76.0-cp39-cp39-win32.whl", hash = "sha256:0aaa82d0813fd4c8e589fac9b65d7dd88702555f702fb10417f96e2a2a6d4c0f"}, + {file = "grpcio-1.76.0-cp39-cp39-win_amd64.whl", hash = "sha256:acab0277c40eff7143c2323190ea57b9ee5fd353d8190ee9652369fae735668a"}, + {file = "grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73"}, ] +[package.dependencies] +typing-extensions = ">=4.12,<5.0" + [package.extras] -protobuf = ["grpcio-tools (>=1.74.0)"] +protobuf = ["grpcio-tools (>=1.76.0)"] [[package]] name = "grpcio-reflection" -version = "1.74.0" +version = "1.76.0" description = "Standard Protobuf Reflection Service for gRPC" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "grpcio_reflection-1.74.0-py3-none-any.whl", hash = "sha256:ad1c4e94185f6def18f298f40f719603118f59d646939bb827f7bc72400f9ba0"}, - {file = "grpcio_reflection-1.74.0.tar.gz", hash = "sha256:c7327d2520dcdac209872ebf57774c3239646dad882e4abb4ad7bebccaca2c83"}, + {file = "grpcio_reflection-1.76.0-py3-none-any.whl", hash = "sha256:d7c43f2047a2a9c9320a5905aa7133c677977436b5f63e6a868e507864a11c73"}, + {file = "grpcio_reflection-1.76.0.tar.gz", hash = "sha256:e0e7e49921c2ee951e5ddff0bdbacbd1ac1a70888beb61d567f3d01b799decb1"}, ] [package.dependencies] -grpcio = ">=1.74.0" +grpcio = ">=1.76.0" protobuf = ">=6.31.1,<7.0.0" [[package]] name = "grpcio-tools" -version = "1.74.0" +version = "1.76.0" description = "Protobuf code generator for gRPC" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "grpcio_tools-1.74.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:796796b4d7e83a9cdd03bb95c6774fca060fd209d83fb9af5f043e9c6f06a1fa"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d576b7786207359b63c2c2e3c387639b4177cf53b1e43d020b005deead32049e"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:d73686934bfdd868be0dbfbfcba2a5f50a8b0b71362e86a133e8efcbdc5cad5d"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:187f99fd22de6e63fbf4f30b2e054a2e3c4fb80beec73b1f4716ea86192050f5"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bef8a16c34e68aaa2d246cd358629f8103730cb96cfc521f720378995f218282"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e41084adbae7176097aa9d08a13d98c189895ec8c967f5461975750d3537625a"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6b61337b47d981b4d270e3caa83607a900169617478c034e6f6baf16ab22d333"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7e920982b4eaab253affbd45ec6d5ec12d895f5c143374ef4c3eadef49162373"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-win32.whl", hash = "sha256:b966f3b93f9d24151591d096ecf9c3fdb419a50d486761f7d28a9a69b028b627"}, - {file = "grpcio_tools-1.74.0-cp310-cp310-win_amd64.whl", hash = "sha256:03787990b56f5c3b3f72c722a7e74fbc5a3b769bbc31ad426e2c6f6a28a9d7c8"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:9d9e28fbbab9b9e923c3d286949e8ff81ebbb402458698f0a2b1183b539779db"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:41040eb1b5d1e582687f6f19cf2efc4c191b6eab56b16f6fba50ac085c5ca4dd"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:1fdc013118e4e9054b6e1a64d16a0d4a17a4071042e674ada8673406ddb26e59"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f037414c527a2c4a3af15451d9e58d7856d0a62b3f6dd3f5b969ecba82f5e843"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:536f53a6a8d1ba1c469d085066cfa0dd3bb51f07013b71857bc3ad1eabe3ab49"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1e23ff54dea7f6e9543dcebd2c0f4b7c9af39812966c05e1c5289477cb2bf2f7"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:76072dee9fa99b33eb0c334a16e70d694df762df705c7a2481f702af33d81a28"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bdf91eb722f2990085b1342c277e212ec392e37bd493a2a21d9eb9238f28c3e"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-win32.whl", hash = "sha256:a036cd2a4223901e7a9f6a9b394326a9352a4ad70bdd3f1d893f1b231fcfdf7e"}, - {file = "grpcio_tools-1.74.0-cp311-cp311-win_amd64.whl", hash = "sha256:d1fdf245178158a92a2dc78e3545b6d13b6c917d9b80931fc85cfb3e9534a07d"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:61d84f6050d7170712600f7ee1dac8849f5dc0bfe0044dd71132ee1e7aa2b373"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:f0129a62711dbc1f1efd51d069d2ce0631d69e033bf3a046606c623acf935e08"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:5ec661f3bb41f0d2a30125ea382f4d5c874bf4f26d4d8e3839bb7e3b3c037b3e"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7970a9cf3002bec2eff5a449ac7398b77e5d171cbb534c47258c72409d0aea74"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f56d67b04790f84e216353341c6b298f1aeb591e1797fe955f606516c640936"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3d0c33cc984d21525f190cb1af479f8da46370df5f2ced1a4e50769ababd0c0"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:88e535c1cf349e57e371529ea9918f811c5eff88161f322bbc06d6222bad6d50"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c3cf9401ce72bc49582c2d80e0a2ee0e573e1c3c998c8bc5f739db8845e8e148"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-win32.whl", hash = "sha256:b63e250da44b15c67b9a34c5c30c81059bde528fc8af092d7f43194469f7c719"}, - {file = "grpcio_tools-1.74.0-cp312-cp312-win_amd64.whl", hash = "sha256:519d7cae085ae6695a8031bb990bf7766a922332b0a531e51342abc5431b78b5"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:e2e22460355adbd0f25fdd7ed8b9ae53afb3875b9d5f34cdf1cf12559418245e"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:0cab5a2c6ae75b555fee8a1a9a9b575205171e1de392fe2d4139a29e67d8f5bb"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:9b18afca48b55832402a716ea4634ef2b68927a8a17ddf4038f51812299255c9"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85f442a9e89e276bf89a0c9c76ea71647a927d967759333c1fa40300c27f7bd"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:051ce925b0b99ae2daf61b3cba19962b8655cc2a72758ce4081b89272206f5a3"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:98c7b8eb0de6984cd7fa7335ce3383b3bb9a1559edc238c811df88008d5d3593"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f8f7d17b7573b9a2a6b4183fa4a56a2ab17370c8d0541e1424cf0c9c6f863434"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:db08b91ea0cd66dc4b1b929100e7aa84c9c10c51573c8282ec1ba05b41f887ef"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-win32.whl", hash = "sha256:4b6c5efb331ae9e5f614437f4a5938459a8a5a1ab3dfe133d2bbdeaba39b894d"}, - {file = "grpcio_tools-1.74.0-cp313-cp313-win_amd64.whl", hash = "sha256:b8324cd67f61f7900d227b36913ee5f0302ba3ba8777c8bc705afa8174098d28"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:39045d07f2582b35685858e1616761b7ad45085e446941c8f9f7c6da523f83c3"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:406ec87e2fd4cb6a40229fbecebcd11973afd4747484bfd5c2bc2ebe81545b7a"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:70725de8cf724c54040502f199ea28df0e8bc480175eacbed8c999c9ad4c0ffe"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:333003e6a9dc304da9e6b086294a8d25212c542284e60699a72b456c515f114c"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5274a4f227e4bd244e3890a9238bda47b169765421ea87f157e4955ea39b4326"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f476f1ec637888a49402a1acff52bb641ec01a8672f60b57c5ee0a1d0e0763d2"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0e8c22e390800175417ec646fac99acaadcbd2f5cdb1a27694995ca86d3bbfd3"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77b400d3c87b1f85be505366e299e00214e2266f604ab58616fc77d016336a24"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-win32.whl", hash = "sha256:fc572f8af2d8f13db4b0091dcf518d6ca5c82ea6f59e8716683bd8aeb729b203"}, - {file = "grpcio_tools-1.74.0-cp39-cp39-win_amd64.whl", hash = "sha256:700d8933684f66dd8edc0324590fa61930bed8f9fb66322a48f5c7ba08386810"}, - {file = "grpcio_tools-1.74.0.tar.gz", hash = "sha256:88ab9eb18b6ac1b4872add6b394073bd8d44eee7c32e4dc60a022e25ffaffb95"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:9b99086080ca394f1da9894ee20dedf7292dd614e985dcba58209a86a42de602"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8d95b5c2394bbbe911cbfc88d15e24c9e174958cb44dad6aa8c46fe367f6cc2a"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d54e9ce2ffc5d01341f0c8898c1471d887ae93d77451884797776e0a505bd503"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c83f39f64c2531336bd8d5c846a2159c9ea6635508b0f8ed3ad0d433e25b53c9"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be480142fae0d986d127d6cb5cbc0357e4124ba22e96bb8b9ece32c48bc2c8ea"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7fefd41fc4ca11fab36f42bdf0f3812252988f8798fca8bec8eae049418deacd"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63551f371082173e259e7f6ec24b5f1fe7d66040fadd975c966647bca605a2d3"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75a2c34584c99ff47e5bb267866e7dec68d30cd3b2158e1ee495bfd6db5ad4f0"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-win32.whl", hash = "sha256:908758789b0a612102c88e8055b7191eb2c4290d5d6fc50fb9cac737f8011ef1"}, + {file = "grpcio_tools-1.76.0-cp310-cp310-win_amd64.whl", hash = "sha256:ec6e49e7c4b2a222eb26d1e1726a07a572b6e629b2cf37e6bb784c9687904a52"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:c6480f6af6833850a85cca1c6b435ef4ffd2ac8e88ef683b4065233827950243"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:c7c23fe1dc09818e16a48853477806ad77dd628b33996f78c05a293065f8210c"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fcdce7f7770ff052cd4e60161764b0b3498c909bde69138f8bd2e7b24a3ecd8f"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b598fdcebffa931c7da5c9e90b5805fff7e9bc6cf238319358a1b85704c57d33"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6a9818ff884796b12dcf8db32126e40ec1098cacf5697f27af9cfccfca1c1fae"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:105e53435b2eed3961da543db44a2a34479d98d18ea248219856f30a0ca4646b"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:454a1232c7f99410d92fa9923c7851fd4cdaf657ee194eac73ea1fe21b406d6e"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ca9ccf667afc0268d45ab202af4556c72e57ea36ebddc93535e1a25cbd4f8aba"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-win32.whl", hash = "sha256:a83c87513b708228b4cad7619311daba65b40937745103cadca3db94a6472d9c"}, + {file = "grpcio_tools-1.76.0-cp311-cp311-win_amd64.whl", hash = "sha256:2ce5e87ec71f2e4041dce4351f2a8e3b713e3bca6b54c69c3fbc6c7ad1f4c386"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:4ad555b8647de1ebaffb25170249f89057721ffb74f7da96834a07b4855bb46a"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:243af7c8fc7ff22a40a42eb8e0f6f66963c1920b75aae2a2ec503a9c3c8b31c1"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8207b890f423142cc0025d041fb058f7286318df6a049565c27869d73534228b"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3dafa34c2626a6691d103877e8a145f54c34cf6530975f695b396ed2fc5c98f8"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:30f1d2dda6ece285b3d9084e94f66fa721ebdba14ae76b2bc4c581c8a166535c"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a889af059dc6dbb82d7b417aa581601316e364fe12eb54c1b8d95311ea50916d"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c3f2c3c44c56eb5d479ab178f0174595d0a974c37dade442f05bb73dfec02f31"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:479ce02dff684046f909a487d452a83a96b4231f7c70a3b218a075d54e951f56"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-win32.whl", hash = "sha256:9ba4bb539936642a44418b38ee6c3e8823c037699e2cb282bd8a44d76a4be833"}, + {file = "grpcio_tools-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:0cd489016766b05f9ed8a6b6596004b62c57d323f49593eac84add032a6d43f7"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:ff48969f81858397ef33a36b326f2dbe2053a48b254593785707845db73c8f44"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa2f030fd0ef17926026ee8e2b700e388d3439155d145c568fa6b32693277613"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bacbf3c54f88c38de8e28f8d9b97c90b76b105fb9ddef05d2c50df01b32b92af"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0d4e4afe9a0e3c24fad2f1af45f98cf8700b2bfc4d790795756ba035d2ea7bdc"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fbbd4e1fc5af98001ceef5e780e8c10921d94941c3809238081e73818ef707f1"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b05efe5a59883ab8292d596657273a60e0c3e4f5a9723c32feb9fc3a06f2f3ef"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:be483b90e62b7892eb71fa1fc49750bee5b2ee35b5ec99dd2b32bed4bedb5d71"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:630cd7fd3e8a63e20703a7ad816979073c2253e591b5422583c27cae2570de73"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-win32.whl", hash = "sha256:eb2567280f9f6da5444043f0e84d8408c7a10df9ba3201026b30e40ef3814736"}, + {file = "grpcio_tools-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:0071b1c0bd0f5f9d292dca4efab32c92725d418e57f9c60acdc33c0172af8b53"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:c53c5719ef2a435997755abde3826ba4087174bd432aa721d8fac781fcea79e4"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:e3db1300d7282264639eeee7243f5de7e6a7c0283f8bf05d66c0315b7b0f0b36"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b018a4b7455a7e8c16d0fdb3655a6ba6c9536da6de6c5d4f11b6bb73378165b"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ec6e4de3866e47cfde56607b1fae83ecc5aa546e06dec53de11f88063f4b5275"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b8da4d828883913f1852bdd67383713ae5c11842f6c70f93f31893eab530aead"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5c120c2cf4443121800e7f9bcfe2e94519fa25f3bb0b9882359dd3b252c78a7b"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8b7df5591d699cd9076065f1f15049e9c3597e0771bea51c8c97790caf5e4197"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a25048c5f984d33e3f5b6ad7618e98736542461213ade1bd6f2fcfe8ce804e3d"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-win32.whl", hash = "sha256:4b77ce6b6c17869858cfe14681ad09ed3a8a80e960e96035de1fd87f78158740"}, + {file = "grpcio_tools-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:2ccd2c8d041351cc29d0fc4a84529b11ee35494a700b535c1f820b642f2a72fc"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:12e1186b0256414a9153d414e4852e7282863a8173ebcee67b3ebe2e1c47a755"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:14c17014d2349b9954385bee487f51979b4b7f9067017099ae45c4f93360d373"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:888346b8b3f4152953626e38629ade9d79940ae85c8fd539ce39b72602191fb2"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0cc0b3edf1f076b2475a98122a51f3f3358b9a740dedff1a9a4dec6477ef96"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cbc16156ba2533e5bad16ff1648213dc3b0a0b0e4de6d17b65e8d60578014002"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f919e480983e610263846dbeab22ad808ad0fac6d4bd15c52e9f7f80d1f08479"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fdd8b382ed21d7d429a9879198743abead0b08ad2249b554fd2f2395450bcdf1"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fe0cc10dd31ac01cadc8af1ce7877cc770bc2a71aa96569bc3c1897c1eac0116"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-win32.whl", hash = "sha256:6ae1d11477b05baead0fce051dece86a0e79d9b592245e0026c998da11c278c4"}, + {file = "grpcio_tools-1.76.0-cp39-cp39-win_amd64.whl", hash = "sha256:2d7679680a456528b9a71a2589cb24d3dd82ec34327281f5695077a567dee433"}, + {file = "grpcio_tools-1.76.0.tar.gz", hash = "sha256:ce80169b5e6adf3e8302f3ebb6cb0c3a9f08089133abca4b76ad67f751f5ad88"}, ] [package.dependencies] -grpcio = ">=1.74.0" +grpcio = ">=1.76.0" protobuf = ">=6.31.1,<7.0.0" setuptools = "*" [[package]] name = "iniconfig" -version = "2.1.0" +version = "2.3.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, - {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, +] + +[[package]] +name = "librt" +version = "0.7.6" +description = "Mypyc runtime library" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:348cd2f3abe20198d7b800a9b7a811744a0b6dca8477fd64667aac79b7d9bd41"}, + {file = "librt-0.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99bf18254075ef5c53f5eeef15c7ac99b562936b3524894fa23c85d97f174d2f"}, + {file = "librt-0.7.6-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47772b93a5b4703a1b07882c1c40099f4085f7dff866c11d0c771daf70ccd338"}, + {file = "librt-0.7.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9fa41f85c2e09db720a1f6c4a4213ec7f1508fc16160b51a75529b8a608a5f9"}, + {file = "librt-0.7.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c4f3b9e0f8335bada7b13f2b23d802d4ad6e91a1dc05292fed6a0e7fcff83f"}, + {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:14643a99247e18a8319eecad8ba78a85859240662c52e9db97e17d461b218465"}, + {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ae8ee9e8b2746de889bbb1cbe3ec7019458c13f55967e84978029f137e5c9916"}, + {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b39a7c7215ab2b1895296cddd917edcfb87764e2f320c8a2be58334329153a0d"}, + {file = "librt-0.7.6-cp310-cp310-win32.whl", hash = "sha256:16a8098951b4b194e48b6ecd97f78c0764a0b689a2d6eaa1643dffa9ae3a2a71"}, + {file = "librt-0.7.6-cp310-cp310-win_amd64.whl", hash = "sha256:6475e6770a5c07151373ba377c706139e02f42340f3f12d46ec9ce0fb0040833"}, + {file = "librt-0.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1f6f40fdc70af8b5c779f7bf6b1231f32355997b0d144ec3c0e0ac4bfd5cc35"}, + {file = "librt-0.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3484b82e17e6cab3c6a0d69a2e30937b7078a21a64544fab1a723bd34ba5044f"}, + {file = "librt-0.7.6-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:52b89d0e2e2bdc933f0646656ed70de12ce2d668a8e18a0795f71e7dcddf668e"}, + {file = "librt-0.7.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39a7e2710ef244dbdf53722e6cc396e8b8a88f08759c47c8db7424c8f45b0983"}, + {file = "librt-0.7.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:915fb88d5916c217a9513c4206704a039d52904d88bedbfafbb2180455b129b8"}, + {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:832e849dde48ec9d013a819c26614585d0b0881fc5953352c837ec6ffa05f6ce"}, + {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc20819f23581a21fa0bde0401dfa72a92b94604947dd9d653673ae5f3120576"}, + {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c168087407b0316c46976cd0391f7ec3f4f6b28561ba7a628a45bef8a560a5f9"}, + {file = "librt-0.7.6-cp311-cp311-win32.whl", hash = "sha256:eff7366ff0bac64b33570bc315863b2109ad960ede516420e667aac21bc18640"}, + {file = "librt-0.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:b925fc7fb9266eee7cb7708c877f06c02780ee5d373aa6bb1b30558f53fb854f"}, + {file = "librt-0.7.6-cp311-cp311-win_arm64.whl", hash = "sha256:1f206dabe9fe393f32ae070a8836e36b3eb455a6e48fd46758435ecea85ee0fd"}, + {file = "librt-0.7.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25c4a6c9ca7cca1feb2a0a07e26bfb2d9d23163400a1fbfab2091173abd05238"}, + {file = "librt-0.7.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f907832b7e79343020e01802c724acbdbd3925e390928e2a89f9eb15e90b232"}, + {file = "librt-0.7.6-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47c5113e2b4987cdc970184f0147e669759e89ba321218399b5b0fcc87f3c3eb"}, + {file = "librt-0.7.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27774cc3d264b5ca52cb6a73bb890b320b826aafda338e547c390f3dfb3c2296"}, + {file = "librt-0.7.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:917fe57d74d3316e4ac0894535667ba81f6840abe76da8b2c4d9ce3e17979f0b"}, + {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f0effc2e5ccec48a0d4eea961a8f0aa161974c6aa61c85ff9b381a8c28a29c38"}, + {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d975bcf09c0175095af23f21736a9ab9a5c78d60d3953b1b9fa5a3806b928a05"}, + {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:424c3de6e2a2118d12ee34c36900f7fc4e768244ba62ae8280e8210cb675ed6c"}, + {file = "librt-0.7.6-cp312-cp312-win32.whl", hash = "sha256:bfa55ad58926706e64321302a95edbd9eb9b221bf5b7027de97ffa31874e7f4f"}, + {file = "librt-0.7.6-cp312-cp312-win_amd64.whl", hash = "sha256:8882e33b9f7a21b413431aabd6cb708f66ec5afd6f5adc0e96f82a2c93762baf"}, + {file = "librt-0.7.6-cp312-cp312-win_arm64.whl", hash = "sha256:e39187fb7dda1905198ee7a49a61d12977428672dba3bb47494cd3a440a36198"}, + {file = "librt-0.7.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eed0eea822597dfa2ddccd8ceafcfa667d7263f0dc700287074ab0d9179f5301"}, + {file = "librt-0.7.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:477bab707f8a9219d0bac1a2d58aca94ef5700929cb118f9507b2da8777dfe29"}, + {file = "librt-0.7.6-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8ede6b2e81cfba60056bcc6e0f1a3336de1bfa3cde68a31b76d15af236727c23"}, + {file = "librt-0.7.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aec3efd52fa236321a5249c39e094ff295feec200aae3407144aabae1e520034"}, + {file = "librt-0.7.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb2d4dcf5b92e4215db8297dc34f69230295929701d2cc6782a4ea7ca4821604"}, + {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5fb61bccda79f5396731f29a5e63da3c864510c00ebce71d5d17fa072b02b616"}, + {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:feff88e26e194cb184349733412dea3ef37907f4eec105754bcda905012d61c3"}, + {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7537e42da6a79294f7b9c081b42c5bdbfcdf1c0e98a3933c3ed7bf710d7a3780"}, + {file = "librt-0.7.6-cp313-cp313-win32.whl", hash = "sha256:589a5398498c5702be6706a29e7d235307806cea42fd219fb0b4c4ee32a198c0"}, + {file = "librt-0.7.6-cp313-cp313-win_amd64.whl", hash = "sha256:42544d7e16466d1341db6f5eb0df6ee958f4d81f7648405254c09be66f6c6729"}, + {file = "librt-0.7.6-cp313-cp313-win_arm64.whl", hash = "sha256:6f55b97725d6678b57437411d5a6e8909b7c55ef6c71061f92899c142957edb3"}, + {file = "librt-0.7.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c5b627029484a12005b79265bf3b1df1c5b37f4c993db844342b1d7ebff73b47"}, + {file = "librt-0.7.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:33520a4f90c0e6784c5db7ebb9fba7c1f4ed8ae4f65f56fc85e2809f2c674f8a"}, + {file = "librt-0.7.6-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e8aeb9cd632dd58ac084d1a180543e48006c9089a528accdc8f06d1e62e986a2"}, + {file = "librt-0.7.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c412fe2b02a1b45c3005da539c1ac2fcb99f7453574a88556397977c838524b6"}, + {file = "librt-0.7.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32b25e29e55bd277b1b48e4b699d09678576d6dfb3175d317758c0724a4bfef"}, + {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:97411878f63f8263fdbfe9107a3938eb75694a76bdc40a9c785ab293e02b3351"}, + {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:93a4f930e19886b3ac9dacb932261b399cfcaef15b5162d508b163bf9e2820d5"}, + {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:89f6bc8ef0a51fe53291f53dfb05cc832019caf6fdf2969ecfa28c3472bb863a"}, + {file = "librt-0.7.6-cp314-cp314-win32.whl", hash = "sha256:5b06d83b1d2a0cfce9d3b547ceb2c761bd98f529f5285d4f9a26bb9fc0bd5f92"}, + {file = "librt-0.7.6-cp314-cp314-win_amd64.whl", hash = "sha256:69ef674966dd1932f9548e1718b898a6022280eee7c0e16b0b0de40b0febf065"}, + {file = "librt-0.7.6-cp314-cp314-win_arm64.whl", hash = "sha256:f2c8799f5c4236104eadede723180d218212b44027cb7b909ef1e4b7b72e1480"}, + {file = "librt-0.7.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a4d24d44febb9f114fe81c831639a6acba8e957f39d969b81db444b978bfd8d0"}, + {file = "librt-0.7.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d4510cb559347d877f43ae3b0d0a80a4919d397ba4f1cef5a67b273677164f71"}, + {file = "librt-0.7.6-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:77ddc993faa13ba38e24d8521d353d80dbc67d271fda5a54563ce549a93f6b95"}, + {file = "librt-0.7.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4732e76f39ebb6dd2df7189f3bd8a7cea2050cf1acd6b3d70b4a66551773d1f8"}, + {file = "librt-0.7.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3fb616315e1b7267bd269802bd9c1da39c59fdd921d9963979ab07559c6da32a"}, + {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6dda44c6aab4a950b7867088bc03adfd0e74464a71001e3d455c6025bf64c6bf"}, + {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:047667397e8006738e382cbff9c2e186ed41aff81f684a3c9eba74f4364c25b9"}, + {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5ef75f4afc611e63a233771787f70444e13d4ddfac65a107f8a87fc7e27a9303"}, + {file = "librt-0.7.6-cp314-cp314t-win32.whl", hash = "sha256:9e45ac54fdb4ee1123baadc3485175aeba2fd6e13fcee325eb8f532de926760e"}, + {file = "librt-0.7.6-cp314-cp314t-win_amd64.whl", hash = "sha256:93833cf60ad83e60fcae6c1dbed5a33877ee9f9c2fc0e882de958682d23a7d3c"}, + {file = "librt-0.7.6-cp314-cp314t-win_arm64.whl", hash = "sha256:715778320d017a7725e0842579b26e7059a231a0000b0f770d7317851819cd86"}, + {file = "librt-0.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f3476e1d759441ac4995e257ac09fbc2b92cb917b93c9a6802dca08f3c31032"}, + {file = "librt-0.7.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:601d688a79bd23e59c7a035a13289113f3d10de3a124dc89f7d140cd220c4bea"}, + {file = "librt-0.7.6-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b7181f7811455d7908c4370bfb9ad25c9422b8cd4f54d66d9c1ceadcd8cad6d1"}, + {file = "librt-0.7.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4d6e9a36b8a31fcdb8dfbf0a5468fb0b2b584545e1afe68e724b45e3e0512cf7"}, + {file = "librt-0.7.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8accc9b377794676e5701530def592edaca7839f0a3537012286948fad0d8139"}, + {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5cb3a56037dd6cbff58592d4f9a5a227690b68832b9040f6616eae082a06984b"}, + {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ced25e7963478a59969bb49a00c08c179f4aa47e54927b9453a871793af1b8dd"}, + {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:23705b7cb3f0e9dd725f0f0d1e36e0cea8e7099aceb6f5baa345f0ddc0e2aa18"}, + {file = "librt-0.7.6-cp39-cp39-win32.whl", hash = "sha256:155322aaf116f9a983930fc39021fb56887fa8695adc718f012325d45f08e09a"}, + {file = "librt-0.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:a2ccd5086fef7ac26bc9fb1477cf04a227d3712de04eb4f44c9623bef0cce64e"}, + {file = "librt-0.7.6.tar.gz", hash = "sha256:0ba0a7a2ae3911417b1f2186836ff8ce3d01caffc665d6b5295c95f9f5606cdd"}, ] [[package]] name = "mypy" -version = "1.18.1" +version = "1.19.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["dev"] files = [ - {file = "mypy-1.18.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2761b6ae22a2b7d8e8607fb9b81ae90bc2e95ec033fd18fa35e807af6c657763"}, - {file = "mypy-1.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b10e3ea7f2eec23b4929a3fabf84505da21034a4f4b9613cda81217e92b74f3"}, - {file = "mypy-1.18.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:261fbfced030228bc0f724d5d92f9ae69f46373bdfd0e04a533852677a11dbea"}, - {file = "mypy-1.18.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4dc6b34a1c6875e6286e27d836a35c0d04e8316beac4482d42cfea7ed2527df8"}, - {file = "mypy-1.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1cabb353194d2942522546501c0ff75c4043bf3b63069cb43274491b44b773c9"}, - {file = "mypy-1.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:738b171690c8e47c93569635ee8ec633d2cdb06062f510b853b5f233020569a9"}, - {file = "mypy-1.18.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c903857b3e28fc5489e54042684a9509039ea0aedb2a619469438b544ae1961"}, - {file = "mypy-1.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a0c8392c19934c2b6c65566d3a6abdc6b51d5da7f5d04e43f0eb627d6eeee65"}, - {file = "mypy-1.18.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f85eb7efa2ec73ef63fc23b8af89c2fe5bf2a4ad985ed2d3ff28c1bb3c317c92"}, - {file = "mypy-1.18.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:82ace21edf7ba8af31c3308a61dc72df30500f4dbb26f99ac36b4b80809d7e94"}, - {file = "mypy-1.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a2dfd53dfe632f1ef5d161150a4b1f2d0786746ae02950eb3ac108964ee2975a"}, - {file = "mypy-1.18.1-cp311-cp311-win_amd64.whl", hash = "sha256:320f0ad4205eefcb0e1a72428dde0ad10be73da9f92e793c36228e8ebf7298c0"}, - {file = "mypy-1.18.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:502cde8896be8e638588b90fdcb4c5d5b8c1b004dfc63fd5604a973547367bb9"}, - {file = "mypy-1.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7509549b5e41be279afc1228242d0e397f1af2919a8f2877ad542b199dc4083e"}, - {file = "mypy-1.18.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5956ecaabb3a245e3f34100172abca1507be687377fe20e24d6a7557e07080e2"}, - {file = "mypy-1.18.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8750ceb014a96c9890421c83f0db53b0f3b8633e2864c6f9bc0a8e93951ed18d"}, - {file = "mypy-1.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fb89ea08ff41adf59476b235293679a6eb53a7b9400f6256272fb6029bec3ce5"}, - {file = "mypy-1.18.1-cp312-cp312-win_amd64.whl", hash = "sha256:2657654d82fcd2a87e02a33e0d23001789a554059bbf34702d623dafe353eabf"}, - {file = "mypy-1.18.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d70d2b5baf9b9a20bc9c730015615ae3243ef47fb4a58ad7b31c3e0a59b5ef1f"}, - {file = "mypy-1.18.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8367e33506300f07a43012fc546402f283c3f8bcff1dc338636affb710154ce"}, - {file = "mypy-1.18.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:913f668ec50c3337b89df22f973c1c8f0b29ee9e290a8b7fe01cc1ef7446d42e"}, - {file = "mypy-1.18.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a0e70b87eb27b33209fa4792b051c6947976f6ab829daa83819df5f58330c71"}, - {file = "mypy-1.18.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c378d946e8a60be6b6ede48c878d145546fb42aad61df998c056ec151bf6c746"}, - {file = "mypy-1.18.1-cp313-cp313-win_amd64.whl", hash = "sha256:2cd2c1e0f3a7465f22731987fff6fc427e3dcbb4ca5f7db5bbeaff2ff9a31f6d"}, - {file = "mypy-1.18.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ba24603c58e34dd5b096dfad792d87b304fc6470cbb1c22fd64e7ebd17edcc61"}, - {file = "mypy-1.18.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ed36662fb92ae4cb3cacc682ec6656208f323bbc23d4b08d091eecfc0863d4b5"}, - {file = "mypy-1.18.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:040ecc95e026f71a9ad7956fea2724466602b561e6a25c2e5584160d3833aaa8"}, - {file = "mypy-1.18.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:937e3ed86cb731276706e46e03512547e43c391a13f363e08d0fee49a7c38a0d"}, - {file = "mypy-1.18.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1f95cc4f01c0f1701ca3b0355792bccec13ecb2ec1c469e5b85a6ef398398b1d"}, - {file = "mypy-1.18.1-cp314-cp314-win_amd64.whl", hash = "sha256:e4f16c0019d48941220ac60b893615be2f63afedaba6a0801bdcd041b96991ce"}, - {file = "mypy-1.18.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e37763af63a8018308859bc83d9063c501a5820ec5bd4a19f0a2ac0d1c25c061"}, - {file = "mypy-1.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:51531b6e94f34b8bd8b01dee52bbcee80daeac45e69ec5c36e25bce51cbc46e6"}, - {file = "mypy-1.18.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbfdea20e90e9c5476cea80cfd264d8e197c6ef2c58483931db2eefb2f7adc14"}, - {file = "mypy-1.18.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99f272c9b59f5826fffa439575716276d19cbf9654abc84a2ba2d77090a0ba14"}, - {file = "mypy-1.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8c05a7f8c00300a52f3a4fcc95a185e99bf944d7e851ff141bae8dcf6dcfeac4"}, - {file = "mypy-1.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:2fbcecbe5cf213ba294aa8c0b8c104400bf7bb64db82fb34fe32a205da4b3531"}, - {file = "mypy-1.18.1-py3-none-any.whl", hash = "sha256:b76a4de66a0ac01da1be14ecc8ae88ddea33b8380284a9e3eae39d57ebcbe26e"}, - {file = "mypy-1.18.1.tar.gz", hash = "sha256:9e988c64ad3ac5987f43f5154f884747faf62141b7f842e87465b45299eea5a9"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, ] [package.dependencies] +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} mypy_extensions = ">=1.0.0" pathspec = ">=0.9.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -257,7 +368,7 @@ version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -358,7 +469,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -402,21 +513,22 @@ poetry-plugin = ["poetry (>=1.2.0,<3.0.0) ; python_version < \"4.0\""] [[package]] name = "protobuf" -version = "6.32.1" +version = "6.33.2" description = "" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "protobuf-6.32.1-cp310-abi3-win32.whl", hash = "sha256:a8a32a84bc9f2aad712041b8b366190f71dde248926da517bde9e832e4412085"}, - {file = "protobuf-6.32.1-cp310-abi3-win_amd64.whl", hash = "sha256:b00a7d8c25fa471f16bc8153d0e53d6c9e827f0953f3c09aaa4331c718cae5e1"}, - {file = "protobuf-6.32.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8c7e6eb619ffdf105ee4ab76af5a68b60a9d0f66da3ea12d1640e6d8dab7281"}, - {file = "protobuf-6.32.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:2f5b80a49e1eb7b86d85fcd23fe92df154b9730a725c3b38c4e43b9d77018bf4"}, - {file = "protobuf-6.32.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:b1864818300c297265c83a4982fd3169f97122c299f56a56e2445c3698d34710"}, - {file = "protobuf-6.32.1-cp39-cp39-win32.whl", hash = "sha256:68ff170bac18c8178f130d1ccb94700cf72852298e016a2443bdb9502279e5f1"}, - {file = "protobuf-6.32.1-cp39-cp39-win_amd64.whl", hash = "sha256:d0975d0b2f3e6957111aa3935d08a0eb7e006b1505d825f862a1fffc8348e122"}, - {file = "protobuf-6.32.1-py3-none-any.whl", hash = "sha256:2601b779fc7d32a866c6b4404f9d42a3f67c5b9f3f15b4db3cccabe06b95c346"}, - {file = "protobuf-6.32.1.tar.gz", hash = "sha256:ee2469e4a021474ab9baafea6cd070e5bf27c7d29433504ddea1a4ee5850f68d"}, + {file = "protobuf-6.33.2-cp310-abi3-win32.whl", hash = "sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d"}, + {file = "protobuf-6.33.2-cp310-abi3-win_amd64.whl", hash = "sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4"}, + {file = "protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872"}, + {file = "protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f"}, + {file = "protobuf-6.33.2-cp39-cp39-win32.whl", hash = "sha256:7109dcc38a680d033ffb8bf896727423528db9163be1b6a02d6a49606dcadbfe"}, + {file = "protobuf-6.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:2981c58f582f44b6b13173e12bb8656711189c2a70250845f264b877f00b1913"}, + {file = "protobuf-6.33.2-py3-none-any.whl", hash = "sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c"}, + {file = "protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4"}, ] [[package]] @@ -460,65 +572,85 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests [[package]] name = "pyyaml" -version = "6.0.2" +version = "6.0.3" description = "YAML parser and emitter for Python" optional = false 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"}, + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, ] [[package]] @@ -587,45 +719,55 @@ type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.deve [[package]] name = "tomli" -version = "2.2.1" +version = "2.3.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] markers = "python_version == \"3.10\"" files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, + {file = "tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45"}, + {file = "tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf"}, + {file = "tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845"}, + {file = "tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c"}, + {file = "tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456"}, + {file = "tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac"}, + {file = "tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f"}, + {file = "tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8"}, + {file = "tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6"}, + {file = "tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876"}, + {file = "tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b"}, + {file = "tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b"}, + {file = "tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f"}, + {file = "tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05"}, + {file = "tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606"}, + {file = "tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e"}, + {file = "tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc"}, + {file = "tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879"}, + {file = "tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005"}, + {file = "tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463"}, + {file = "tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77"}, + {file = "tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530"}, + {file = "tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67"}, + {file = "tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f"}, + {file = "tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0"}, + {file = "tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba"}, + {file = "tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b"}, + {file = "tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549"}, ] [[package]] @@ -643,4 +785,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">=3.10" -content-hash = "7f10797711abb1aa70d82a3bfa3ebc1dc7d7f85ded1ad8b46ad944960af6202c" +content-hash = "9832bf7331d75d34ca299b619b178148b10bbfab5fe31b6638b6c717542d964b" diff --git a/pyproject.toml b/pyproject.toml index 470f014..8012026 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,12 +18,11 @@ build-backend = "poetry.core.masonry.api" python = ">=3.10" grpcio-tools = "^1.71.0" grpcio = "^1.71.0" -mypy = "^1.18.1" grpcio-reflection = "^1.74.0" [tool.poetry.group.dev.dependencies] +mypy = "^1.18.1" poethepoet = "^0.34.0" -mypy = "^1.15.0" pytest = "^8.3.5" ruff = "^0.11.7" schedule = "^1.2.2" From a88713130ca0783bc91a8c10828269a356f400ce Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Fri, 2 Jan 2026 00:14:17 +0000 Subject: [PATCH 11/14] Migrated to pypright --- .../simpletrigger/simpletrigger/__init__.py | 21 -- .../simpletrigger/simpletrigger/processor.py | 8 +- orca_python/envs.py | 14 +- orca_python/exceptions.py | 1 - orca_python/main.py | 22 +- orca_python/registry/algorithms.py | 46 ++-- orca_python/registry/metadata_fields.py | 49 ++--- orca_python/registry/window_types.py | 12 +- poetry.lock | 196 +++--------------- pyproject.toml | 14 +- pyrightconfig.json | 24 +++ 11 files changed, 134 insertions(+), 273 deletions(-) create mode 100644 pyrightconfig.json diff --git a/examples/simpletrigger/simpletrigger/__init__.py b/examples/simpletrigger/simpletrigger/__init__.py index 8200849..e69de29 100644 --- a/examples/simpletrigger/simpletrigger/__init__.py +++ b/examples/simpletrigger/simpletrigger/__init__.py @@ -1,21 +0,0 @@ -import os -from pathlib import Path - - -def ensure_orca_link(): - # This assumes the user runs the script from their project root - project_orca = Path.cwd() / ".orca" - - # 2. Locate where your package wants the symlink to be - package_link = Path(__file__).parent / "orca_link" - - if project_orca.exists() and project_orca.is_dir(): - if not package_link.exists(): - try: - os.symlink(project_orca, package_link) - print(f"Linked {project_orca} to {package_link}") - except OSError as e: - print(f"Could not create symlink: {e}") - else: - # Handle the case where the folder is missing - pass diff --git a/examples/simpletrigger/simpletrigger/processor.py b/examples/simpletrigger/simpletrigger/processor.py index 0774c44..3d8326a 100644 --- a/examples/simpletrigger/simpletrigger/processor.py +++ b/examples/simpletrigger/simpletrigger/processor.py @@ -7,7 +7,6 @@ MetadataField, ExecutionParams, ) -from orca_python.registry.algorithms import shaft_freq_estimator_27649598 proc = Processor("ml") @@ -24,12 +23,7 @@ ) -@proc.algorithm( - "MyAlgo", - "1.0.0", - Every30Second, - depends_on=[shaft_freq_estimator_27649598] -) +@proc.algorithm("MyAlgo", "1.0.0", "Simple algorithm", Every30Second) def my_algorithm(params: ExecutionParams) -> StructResult: route_id = params.window.metadata.get("route_id", None) bus_id = params.window.metadata.get("bus_id", None) diff --git a/orca_python/envs.py b/orca_python/envs.py index a2f9abc..122c352 100644 --- a/orca_python/envs.py +++ b/orca_python/envs.py @@ -161,6 +161,16 @@ def getenvs(strict: bool = False) -> Tuple[bool, str, str, int | None, int | Non is_production, ORCA_CORE, PROCESSOR_HOST, - PROCESSOR_PORT, - PROCESSOR_EXTERNAL_PORT, + _PROCESSOR_PORT, + _PROCESSOR_EXTERNAL_PORT, ) = getenvs(strict=True) + + if _PROCESSOR_PORT is None: + MissingEnvVar("PROCESSOR_PORT required") + else: + PROCESSOR_PORT = _PROCESSOR_PORT + + if _PROCESSOR_EXTERNAL_PORT is None: + MissingEnvVar("PROCESSOR_EXTERNAL_PORT required") + else: + PROCESSOR_EXTERNAL_PORT = _PROCESSOR_EXTERNAL_PORT diff --git a/orca_python/exceptions.py b/orca_python/exceptions.py index de5f250..f80844f 100644 --- a/orca_python/exceptions.py +++ b/orca_python/exceptions.py @@ -36,4 +36,3 @@ class BadConfigFile(BaseOrcaException): class BrokenRemoteAlgorithmStubs(BaseOrcaException): """Raised when remote algorithm stubs cannot be properly parsed and read""" - diff --git a/orca_python/main.py b/orca_python/main.py index 9003634..6c40edc 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -35,6 +35,7 @@ Optional, Protocol, Generator, + TypedDict, AsyncGenerator, ) from inspect import signature @@ -68,6 +69,11 @@ LOGGER = logging.getLogger(__name__) +class StubInfo(TypedDict): + annotations: Dict[str, Any] + metadata: Dict[str, Any] + + @dataclass(frozen=True) class MetadataField: name: str @@ -196,8 +202,6 @@ def __init__( origin=window.origin, metadata=json_format.MessageToDict(window.metadata), ) - else: - raise InvalidWindowArgument(f"window of type {type(window)} not handled") self.dependencies = dependencies @@ -719,14 +723,14 @@ def Register(self) -> None: # Add remote dependencies if they exist if algorithm.full_name in self._algorithmsSingleton._remoteDependencies: - for dep in self._algorithmsSingleton._remoteDependencies[ + for remote_dep in self._algorithmsSingleton._remoteDependencies[ algorithm.full_name ]: dep_msg = algo_msg.dependencies.add() - dep_msg.name = dep.Name - dep_msg.version = dep.Version - dep_msg.processor_name = dep.ProcessorName - dep_msg.processor_runtime = dep.ProcessorRuntime + dep_msg.name = remote_dep.Name + dep_msg.version = remote_dep.Version + dep_msg.processor_name = remote_dep.ProcessorName + dep_msg.processor_runtime = remote_dep.ProcessorRuntime try: if envs.is_production: # secure channel with TLS @@ -742,10 +746,6 @@ def Register(self) -> None: stub = service_pb2_grpc.OrcaCoreStub(channel) response = stub.RegisterProcessor(registration_request) LOGGER.info(f"Algorithm registration response received: {response}") - except grpc._channel._InactiveRpcError as e: - print() - print(e.details()) - sys.exit(1) except Exception as e: print() print(e) diff --git a/orca_python/registry/algorithms.py b/orca_python/registry/algorithms.py index b2e8751..e2f2744 100644 --- a/orca_python/registry/algorithms.py +++ b/orca_python/registry/algorithms.py @@ -1,22 +1,39 @@ import re import ast import json -from typing import Any from pathlib import Path +from orca_python.main import StubInfo -def _load_stub_metadata(func_name: str) -> dict[str, Any]: + +class StubAlgorithm: + __orca_is_remote__ = True + + def __init__(self, func_name: str, stub_info: StubInfo): + self.__name__ = func_name + self.__annotations__ = stub_info["annotations"] + self.__orca_metadata__ = stub_info["metadata"] + + def __call__(self, *args, **kwargs) -> None: + _, _ = args, kwargs + raise NotImplementedError( + f"{self.__name__} is only available as a remote algorithm. " + f"Metadata: {self.__orca_metadata__}" + ) + + +def _load_stub_metadata(func_name: str) -> StubInfo: """Load annotations and metadata from the .pyi stub file.""" stub_file = Path.cwd() / ".orca" / "orca_python" / "registry" / "algorithms.pyi" if not stub_file.exists(): - return {"annotations": {}, "metadata": {}} + return StubInfo(annotations={}, metadata={}) try: content = stub_file.read_text() tree = ast.parse(content) - result = {"annotations": {}, "metadata": {}} + result: StubInfo = {"annotations": {}, "metadata": {}} # get the function node for node in ast.walk(tree): @@ -48,28 +65,13 @@ def _load_stub_metadata(func_name: str) -> dict[str, Any]: except Exception as e: print(f"Error parsing stub: {e}") - return {"annotations": {}, "metadata": {}} + return StubInfo(annotations={}, metadata={}) -def __getattr__(name): +def __getattr__(name: str) -> StubAlgorithm: if name.startswith("_"): raise AttributeError(f"module '{__name__}' has no attribute '{name}'") stub_info = _load_stub_metadata(name) - class StubAlgorithm: - __orca_is_remote__ = True - - def __init__(self, func_name: str): - self.__name__ = func_name - self.__annotations__ = stub_info["annotations"] - self.__orca_metadata__ = stub_info["metadata"] - - def __call__(self, *args, **kwargs): - _, _ = args, kwargs - raise NotImplementedError( - f"{self.__name__} is only available as a remote algorithm. " - f"Metadata: {self.__orca_metadata__}" - ) - - return StubAlgorithm(name) + return StubAlgorithm(name, stub_info) diff --git a/orca_python/registry/metadata_fields.py b/orca_python/registry/metadata_fields.py index a6c0ded..8b1d1e9 100644 --- a/orca_python/registry/metadata_fields.py +++ b/orca_python/registry/metadata_fields.py @@ -1,13 +1,32 @@ import re import ast import json -from typing import Any from pathlib import Path +from orca_python.main import StubInfo from orca_python.exceptions import BrokenRemoteAlgorithmStubs -def _load_stub_metadata(obj_name: str) -> dict[str, Any]: +class StubMetadataField: + __orca_is_remote__ = True + name: str + description: str + + def __init__(self, field_name: str, stub_info: StubInfo): + self.__name__ = field_name + self.__annotations__ = stub_info["annotations"] + self.__orca_metadata__ = stub_info["metadata"] + name = stub_info["metadata"].get("Name", None) + description = stub_info["metadata"].get("Description", None) + if name is None or description is None: + raise BrokenRemoteAlgorithmStubs( + "Stubs appear broken. Regenerate with `orca sync`." + ) + self.name = name + self.description = description + + +def _load_stub_metadata(obj_name: str) -> StubInfo: """Load annotations and metadata from the .pyi stub file.""" stub_file = ( Path.cwd() / ".orca" / "orca_python" / "registry" / "metadata_fields.pyi" @@ -20,7 +39,7 @@ def _load_stub_metadata(obj_name: str) -> dict[str, Any]: content = stub_file.read_text() tree = ast.parse(content) - result = {"annotations": {}, "metadata": {}} + result: StubInfo = {"annotations": {}, "metadata": {}} # get the annotated assignment node (e.g., asset_id: MetadataField) for node in ast.walk(tree): @@ -48,31 +67,13 @@ def _load_stub_metadata(obj_name: str) -> dict[str, Any]: except Exception as e: print(f"Error parsing stub: {e}") - return {"annotations": {}, "metadata": {}} + return StubInfo(annotations={}, metadata={}) -def __getattr__(name): +def __getattr__(name: str) -> StubMetadataField: if name.startswith("_"): raise AttributeError(f"module '{__name__}' has no attribute '{name}'") stub_info = _load_stub_metadata(name) - class StubMetadataField: - __orca_is_remote__ = True - name: str - description: str - - def __init__(self, field_name: str): - self.__name__ = field_name - self.__annotations__ = stub_info["annotations"] - self.__orca_metadata__ = stub_info["metadata"] - name = stub_info["metadata"].get("Name", None) - description = stub_info["metadata"].get("Description", None) - if name is None or description is None: - raise BrokenRemoteAlgorithmStubs( - "Stubs appear broken. Regenerate with `orca sync`." - ) - self.name = name - self.description = description - - return StubMetadataField(name) + return StubMetadataField(name, stub_info) diff --git a/orca_python/registry/window_types.py b/orca_python/registry/window_types.py index d1e366a..246cd6d 100644 --- a/orca_python/registry/window_types.py +++ b/orca_python/registry/window_types.py @@ -1,25 +1,25 @@ import re import ast import json -from typing import Any, List +from typing import List from pathlib import Path from dataclasses import dataclass -from orca_python.main import BrokenRemoteAlgorithmStubs +from orca_python.main import StubInfo, BrokenRemoteAlgorithmStubs -def _load_stub_metadata(obj_name: str) -> dict[str, Any]: +def _load_stub_metadata(obj_name: str) -> StubInfo: """Load annotations and metadata from the .pyi stub file.""" stub_file = Path.cwd() / ".orca" / "orca_python" / "registry" / "window_types.pyi" if not stub_file.exists(): - return {"annotations": {}, "metadata": {}} + return StubInfo(annotations={}, metadata={}) try: content = stub_file.read_text() tree = ast.parse(content) - result = {"annotations": {}, "metadata": {}} + result: StubInfo = {"annotations": {}, "metadata": {}} # get the annotated assignment node for node in ast.walk(tree): @@ -47,7 +47,7 @@ def _load_stub_metadata(obj_name: str) -> dict[str, Any]: except Exception as e: print(f"Error parsing stub: {e}") - return {"annotations": {}, "metadata": {}} + return StubInfo(annotations={}, metadata={}) def __getattr__(name): diff --git a/poetry.lock b/poetry.lock index d300e0c..26badb5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -214,164 +214,15 @@ files = [ ] [[package]] -name = "librt" -version = "0.7.6" -description = "Mypyc runtime library" +name = "nodeenv" +version = "1.10.0" +description = "Node.js virtual environment builder" optional = false -python-versions = ">=3.9" -groups = ["dev"] -markers = "platform_python_implementation != \"PyPy\"" -files = [ - {file = "librt-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:348cd2f3abe20198d7b800a9b7a811744a0b6dca8477fd64667aac79b7d9bd41"}, - {file = "librt-0.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99bf18254075ef5c53f5eeef15c7ac99b562936b3524894fa23c85d97f174d2f"}, - {file = "librt-0.7.6-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47772b93a5b4703a1b07882c1c40099f4085f7dff866c11d0c771daf70ccd338"}, - {file = "librt-0.7.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9fa41f85c2e09db720a1f6c4a4213ec7f1508fc16160b51a75529b8a608a5f9"}, - {file = "librt-0.7.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c4f3b9e0f8335bada7b13f2b23d802d4ad6e91a1dc05292fed6a0e7fcff83f"}, - {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:14643a99247e18a8319eecad8ba78a85859240662c52e9db97e17d461b218465"}, - {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ae8ee9e8b2746de889bbb1cbe3ec7019458c13f55967e84978029f137e5c9916"}, - {file = "librt-0.7.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b39a7c7215ab2b1895296cddd917edcfb87764e2f320c8a2be58334329153a0d"}, - {file = "librt-0.7.6-cp310-cp310-win32.whl", hash = "sha256:16a8098951b4b194e48b6ecd97f78c0764a0b689a2d6eaa1643dffa9ae3a2a71"}, - {file = "librt-0.7.6-cp310-cp310-win_amd64.whl", hash = "sha256:6475e6770a5c07151373ba377c706139e02f42340f3f12d46ec9ce0fb0040833"}, - {file = "librt-0.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1f6f40fdc70af8b5c779f7bf6b1231f32355997b0d144ec3c0e0ac4bfd5cc35"}, - {file = "librt-0.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3484b82e17e6cab3c6a0d69a2e30937b7078a21a64544fab1a723bd34ba5044f"}, - {file = "librt-0.7.6-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:52b89d0e2e2bdc933f0646656ed70de12ce2d668a8e18a0795f71e7dcddf668e"}, - {file = "librt-0.7.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39a7e2710ef244dbdf53722e6cc396e8b8a88f08759c47c8db7424c8f45b0983"}, - {file = "librt-0.7.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:915fb88d5916c217a9513c4206704a039d52904d88bedbfafbb2180455b129b8"}, - {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:832e849dde48ec9d013a819c26614585d0b0881fc5953352c837ec6ffa05f6ce"}, - {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc20819f23581a21fa0bde0401dfa72a92b94604947dd9d653673ae5f3120576"}, - {file = "librt-0.7.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c168087407b0316c46976cd0391f7ec3f4f6b28561ba7a628a45bef8a560a5f9"}, - {file = "librt-0.7.6-cp311-cp311-win32.whl", hash = "sha256:eff7366ff0bac64b33570bc315863b2109ad960ede516420e667aac21bc18640"}, - {file = "librt-0.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:b925fc7fb9266eee7cb7708c877f06c02780ee5d373aa6bb1b30558f53fb854f"}, - {file = "librt-0.7.6-cp311-cp311-win_arm64.whl", hash = "sha256:1f206dabe9fe393f32ae070a8836e36b3eb455a6e48fd46758435ecea85ee0fd"}, - {file = "librt-0.7.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25c4a6c9ca7cca1feb2a0a07e26bfb2d9d23163400a1fbfab2091173abd05238"}, - {file = "librt-0.7.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f907832b7e79343020e01802c724acbdbd3925e390928e2a89f9eb15e90b232"}, - {file = "librt-0.7.6-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:47c5113e2b4987cdc970184f0147e669759e89ba321218399b5b0fcc87f3c3eb"}, - {file = "librt-0.7.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27774cc3d264b5ca52cb6a73bb890b320b826aafda338e547c390f3dfb3c2296"}, - {file = "librt-0.7.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:917fe57d74d3316e4ac0894535667ba81f6840abe76da8b2c4d9ce3e17979f0b"}, - {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f0effc2e5ccec48a0d4eea961a8f0aa161974c6aa61c85ff9b381a8c28a29c38"}, - {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d975bcf09c0175095af23f21736a9ab9a5c78d60d3953b1b9fa5a3806b928a05"}, - {file = "librt-0.7.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:424c3de6e2a2118d12ee34c36900f7fc4e768244ba62ae8280e8210cb675ed6c"}, - {file = "librt-0.7.6-cp312-cp312-win32.whl", hash = "sha256:bfa55ad58926706e64321302a95edbd9eb9b221bf5b7027de97ffa31874e7f4f"}, - {file = "librt-0.7.6-cp312-cp312-win_amd64.whl", hash = "sha256:8882e33b9f7a21b413431aabd6cb708f66ec5afd6f5adc0e96f82a2c93762baf"}, - {file = "librt-0.7.6-cp312-cp312-win_arm64.whl", hash = "sha256:e39187fb7dda1905198ee7a49a61d12977428672dba3bb47494cd3a440a36198"}, - {file = "librt-0.7.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eed0eea822597dfa2ddccd8ceafcfa667d7263f0dc700287074ab0d9179f5301"}, - {file = "librt-0.7.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:477bab707f8a9219d0bac1a2d58aca94ef5700929cb118f9507b2da8777dfe29"}, - {file = "librt-0.7.6-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8ede6b2e81cfba60056bcc6e0f1a3336de1bfa3cde68a31b76d15af236727c23"}, - {file = "librt-0.7.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aec3efd52fa236321a5249c39e094ff295feec200aae3407144aabae1e520034"}, - {file = "librt-0.7.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb2d4dcf5b92e4215db8297dc34f69230295929701d2cc6782a4ea7ca4821604"}, - {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5fb61bccda79f5396731f29a5e63da3c864510c00ebce71d5d17fa072b02b616"}, - {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:feff88e26e194cb184349733412dea3ef37907f4eec105754bcda905012d61c3"}, - {file = "librt-0.7.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7537e42da6a79294f7b9c081b42c5bdbfcdf1c0e98a3933c3ed7bf710d7a3780"}, - {file = "librt-0.7.6-cp313-cp313-win32.whl", hash = "sha256:589a5398498c5702be6706a29e7d235307806cea42fd219fb0b4c4ee32a198c0"}, - {file = "librt-0.7.6-cp313-cp313-win_amd64.whl", hash = "sha256:42544d7e16466d1341db6f5eb0df6ee958f4d81f7648405254c09be66f6c6729"}, - {file = "librt-0.7.6-cp313-cp313-win_arm64.whl", hash = "sha256:6f55b97725d6678b57437411d5a6e8909b7c55ef6c71061f92899c142957edb3"}, - {file = "librt-0.7.6-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c5b627029484a12005b79265bf3b1df1c5b37f4c993db844342b1d7ebff73b47"}, - {file = "librt-0.7.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:33520a4f90c0e6784c5db7ebb9fba7c1f4ed8ae4f65f56fc85e2809f2c674f8a"}, - {file = "librt-0.7.6-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e8aeb9cd632dd58ac084d1a180543e48006c9089a528accdc8f06d1e62e986a2"}, - {file = "librt-0.7.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c412fe2b02a1b45c3005da539c1ac2fcb99f7453574a88556397977c838524b6"}, - {file = "librt-0.7.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32b25e29e55bd277b1b48e4b699d09678576d6dfb3175d317758c0724a4bfef"}, - {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:97411878f63f8263fdbfe9107a3938eb75694a76bdc40a9c785ab293e02b3351"}, - {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:93a4f930e19886b3ac9dacb932261b399cfcaef15b5162d508b163bf9e2820d5"}, - {file = "librt-0.7.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:89f6bc8ef0a51fe53291f53dfb05cc832019caf6fdf2969ecfa28c3472bb863a"}, - {file = "librt-0.7.6-cp314-cp314-win32.whl", hash = "sha256:5b06d83b1d2a0cfce9d3b547ceb2c761bd98f529f5285d4f9a26bb9fc0bd5f92"}, - {file = "librt-0.7.6-cp314-cp314-win_amd64.whl", hash = "sha256:69ef674966dd1932f9548e1718b898a6022280eee7c0e16b0b0de40b0febf065"}, - {file = "librt-0.7.6-cp314-cp314-win_arm64.whl", hash = "sha256:f2c8799f5c4236104eadede723180d218212b44027cb7b909ef1e4b7b72e1480"}, - {file = "librt-0.7.6-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a4d24d44febb9f114fe81c831639a6acba8e957f39d969b81db444b978bfd8d0"}, - {file = "librt-0.7.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d4510cb559347d877f43ae3b0d0a80a4919d397ba4f1cef5a67b273677164f71"}, - {file = "librt-0.7.6-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:77ddc993faa13ba38e24d8521d353d80dbc67d271fda5a54563ce549a93f6b95"}, - {file = "librt-0.7.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4732e76f39ebb6dd2df7189f3bd8a7cea2050cf1acd6b3d70b4a66551773d1f8"}, - {file = "librt-0.7.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3fb616315e1b7267bd269802bd9c1da39c59fdd921d9963979ab07559c6da32a"}, - {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6dda44c6aab4a950b7867088bc03adfd0e74464a71001e3d455c6025bf64c6bf"}, - {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:047667397e8006738e382cbff9c2e186ed41aff81f684a3c9eba74f4364c25b9"}, - {file = "librt-0.7.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5ef75f4afc611e63a233771787f70444e13d4ddfac65a107f8a87fc7e27a9303"}, - {file = "librt-0.7.6-cp314-cp314t-win32.whl", hash = "sha256:9e45ac54fdb4ee1123baadc3485175aeba2fd6e13fcee325eb8f532de926760e"}, - {file = "librt-0.7.6-cp314-cp314t-win_amd64.whl", hash = "sha256:93833cf60ad83e60fcae6c1dbed5a33877ee9f9c2fc0e882de958682d23a7d3c"}, - {file = "librt-0.7.6-cp314-cp314t-win_arm64.whl", hash = "sha256:715778320d017a7725e0842579b26e7059a231a0000b0f770d7317851819cd86"}, - {file = "librt-0.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f3476e1d759441ac4995e257ac09fbc2b92cb917b93c9a6802dca08f3c31032"}, - {file = "librt-0.7.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:601d688a79bd23e59c7a035a13289113f3d10de3a124dc89f7d140cd220c4bea"}, - {file = "librt-0.7.6-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b7181f7811455d7908c4370bfb9ad25c9422b8cd4f54d66d9c1ceadcd8cad6d1"}, - {file = "librt-0.7.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4d6e9a36b8a31fcdb8dfbf0a5468fb0b2b584545e1afe68e724b45e3e0512cf7"}, - {file = "librt-0.7.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8accc9b377794676e5701530def592edaca7839f0a3537012286948fad0d8139"}, - {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5cb3a56037dd6cbff58592d4f9a5a227690b68832b9040f6616eae082a06984b"}, - {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ced25e7963478a59969bb49a00c08c179f4aa47e54927b9453a871793af1b8dd"}, - {file = "librt-0.7.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:23705b7cb3f0e9dd725f0f0d1e36e0cea8e7099aceb6f5baa345f0ddc0e2aa18"}, - {file = "librt-0.7.6-cp39-cp39-win32.whl", hash = "sha256:155322aaf116f9a983930fc39021fb56887fa8695adc718f012325d45f08e09a"}, - {file = "librt-0.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:a2ccd5086fef7ac26bc9fb1477cf04a227d3712de04eb4f44c9623bef0cce64e"}, - {file = "librt-0.7.6.tar.gz", hash = "sha256:0ba0a7a2ae3911417b1f2186836ff8ce3d01caffc665d6b5295c95f9f5606cdd"}, -] - -[[package]] -name = "mypy" -version = "1.19.1" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, - {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, - {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, - {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, - {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, - {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, - {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, - {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, - {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, - {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, - {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, - {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, - {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, - {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, - {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, - {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, - {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, - {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, - {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, - {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, - {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, - {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, - {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, - {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, - {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, - {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, - {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, - {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, - {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, - {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, - {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, - {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, - {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, - {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, - {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, - {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, - {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, - {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, -] - -[package.dependencies] -librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} -mypy_extensions = ">=1.0.0" -pathspec = ">=0.9.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing_extensions = ">=4.6.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, - {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, ] [[package]] @@ -463,18 +314,6 @@ files = [ {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, ] -[[package]] -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 = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - [[package]] name = "pluggy" version = "1.6.0" @@ -546,6 +385,27 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pyright" +version = "1.1.407" +description = "Command line wrapper for pyright" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "pyright-1.1.407-py3-none-any.whl", hash = "sha256:6dd419f54fcc13f03b52285796d65e639786373f433e243f8b94cf93a7444d21"}, + {file = "pyright-1.1.407.tar.gz", hash = "sha256:099674dba5c10489832d4a4b2d302636152a9a42d317986c38474c76fe562262"}, +] + +[package.dependencies] +nodeenv = ">=1.6.0" +typing-extensions = ">=4.1" + +[package.extras] +all = ["nodejs-wheel-binaries", "twine (>=3.4.1)"] +dev = ["twine (>=3.4.1)"] +nodejs = ["nodejs-wheel-binaries"] + [[package]] name = "pytest" version = "8.4.2" @@ -785,4 +645,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">=3.10" -content-hash = "9832bf7331d75d34ca299b619b178148b10bbfab5fe31b6638b6c717542d964b" +content-hash = "94893218133888c082c853a883cdc66dfb0f5fa0215445ed176db9078e065ad6" diff --git a/pyproject.toml b/pyproject.toml index 8012026..a5c4568 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,12 +21,12 @@ grpcio = "^1.71.0" grpcio-reflection = "^1.74.0" [tool.poetry.group.dev.dependencies] -mypy = "^1.18.1" poethepoet = "^0.34.0" pytest = "^8.3.5" ruff = "^0.11.7" schedule = "^1.2.2" numpy = "^2.2.6" +pyright = "^1.1.407" [tool.ruff] exclude = ["*_pb2.py", "*.pyi"] @@ -44,14 +44,6 @@ extend-select = [ ] select=["I"] -[tool.mypy] -python_version = "3.12" -ignore_missing_imports = true - -[[tool.mypy.overrides]] -module = "orca.protobufs.python.*" -ignore_errors = true - [tool.pytest.ini_options] markers = [ "live: marks tests as requireing access to live services" @@ -65,7 +57,7 @@ PROCESSOR_ADDRESS="[::]:8080" [tool.poe.tasks] _lint_check = "ruff check orca_python tests examples" _lint_fix = "ruff check orca_python tests examples --fix " -_type = "mypy orca_python examples --strict --warn-unused-ignores --warn-redundant-casts " +_type = "pyright orca_python examples" _format = "ruff format orca_python tests examples" format = ["_format", "_lint_fix"] @@ -74,4 +66,4 @@ lint_ci = ["_lint_check", "_type"] # Testing test = "pytest tests -vv -m 'not live'" -test_live ="pytest tests -vv -m 'live'" +test_live ="pytest tests -vv -m 'live'" diff --git a/pyrightconfig.json b/pyrightconfig.json new file mode 100644 index 0000000..df431b0 --- /dev/null +++ b/pyrightconfig.json @@ -0,0 +1,24 @@ +{ + "include": [ + "orca_python", + "examples" + ], + "exclude": [ + "**/__pycache__", + "**/.venv", + "**/node_modules", + "**/*.pyi", + "**/*_pb2.py", + "orca/protobufs/python" + ], + "venvPath": ".", + "venv": ".venv", + "pythonVersion": "3.12", + "pythonPlatform": "Linux", + "typeCheckingMode": "basic", + "reportMissingImports": true, + "reportMissingTypeStubs": false, + "reportUnusedImport": "none", + "reportUnusedVariable": "none", + "stubPath": ".orca", +} From d2fa9a6821adf9c17434b135157b1fb764405b67 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Fri, 2 Jan 2026 20:22:25 +0000 Subject: [PATCH 12/14] Fixed type errors --- orca_python/main.py | 46 ++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/orca_python/main.py b/orca_python/main.py index 6c40edc..2128b44 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -495,18 +495,29 @@ async def execute_algorithm( ) elif algo.result_type == ValueResult: # type: ignore - # for single numeric values - resultPb = pb.Result( - status=pb.ResultStatus.RESULT_STATUS_SUCEEDED, - single_value=algoResult.value, - ) + if isinstance(algoResult.value, (float, int)): + # for single numeric values + resultPb = pb.Result( + status=pb.ResultStatus.RESULT_STATUS_SUCEEDED, + single_value=algoResult.value, + ) + else: + LOGGER.error( + f"Algorithm {algo.name} {algo.version} produced result that was neither a float or an int {algo.result_type}. Failing algorithm." + ) + # create a handled failure result + resultPb = pb.Result( + status=pb.ResultStatus.RESULT_STATUS_HANDLED_FAILED, + ) + elif algo.result_type == ArrayResult: # type: ignore - # for lists of numeric values - float_array = pb.FloatArray(values=algoResult) - resultPb = pb.Result( - status=pb.ResultStatus.RESULT_STATUS_SUCEEDED, - float_values=float_array.values, - ) + if isinstance(algoResult, List): + # for lists of numeric values + float_array = pb.FloatArray(values=algoResult) + resultPb = pb.Result( + status=pb.ResultStatus.RESULT_STATUS_SUCEEDED, + float_values=float_array, + ) else: LOGGER.error( f"Algorithm {algo.name} {algo.version} has unhandled return type {algo.result_type}" @@ -626,12 +637,6 @@ async def process_results() -> AsyncGenerator[pb.ExecutionResult, None]: context.set_details(f"DAG execution failed: {str(e)}") raise - except Exception as e: - LOGGER.error(f"DAG execution failed: {str(e)}", exc_info=True) - context.set_code(grpc.StatusCode.INTERNAL) - context.set_details(f"DAG execution failed: {str(e)}") - raise - def HealthCheck( self, HealthCheckRequest: pb.HealthCheckRequest, context: grpc.ServicerContext ) -> pb.HealthCheckResponse: @@ -645,6 +650,8 @@ def HealthCheck( Returns: pb.HealthCheckResponse: Health status and optional metrics. """ + _ = HealthCheckRequest + _ = context LOGGER.debug("Received health check request") return pb.HealthCheckResponse( @@ -800,6 +807,7 @@ def Start(self) -> None: import signal def handle_shutdown(signum: int, frame: Any) -> None: + _, _ = signum, frame LOGGER.info("Received shutdown signal, stopping server...") server.stop(grace=5) # 5 seconds grace period @@ -935,9 +943,9 @@ def is_type_in_union(target_type, union_type): # type: ignore return target_type in union_type.__args__ # handle typing.Union syntax - origin = getattr(typing, "get_origin", lambda x: None)(union_type) + origin = getattr(typing, "get_origin", lambda _: None)(union_type) if origin is Union: - args = getattr(typing, "get_args", lambda x: ())(union_type) + args = getattr(typing, "get_args", lambda _: ())(union_type) return target_type in args # handle single type (not a union) From 2c8d07e5af3d014d47d52bda29620ed1673cb633 Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Fri, 2 Jan 2026 20:23:43 +0000 Subject: [PATCH 13/14] Got latest version of Orca --- orca | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orca b/orca index 25be961..09af32c 160000 --- a/orca +++ b/orca @@ -1 +1 @@ -Subproject commit 25be9612192bd0016a15c1d1056c29dee1eec037 +Subproject commit 09af32c578020fdbb55fdc85b003f41039027da8 From 487b0220ae64092e925983d61a6187b874ce843d Mon Sep 17 00:00:00 2001 From: Frederick Mannings Date: Fri, 2 Jan 2026 21:03:16 +0000 Subject: [PATCH 14/14] Test fixes --- .../simpletrigger/simpletrigger/processor.py | 3 +- orca_python/main.py | 9 +++- tests/test_algorithms.py | 45 ++++++++++++++++--- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/examples/simpletrigger/simpletrigger/processor.py b/examples/simpletrigger/simpletrigger/processor.py index 3d8326a..a7860f1 100644 --- a/examples/simpletrigger/simpletrigger/processor.py +++ b/examples/simpletrigger/simpletrigger/processor.py @@ -23,8 +23,9 @@ ) -@proc.algorithm("MyAlgo", "1.0.0", "Simple algorithm", Every30Second) +@proc.algorithm("MyAlgo", "1.0.0", Every30Second) def my_algorithm(params: ExecutionParams) -> StructResult: + """A simple algorithms that does nothing interesting""" route_id = params.window.metadata.get("route_id", None) bus_id = params.window.metadata.get("bus_id", None) print(route_id, bus_id) diff --git a/orca_python/main.py b/orca_python/main.py index 2128b44..61f265d 100644 --- a/orca_python/main.py +++ b/orca_python/main.py @@ -828,8 +828,8 @@ def algorithm( self, name: str, version: str, - description: str, window_type: WindowType, + description: Optional[str] = None, depends_on: List[Callable[..., Any]] = [], ) -> Callable[[T], T]: """ @@ -840,6 +840,7 @@ def algorithm( version (str): Semantic version (e.g., "1.0.0"). window_type (WindowType): Triggering window type depends_on (List[Callable]): List of dependent algorithm functions. + dscription: The description of the algorithm Returns: Callable[[T], T]: The decorated function. @@ -891,11 +892,15 @@ def wrapper( raise InvalidAlgorithmReturnType( f"Algorithm has return type {sig.return_annotation}, but expected one of `StructResult`, `ValueResult`, `ArrayResult`, `NoneResult`" ) + if description is None: + _description = "" if algo.__doc__ is None else algo.__doc__ + else: + _description = description algorithm = Algorithm( name=name, version=version, - description=description, + description=_description, window_type=window_type, exec_fn=wrapper, processor=self._name, diff --git a/tests/test_algorithms.py b/tests/test_algorithms.py index b79b142..2826a34 100644 --- a/tests/test_algorithms.py +++ b/tests/test_algorithms.py @@ -1,4 +1,5 @@ import random +import datetime as dt import pytest import service_pb2 as pb @@ -11,6 +12,7 @@ ValueResult, ExecutionParams, ) +from orca_python.main import Window from orca_python.exceptions import InvalidDependency, InvalidAlgorithmArgument proc = Processor("ml") @@ -19,17 +21,30 @@ def test_algorithm_arg_parsing_fails(): """Arguments to the algorithm decorator are parsed as expected.""" proc._algorithmsSingleton._flush() - with pytest.raises(InvalidAlgorithmArgument): - @proc.algorithm("TestAlgorithm", "1.0.0+abcd", "WindowA", "1.0.0") + @proc.algorithm( + "TestAlgorithm", + "1.0.0+abcd", + WindowType(name="WindowA", version="1.0.0", description=""), + "1.0.0", + ) def test_algorithm(params: ExecutionParams) -> NoneResult: + _ = params return NoneResult() + _ = test_algorithm + with pytest.raises(InvalidAlgorithmArgument): - @proc.algorithm("Test_Algorithm", "1.0.0", "WindowA", "1.0.0") + @proc.algorithm( + "Test_Algorithm", + "1.0.0", + WindowType(name="WindowB", version="1.0.0", description=""), + "1.0.0", + ) def test_algorithm(params: ExecutionParams) -> NoneResult: + _ = params return NoneResult() @@ -40,8 +55,11 @@ def test_algo_arg_parsing_suceeds(): @proc.algorithm("TestAlgorithm", "1.0.0", WindowA) def test_algorithm(params: ExecutionParams) -> NoneResult: + _ = params return NoneResult() + _ = test_algorithm + assert "TestAlgorithm_1.0.0" in proc._algorithmsSingleton._algorithms @@ -55,6 +73,7 @@ def test_valid_dependency(): @proc.algorithm("TestAlgorithm", "1.0.0", WindowA) def test_algorithm(params: ExecutionParams) -> ValueResult: + _ = params return ValueResult(algo_1_result) _time_from = timestamp_pb2.Timestamp(seconds=0) @@ -79,6 +98,7 @@ def test_algorithm(params: ExecutionParams) -> ValueResult: @proc.algorithm("TestAlgorithm", "1.2.0", WindowB) def test_algorithm_2(params: ExecutionParams) -> ValueResult: + _ = params return ValueResult(algo_2_result) @proc.algorithm( @@ -88,8 +108,11 @@ def test_algorithm_2(params: ExecutionParams) -> ValueResult: depends_on=[test_algorithm, test_algorithm_2], ) def test_algorithm_3(params: ExecutionParams) -> NoneResult: + _ = params return NoneResult() + _ = test_algorithm_3 + # confirm algorithm execution order. assert ( proc._algorithmsSingleton._dependencyFns["NewAlgorithm_1.0.0"][0]( @@ -118,7 +141,10 @@ def undecorated(): @proc.algorithm("NewAlgorithm", "1.0.0", WindowA, depends_on=[undecorated]) def new_algorithm(params: ExecutionParams) -> NoneResult: - return None + _ = params + return NoneResult() + + _ = new_algorithm @pytest.mark.live @@ -133,16 +159,22 @@ def test_registration_works(): @proc.algorithm("TestAlgorithm", "1.0.0", WindowA) def test_algorithm(params: ExecutionParams) -> ValueResult: + _ = params return ValueResult(algo_1_result) + stubWindow = Window(dt.datetime.now(), dt.datetime.now(), "", "", "") + stub_params = ExecutionParams(stubWindow) assert "TestAlgorithm_1.0.0" in proc._algorithmsSingleton._algorithms assert ( - proc._algorithmsSingleton._algorithms["TestAlgorithm_1.0.0"].exec_fn() + proc._algorithmsSingleton._algorithms["TestAlgorithm_1.0.0"].exec_fn( + stub_params + ) == algo_1_result ) @proc.algorithm("TestAlgorithm", "1.2.0", WindowB) def test_algorithm_2(params: ExecutionParams) -> ValueResult: + _ = params return ValueResult(algo_2_result) @proc.algorithm( @@ -152,6 +184,9 @@ def test_algorithm_2(params: ExecutionParams) -> ValueResult: depends_on=[test_algorithm, test_algorithm_2], ) def test_algorithm_3(params: ExecutionParams) -> NoneResult: + _ = params return NoneResult() + _ = test_algorithm_3 + proc.Register()