Mirror of https://github.com/roostorg/osprey github.com/roostorg/osprey
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add FawltyDeps for unused deps, single source of truth for dependencies, and turn on CI (#159)

authored by

Juan Mrad and committed by
GitHub
b59c2c0a ac59500a

+119 -399
+10
.github/PULL_REQUEST_TEMPLATE.md
··· 1 + ## Description 2 + 3 + <!-- What does this PR do? --> 4 + 5 + ## Checklist 6 + 7 + - [ ] Tests pass locally 8 + - [ ] `uv run ruff check .` passes (no unused imports or other lint errors) 9 + - [ ] `uv tool run fawltydeps --check-unused --pyenv .venv` passes (no unused dependencies) 10 +
+4 -1
.github/workflows/code-quality.yml
··· 39 39 path: ~/.cache/pre-commit 40 40 key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} 41 41 42 - - name: Run pre-commit python checks 42 + - name: Run pre-commit python checks (ruff, mypy, etc.) 43 43 env: 44 44 SKIP: prettier-osprey-ui 45 45 run: | 46 46 uv run pre-commit install --install-hooks 47 47 uv run pre-commit run --show-diff-on-failure --color=always --all-files 48 + 49 + - name: Check for unused dependencies 50 + run: uv tool run fawltydeps --check-unused --pyenv .venv 48 51 49 52 ui-quality: 50 53 runs-on: ubuntu-24.04
+24 -14
osprey_worker/src/osprey/worker/lib/etcd/tests/test_ring.py
··· 46 46 etcd_client.set(etcd_key, json.dumps(serialized_members)) 47 47 48 48 wait_for_condition( 49 - lambda: EtcdHashRingTopology.to_json(ring.members) 50 - == EtcdHashRingTopology.to_json(members + [{'name': 'test-4', 'num_replicas': 512}]) 49 + lambda: ( 50 + EtcdHashRingTopology.to_json(ring.members) 51 + == EtcdHashRingTopology.to_json(members + [{'name': 'test-4', 'num_replicas': 512}]) 52 + ) 51 53 ) 52 54 53 55 ··· 62 64 etcd_client.set(etcd_key, json.dumps(serialized_json)) 63 65 64 66 wait_for_condition( 65 - lambda: EtcdHashRingTopology.to_json(ring.members, ring.overrides) 66 - == EtcdHashRingTopology.to_json(members, mapped_overrides) 67 + lambda: ( 68 + EtcdHashRingTopology.to_json(ring.members, ring.overrides) 69 + == EtcdHashRingTopology.to_json(members, mapped_overrides) 70 + ) 67 71 ) 68 72 69 73 ··· 146 150 ring.add('test-1', 'test-2', 'test-3') 147 151 148 152 wait_for_condition( 149 - lambda: ring.select(3) == b'test-1' 150 - and ring.select(6) == b'test-2' 151 - and ring.select(1) == b'test-3' 152 - and ring.select('foo') == b'test-2' 153 + lambda: ( 154 + ring.select(3) == b'test-1' 155 + and ring.select(6) == b'test-2' 156 + and ring.select(1) == b'test-3' 157 + and ring.select('foo') == b'test-2' 158 + ) 153 159 ) 154 160 155 161 # Testing count of distribution ··· 216 222 ring.add('test-1', 'test-2', 'test-3') 217 223 218 224 wait_for_condition( 219 - lambda: ring.select(1, 2) == [b'test-3', b'test-2', b'test-1'] 220 - and ring.select(3, 2) == [b'test-1', b'test-2', b'test-3'] 221 - and ring.select(6, 2) == [b'test-2', b'test-1', b'test-3'] 225 + lambda: ( 226 + ring.select(1, 2) == [b'test-3', b'test-2', b'test-1'] 227 + and ring.select(3, 2) == [b'test-1', b'test-2', b'test-3'] 228 + and ring.select(6, 2) == [b'test-2', b'test-1', b'test-3'] 229 + ) 222 230 ) 223 231 224 232 ring.overrides = {1: [b'special-a'], 3: [b'test-2', b'test-8']} 225 233 226 234 wait_for_condition( 227 - lambda: ring.select(1, 2) == [b'special-a', b'test-3', b'test-2'] 228 - and ring.select(3, 2) == [b'test-2', b'test-8', b'test-1'] 229 - and ring.select(6, 2) == [b'test-2', b'test-1', b'test-3'] 235 + lambda: ( 236 + ring.select(1, 2) == [b'special-a', b'test-3', b'test-2'] 237 + and ring.select(3, 2) == [b'test-2', b'test-8', b'test-1'] 238 + and ring.select(6, 2) == [b'test-2', b'test-1', b'test-3'] 239 + ) 230 240 ) 231 241 232 242
+69 -85
pyproject.toml
··· 4 4 5 5 [dependency-groups] 6 6 common = [ 7 - "absl-py==2.3.1", 8 - "asttokens==3.0.0", 9 7 "blinker==1.9.0", 10 - "bytecode==0.16.2", 11 - "cachetools==5.5.2", 12 - "certifi==2025.8.3", 13 - "charset-normalizer==3.4.2", 14 8 "click==7.1.2", 15 9 "datadog==0.51.0", 16 10 "ddtrace==2.21.11", 17 - "decorator==5.2.1", 18 11 "deepmerge==0.3.0", 19 12 "dnspython==2.0.0", 20 - "ecdsa==0.19.1", 21 - "envier==0.5.2", 22 13 "erlpack", 23 - "executing==2.2.0", 24 14 "faker==4.18.0", 25 15 "flask==1.1.4", 26 16 "gevent==24.2.1", ··· 38 28 "google-cloud-pubsub==2.15.2", 39 29 "google-cloud-secret-manager==2.24.0", 40 30 "google-cloud-storage==2.10.0", 41 - "google-crc32c==1.7.1", 42 31 "google-resumable-media==2.7.2", 43 32 "googleapis-common-protos==1.70.0", 44 33 "graphviz==0.20", ··· 54 43 "grpcio-tools==1.53.*; platform_machine != 'x86_64'", 55 44 "gunicorn", 56 45 "hash-ring", 57 - "httplib2==0.22.0", 58 - "humanize==4.12.3", 59 - "idna==3.10", 60 - "imagehash==4.3.2", 61 - "importlib-metadata==8.7.0", 62 - "infinity==1.5", 63 - "iniconfig==2.1.0", 64 46 "intervals==0.9.2", 65 - "ipdb==0.13.13", 66 - "ipython==9.4.0", 67 - "ipython-pygments-lexers==1.1.1", 68 - "iso8601==2.1.0", 69 - "itsdangerous==1.1.0", 70 - "jedi==0.19.2", 71 - "jinja2==2.11.3", 72 - "jslog4kube==1.0.6", 73 47 "jsonpath-rw", 74 48 "kafka-python==1.4.7", 75 - "linkify-it-py==2.0.3", 76 - "markdown-it-py==3.0.0", 77 - "markupsafe==2.0.1", 78 - "matplotlib-inline==0.1.7", 79 - "maxminddb==1.5.4", 80 - "mdit-py-plugins==0.4.2", 81 - "mdurl==0.1.2", 82 - "memray==1.17.2", 83 49 "minio>=7.2.16", 84 50 "mmh3==3.0.0", 85 51 "msgpack==1.0.8", 86 - "mypy==1.13.0", 87 - "mypy-extensions==1.0.0", 88 - "mypy-protobuf==3.6.0", 89 52 "nostril", 90 - "numpy==1.24.4", 91 - "opentelemetry-api==1.36.0", 92 - "packaging==25.0", 93 - "parso==0.8.4", 94 - "pdqhash==0.2.5", 95 - "pexpect==4.9.0", 96 53 "phone-iso3166==0.3.8", 97 - "pillow==9.5.0", 98 - "plac==1.4.5", 99 - "platformdirs==4.3.8", 100 54 "pluggy==1.5.0", 101 - "ply==3.11", 102 - "prompt-toolkit==3.0.51", 103 - "proto-plus==1.26.1", 104 55 "protobuf==4.25.8", 105 56 "psycogreen==1.0.2", 106 57 "psycopg2-binary==2.9.10", 107 - "ptyprocess==0.7.0", 108 - "pure-eval==0.2.3", 109 - "py==1.11.0", 110 - "pyasn1==0.6.1", 111 - "pyasn1-modules==0.4.2", 112 58 "pycryptodome==3.21.0", 113 59 "pydantic==1.10.19", 114 60 "pydruid==0.6.9", 115 - "pygments==2.19.2", 116 - "pyparsing==3.2.3", 117 61 "pytest==8.3.5", 118 - "pytest-flask==1.3.0", 119 62 "pytest-mock==3.14.1", 120 - "pytest-order==1.3.0", 121 63 "python-dateutil==2.8.0", 122 - "python-jose==3.5.0", 123 64 "python-json-logger==0.1.10", 124 65 "python-levenshtein==0.12.2", 125 66 "pytz==2022.1", 126 - "pywavelets==1.8.0", 127 67 "pyyaml==6.0.1", 128 68 "requests==2.32.4", 129 - "requests-mock==1.9.3", 130 69 "result==0.5.0", 131 - "retry==0.9.2", 132 - "rich==14.1.0", 133 - "rsa==4.9.1", 134 - "scipy==1.15.3", 135 70 "sentry-sdk==1.5.12", 136 - "setuptools==80.9.0", 137 71 "simplejson==3.19.3", 138 72 "six==1.16.0", 139 73 "sqlalchemy==1.4.31", 140 74 "sqlalchemy-utils==0.41.1", 141 - "sqlalchemy2-stubs==0.0.2a38", 142 - "stack-data==0.6.3", 143 - "tabulate==0.9.0", 144 75 "tenacity==8.1.0", 145 - "text-unidecode==1.3", 146 - "textual==5.2.0", 147 76 "tink==1.9.0", 148 77 "tld==0.12.7", 149 78 "traitlets==5.14.3", 79 + "typing-extensions==4.6.3", 80 + "typing-inspect==0.9.0", 81 + "unidecode==1.3.8", 82 + "werkzeug==1.0.1", 83 + # --- Type stubs (used by mypy, not imported directly) --- 150 84 "types-cachetools==6.1.0.20250717", 151 85 "types-click==7.1.8", 152 86 "types-flask==1.1.6", ··· 164 98 "types-six==1.17.0.20250515", 165 99 "types-urllib3==1.26.25.14", 166 100 "types-werkzeug==1.0.9", 167 - "typing-extensions==4.6.3", 168 - "typing-inspect==0.9.0", 169 - "uc-micro-py==1.0.3", 170 - "unidecode==1.3.8", 171 - "uritemplate==4.2.0", 172 - "urllib3==2.5.0", 173 - "wcwidth==0.2.13", 174 - "werkzeug==1.0.1", 175 - "wrapt==1.17.2", 176 - "xmltodict==0.14.2", 177 - "zipp==3.23.0", 178 - "zope-event==5.1.1", 179 - "zope-interface==7.2", 180 101 ] 181 102 dev = [ 103 + "ipdb==0.13.13", 104 + "ipython==9.4.0", 105 + "memray==1.17.2", 182 106 "mypy>=1.13.0", 107 + "mypy-extensions==1.0.0", 108 + "mypy-protobuf==3.6.0", 183 109 "pre-commit>=4.3.0", 110 + "pytest-flask==1.3.0", 111 + "pytest-order==1.3.0", 112 + "requests-mock==1.9.3", 184 113 "ruff>=0.12.9", 114 + "setuptools==80.9.0", 185 115 "sqlalchemy[mypy]>=1.4.31", 116 + "sqlalchemy2-stubs==0.0.2a38", 186 117 "types-flask-cors>=3.0.10", 187 118 ] 188 119 ··· 230 161 [tool.ruff.lint] 231 162 select = [ 232 163 "E", # pycodestyle errors 233 - "F", # pyflakes 164 + "F", # pyflakes (includes F401 unused imports) 234 165 "I", # isort 235 166 "B006", # flake8-bugbear, B006 catches mutable defaults 236 167 ] ··· 240 171 241 172 [tool.ruff.lint.isort] 242 173 known-first-party = ["osprey_worker", "osprey_rpc", "example_plugins"] 174 + 175 + [tool.fawltydeps] 176 + code = ["osprey_worker/src", "osprey_rpc/src", "example_plugins/src"] 177 + deps = ["pyproject.toml"] 178 + ignore_unused = [ 179 + # Type stubs: used by mypy, never imported directly 180 + "types-cachetools", 181 + "types-click", 182 + "types-flask", 183 + "types-flask-cors", 184 + "types-ipaddress", 185 + "types-jinja2", 186 + "types-markupsafe", 187 + "types-maxminddb", 188 + "types-protobuf", 189 + "types-psycopg2", 190 + "types-python-dateutil", 191 + "types-pytz", 192 + "types-pyyaml", 193 + "types-requests", 194 + "types-simplejson", 195 + "types-six", 196 + "types-urllib3", 197 + "types-werkzeug", 198 + "sqlalchemy2-stubs", 199 + # Dev CLI tools: run as commands, not imported 200 + "grpcio-tools", 201 + "ipdb", 202 + "ipython", 203 + "memray", 204 + "mypy", 205 + "mypy-extensions", 206 + "mypy-protobuf", 207 + "pre-commit", 208 + "pytest-flask", 209 + "pytest-order", 210 + "requests-mock", 211 + "ruff", 212 + "setuptools", 213 + # Runtime CLI: started via command line, not imported in source 214 + "gunicorn", 215 + # Optional runtime dep of sentry-sdk for FlaskIntegration 216 + "blinker", 217 + # gRPC server extensions: registered at startup, not imported directly 218 + "grpcio-health-checking", 219 + "grpcio-reflection", 220 + "grpcio-status", 221 + # Needs investigation: may be unused, verify before removing 222 + "erlpack", 223 + "google-api-python-client", 224 + "google-auth-httplib2", 225 + "nostril", 226 + ] 243 227 244 228 [tool.mypy] 245 229 plugins = ["pydantic.mypy", "sqlalchemy.ext.mypy.plugin"]
+12 -299
uv.lock
··· 29 29 30 30 [manifest.dependency-groups] 31 31 common = [ 32 - { name = "absl-py", specifier = "==2.3.1" }, 33 - { name = "asttokens", specifier = "==3.0.0" }, 34 32 { name = "blinker", specifier = "==1.9.0" }, 35 - { name = "bytecode", specifier = "==0.16.2" }, 36 - { name = "cachetools", specifier = "==5.5.2" }, 37 - { name = "certifi", specifier = "==2025.8.3" }, 38 - { name = "charset-normalizer", specifier = "==3.4.2" }, 39 33 { name = "click", specifier = "==7.1.2" }, 40 34 { name = "datadog", specifier = "==0.51.0" }, 41 35 { name = "ddtrace", specifier = "==2.21.11" }, 42 - { name = "decorator", specifier = "==5.2.1" }, 43 36 { name = "deepmerge", specifier = "==0.3.0" }, 44 37 { name = "dnspython", specifier = "==2.0.0" }, 45 - { name = "ecdsa", specifier = "==0.19.1" }, 46 - { name = "envier", specifier = "==0.5.2" }, 47 38 { name = "erlpack", git = "https://github.com/discord/erlpack.git?rev=b25ebd51ae4c097bd7f756fd4e1c841b61bfe50b" }, 48 - { name = "executing", specifier = "==2.2.0" }, 49 39 { name = "faker", specifier = "==4.18.0" }, 50 40 { name = "flask", specifier = "==1.1.4" }, 51 41 { name = "gevent", specifier = "==24.2.1" }, ··· 63 53 { name = "google-cloud-pubsub", specifier = "==2.15.2" }, 64 54 { name = "google-cloud-secret-manager", specifier = "==2.24.0" }, 65 55 { name = "google-cloud-storage", specifier = "==2.10.0" }, 66 - { name = "google-crc32c", specifier = "==1.7.1" }, 67 56 { name = "google-resumable-media", specifier = "==2.7.2" }, 68 57 { name = "googleapis-common-protos", specifier = "==1.70.0" }, 69 58 { name = "graphviz", specifier = "==0.20" }, ··· 79 68 { name = "grpcio-tools", marker = "platform_machine == 'x86_64'", specifier = "==1.49.1" }, 80 69 { name = "gunicorn", git = "https://github.com/discord/gunicorn.git?rev=979efdcb918daa536d8923668241c6e6bf1edb58" }, 81 70 { name = "hash-ring", url = "https://storage.googleapis.com/discord-devops/hash_ring-src-b4b56bc93053881b68b829ee9d1a4871b4aee592.zip" }, 82 - { name = "httplib2", specifier = "==0.22.0" }, 83 - { name = "humanize", specifier = "==4.12.3" }, 84 - { name = "idna", specifier = "==3.10" }, 85 - { name = "imagehash", specifier = "==4.3.2" }, 86 - { name = "importlib-metadata", specifier = "==8.7.0" }, 87 - { name = "infinity", specifier = "==1.5" }, 88 - { name = "iniconfig", specifier = "==2.1.0" }, 89 71 { name = "intervals", specifier = "==0.9.2" }, 90 - { name = "ipdb", specifier = "==0.13.13" }, 91 - { name = "ipython", specifier = "==9.4.0" }, 92 - { name = "ipython-pygments-lexers", specifier = "==1.1.1" }, 93 - { name = "iso8601", specifier = "==2.1.0" }, 94 - { name = "itsdangerous", specifier = "==1.1.0" }, 95 - { name = "jedi", specifier = "==0.19.2" }, 96 - { name = "jinja2", specifier = "==2.11.3" }, 97 - { name = "jslog4kube", specifier = "==1.0.6" }, 98 72 { name = "jsonpath-rw", url = "https://github.com/kennknowles/python-jsonpath-rw/archive/6f5647bb3ad2395c20f0191fef07a1df51c9fed8.tar.gz" }, 99 73 { name = "kafka-python", specifier = "==1.4.7" }, 100 - { name = "linkify-it-py", specifier = "==2.0.3" }, 101 - { name = "markdown-it-py", specifier = "==3.0.0" }, 102 - { name = "markupsafe", specifier = "==2.0.1" }, 103 - { name = "matplotlib-inline", specifier = "==0.1.7" }, 104 - { name = "maxminddb", specifier = "==1.5.4" }, 105 - { name = "mdit-py-plugins", specifier = "==0.4.2" }, 106 - { name = "mdurl", specifier = "==0.1.2" }, 107 - { name = "memray", specifier = "==1.17.2" }, 108 74 { name = "minio", specifier = ">=7.2.16" }, 109 75 { name = "mmh3", specifier = "==3.0.0" }, 110 76 { name = "msgpack", specifier = "==1.0.8" }, 111 - { name = "mypy", specifier = "==1.13.0" }, 112 - { name = "mypy-extensions", specifier = "==1.0.0" }, 113 - { name = "mypy-protobuf", specifier = "==3.6.0" }, 114 77 { name = "nostril", url = "https://github.com/casics/nostril/archive/v1.2.0.tar.gz" }, 115 - { name = "numpy", specifier = "==1.24.4" }, 116 - { name = "opentelemetry-api", specifier = "==1.36.0" }, 117 - { name = "packaging", specifier = "==25.0" }, 118 - { name = "parso", specifier = "==0.8.4" }, 119 - { name = "pdqhash", specifier = "==0.2.5" }, 120 - { name = "pexpect", specifier = "==4.9.0" }, 121 78 { name = "phone-iso3166", specifier = "==0.3.8" }, 122 - { name = "pillow", specifier = "==9.5.0" }, 123 - { name = "plac", specifier = "==1.4.5" }, 124 - { name = "platformdirs", specifier = "==4.3.8" }, 125 79 { name = "pluggy", specifier = "==1.5.0" }, 126 - { name = "ply", specifier = "==3.11" }, 127 - { name = "prompt-toolkit", specifier = "==3.0.51" }, 128 - { name = "proto-plus", specifier = "==1.26.1" }, 129 80 { name = "protobuf", specifier = "==4.25.8" }, 130 81 { name = "psycogreen", specifier = "==1.0.2" }, 131 82 { name = "psycopg2-binary", specifier = "==2.9.10" }, 132 - { name = "ptyprocess", specifier = "==0.7.0" }, 133 - { name = "pure-eval", specifier = "==0.2.3" }, 134 - { name = "py", specifier = "==1.11.0" }, 135 - { name = "pyasn1", specifier = "==0.6.1" }, 136 - { name = "pyasn1-modules", specifier = "==0.4.2" }, 137 83 { name = "pycryptodome", specifier = "==3.21.0" }, 138 84 { name = "pydantic", specifier = "==1.10.19" }, 139 85 { name = "pydruid", specifier = "==0.6.9" }, 140 - { name = "pygments", specifier = "==2.19.2" }, 141 - { name = "pyparsing", specifier = "==3.2.3" }, 142 86 { name = "pytest", specifier = "==8.3.5" }, 143 - { name = "pytest-flask", specifier = "==1.3.0" }, 144 87 { name = "pytest-mock", specifier = "==3.14.1" }, 145 - { name = "pytest-order", specifier = "==1.3.0" }, 146 88 { name = "python-dateutil", specifier = "==2.8.0" }, 147 - { name = "python-jose", specifier = "==3.5.0" }, 148 89 { name = "python-json-logger", specifier = "==0.1.10" }, 149 90 { name = "python-levenshtein", specifier = "==0.12.2" }, 150 91 { name = "pytz", specifier = "==2022.1" }, 151 - { name = "pywavelets", specifier = "==1.8.0" }, 152 92 { name = "pyyaml", specifier = "==6.0.1" }, 153 93 { name = "requests", specifier = "==2.32.4" }, 154 - { name = "requests-mock", specifier = "==1.9.3" }, 155 94 { name = "result", specifier = "==0.5.0" }, 156 - { name = "retry", specifier = "==0.9.2" }, 157 - { name = "rich", specifier = "==14.1.0" }, 158 - { name = "rsa", specifier = "==4.9.1" }, 159 - { name = "scipy", specifier = "==1.15.3" }, 160 95 { name = "sentry-sdk", specifier = "==1.5.12" }, 161 - { name = "setuptools", specifier = "==80.9.0" }, 162 96 { name = "simplejson", specifier = "==3.19.3" }, 163 97 { name = "six", specifier = "==1.16.0" }, 164 98 { name = "sqlalchemy", specifier = "==1.4.31" }, 165 99 { name = "sqlalchemy-utils", specifier = "==0.41.1" }, 166 - { name = "sqlalchemy2-stubs", specifier = "==0.0.2a38" }, 167 - { name = "stack-data", specifier = "==0.6.3" }, 168 - { name = "tabulate", specifier = "==0.9.0" }, 169 100 { name = "tenacity", specifier = "==8.1.0" }, 170 - { name = "text-unidecode", specifier = "==1.3" }, 171 - { name = "textual", specifier = "==5.2.0" }, 172 101 { name = "tink", specifier = "==1.9.0" }, 173 102 { name = "tld", specifier = "==0.12.7" }, 174 103 { name = "traitlets", specifier = "==5.14.3" }, ··· 191 120 { name = "types-werkzeug", specifier = "==1.0.9" }, 192 121 { name = "typing-extensions", specifier = "==4.6.3" }, 193 122 { name = "typing-inspect", specifier = "==0.9.0" }, 194 - { name = "uc-micro-py", specifier = "==1.0.3" }, 195 123 { name = "unidecode", specifier = "==1.3.8" }, 196 - { name = "uritemplate", specifier = "==4.2.0" }, 197 - { name = "urllib3", specifier = "==2.5.0" }, 198 - { name = "wcwidth", specifier = "==0.2.13" }, 199 124 { name = "werkzeug", specifier = "==1.0.1" }, 200 - { name = "wrapt", specifier = "==1.17.2" }, 201 - { name = "xmltodict", specifier = "==0.14.2" }, 202 - { name = "zipp", specifier = "==3.23.0" }, 203 - { name = "zope-event", specifier = "==5.1.1" }, 204 - { name = "zope-interface", specifier = "==7.2" }, 205 125 ] 206 126 dev = [ 127 + { name = "ipdb", specifier = "==0.13.13" }, 128 + { name = "ipython", specifier = "==9.4.0" }, 129 + { name = "memray", specifier = "==1.17.2" }, 207 130 { name = "mypy", specifier = ">=1.13.0" }, 131 + { name = "mypy-extensions", specifier = "==1.0.0" }, 132 + { name = "mypy-protobuf", specifier = "==3.6.0" }, 208 133 { name = "pre-commit", specifier = ">=4.3.0" }, 134 + { name = "pytest-flask", specifier = "==1.3.0" }, 135 + { name = "pytest-order", specifier = "==1.3.0" }, 136 + { name = "requests-mock", specifier = "==1.9.3" }, 209 137 { name = "ruff", specifier = ">=0.12.9" }, 138 + { name = "setuptools", specifier = "==80.9.0" }, 210 139 { name = "sqlalchemy", extras = ["mypy"], specifier = ">=1.4.31" }, 140 + { name = "sqlalchemy2-stubs", specifier = "==0.0.2a38" }, 211 141 { name = "types-flask-cors", specifier = ">=3.0.10" }, 212 142 ] 213 143 ··· 548 478 ] 549 479 550 480 [[package]] 551 - name = "ecdsa" 552 - version = "0.19.1" 553 - source = { registry = "https://pypi.org/simple" } 554 - dependencies = [ 555 - { name = "six" }, 556 - ] 557 - sdist = { url = "https://files.pythonhosted.org/packages/c0/1f/924e3caae75f471eae4b26bd13b698f6af2c44279f67af317439c2f4c46a/ecdsa-0.19.1.tar.gz", hash = "sha256:478cba7b62555866fcb3bb3fe985e06decbdb68ef55713c4e5ab98c57d508e61", size = 201793, upload-time = "2025-03-13T11:52:43.25Z" } 558 - wheels = [ 559 - { url = "https://files.pythonhosted.org/packages/cb/a3/460c57f094a4a165c84a1341c373b0a4f5ec6ac244b998d5021aade89b77/ecdsa-0.19.1-py2.py3-none-any.whl", hash = "sha256:30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3", size = 150607, upload-time = "2025-03-13T11:52:41.757Z" }, 560 - ] 561 - 562 - [[package]] 563 481 name = "envier" 564 482 version = "0.5.2" 565 483 source = { registry = "https://pypi.org/simple" } ··· 1006 924 ] 1007 925 sdist = { url = "https://files.pythonhosted.org/packages/a3/1c/c42834d4fee45c5cf2d9546e97e879a1cbcdecfd16eb1a12144dcb91edae/grpcio-1.49.1.tar.gz", hash = "sha256:d4725fc9ec8e8822906ae26bb26f5546891aa7fbc3443de970cc556d43a5c99f", size = 22059239, upload-time = "2022-09-22T03:02:44.376Z" } 1008 926 wheels = [ 927 + { url = "https://files.pythonhosted.org/packages/2d/e2/aaccddb8b06637625d847dbb5fe76ec3d15a74d89d983f5202f3666706e3/grpcio-1.49.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:9fb17ff8c0d56099ac6ebfa84f670c5a62228d6b5c695cf21c02160c2ac1446b", size = 73399185, upload-time = "2022-09-22T02:57:56.219Z" }, 1009 928 { url = "https://files.pythonhosted.org/packages/90/0f/4d614d59f500835cbd27cb90743fb6b299098b0f22b8fd058d3586c933c0/grpcio-1.49.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:075f2d06e3db6b48a2157a1bcd52d6cbdca980dd18988fe6afdb41795d51625f", size = 4296299, upload-time = "2022-09-22T02:58:01.417Z" }, 1010 929 { url = "https://files.pythonhosted.org/packages/4d/ea/359a98f8b3b4ff9a2f457a0d20ed81775a64149fbb7617177ed23d9d10c9/grpcio-1.49.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc79b2b37d779ac42341ddef40ad5bf0966a64af412c89fc2b062e3ddabb093f", size = 4656437, upload-time = "2022-09-22T02:58:06.23Z" }, 1011 930 { url = "https://files.pythonhosted.org/packages/fc/89/4952d2dff95f5b95db5943b2d1b55c82a485830b992f52f212b33616b523/grpcio-1.49.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49b301740cf5bc8fed4fee4c877570189ae3951432d79fa8e524b09353659811", size = 4888051, upload-time = "2022-09-22T02:58:11.411Z" }, ··· 1134 1053 ] 1135 1054 sdist = { url = "https://files.pythonhosted.org/packages/6c/e4/3416d25aebc4477141a491fae2c9494c5e0437a706c59103a936aac7d072/grpcio-tools-1.49.1.tar.gz", hash = "sha256:84cc64e5b46bad43d5d7bd2fd772b656eba0366961187a847e908e2cb735db91", size = 2252679, upload-time = "2022-09-22T03:03:00.279Z" } 1136 1055 wheels = [ 1056 + { url = "https://files.pythonhosted.org/packages/e4/c1/ba298fe650b67c9e31a7ad88b2fe1d8d22ff2c6a9e131604054835397dfc/grpcio_tools-1.49.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:9e5c13809ab2f245398e8446c4c3b399a62d591db651e46806cccf52a700452e", size = 36912892, upload-time = "2022-09-22T03:00:51.237Z" }, 1137 1057 { url = "https://files.pythonhosted.org/packages/9c/8b/a45a39bf7d1c4956d48179831e4da88c3f6ee14dbdcb273e575bbeb7de20/grpcio_tools-1.49.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:ab3d0ee9623720ee585fdf3753b3755d3144a4a8ae35bca8e3655fa2f41056be", size = 2025040, upload-time = "2022-09-22T03:00:55.219Z" }, 1138 1058 { url = "https://files.pythonhosted.org/packages/6d/7f/89dc6036b91f8cbada98b06801ac2f5db60885000feaf88f9d7cabe665b7/grpcio_tools-1.49.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e13b3643e7577a3ec13b79689eb4d7548890b1e104c04b9ed6557a3c3dd452", size = 2370982, upload-time = "2022-09-22T03:00:59.807Z" }, 1139 1059 { url = "https://files.pythonhosted.org/packages/01/98/4730bfff6bcd3163db8c3d70689e19a1a5f419152316edfc1f13ff06a5d7/grpcio_tools-1.49.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a64bab81b220c50033f584f57978ebbea575f09c1ccee765cd5c462177988098", size = 2731915, upload-time = "2022-09-22T03:01:05.44Z" }, ··· 1234 1154 ] 1235 1155 1236 1156 [[package]] 1237 - name = "imagehash" 1238 - version = "4.3.2" 1239 - source = { registry = "https://pypi.org/simple" } 1240 - dependencies = [ 1241 - { name = "numpy" }, 1242 - { name = "pillow" }, 1243 - { name = "pywavelets" }, 1244 - { name = "scipy" }, 1245 - ] 1246 - sdist = { url = "https://files.pythonhosted.org/packages/cd/de/5c0189b0582e21583c2a213081c35a2501c0f9e51f21f6a52f55fbb9a4ff/ImageHash-4.3.2.tar.gz", hash = "sha256:e54a79805afb82a34acde4746a16540503a9636fd1ffb31d8e099b29bbbf8156", size = 303190, upload-time = "2025-02-01T08:45:39.328Z" } 1247 - wheels = [ 1248 - { url = "https://files.pythonhosted.org/packages/31/2c/5f0903a53a62029875aaa3884c38070cc388248a2c1b9aa935632669e5a7/ImageHash-4.3.2-py2.py3-none-any.whl", hash = "sha256:02b0f965f8c77cd813f61d7d39031ea27d4780e7ebcad56c6cd6a709acc06e5f", size = 296657, upload-time = "2025-02-01T08:45:36.102Z" }, 1249 - ] 1250 - 1251 - [[package]] 1252 1157 name = "importlib-metadata" 1253 1158 version = "8.7.0" 1254 1159 source = { registry = "https://pypi.org/simple" } ··· 1335 1240 ] 1336 1241 1337 1242 [[package]] 1338 - name = "iso8601" 1339 - version = "2.1.0" 1340 - source = { registry = "https://pypi.org/simple" } 1341 - sdist = { url = "https://files.pythonhosted.org/packages/b9/f3/ef59cee614d5e0accf6fd0cbba025b93b272e626ca89fb70a3e9187c5d15/iso8601-2.1.0.tar.gz", hash = "sha256:6b1d3829ee8921c4301998c909f7829fa9ed3cbdac0d3b16af2d743aed1ba8df", size = 6522, upload-time = "2023-10-03T00:25:39.317Z" } 1342 - wheels = [ 1343 - { url = "https://files.pythonhosted.org/packages/6c/0c/f37b6a241f0759b7653ffa7213889d89ad49a2b76eb2ddf3b57b2738c347/iso8601-2.1.0-py3-none-any.whl", hash = "sha256:aac4145c4dcb66ad8b648a02830f5e2ff6c24af20f4f482689be402db2429242", size = 7545, upload-time = "2023-10-03T00:25:32.304Z" }, 1344 - ] 1345 - 1346 - [[package]] 1347 1243 name = "itsdangerous" 1348 1244 version = "1.1.0" 1349 1245 source = { registry = "https://pypi.org/simple" } ··· 1377 1273 ] 1378 1274 1379 1275 [[package]] 1380 - name = "jslog4kube" 1381 - version = "1.0.6" 1382 - source = { registry = "https://pypi.org/simple" } 1383 - dependencies = [ 1384 - { name = "python-json-logger" }, 1385 - ] 1386 - sdist = { url = "https://files.pythonhosted.org/packages/58/19/a1d395d5de8998e889304b76ba2239659611bc43a2bae23cc0c9c792cbb2/jslog4kube-1.0.6.tar.gz", hash = "sha256:4b2fa3a9f9b920b74dae9d6707359b2bf62730ba502b8e92a918e8a5def036ff", size = 10971, upload-time = "2019-06-25T16:04:07.676Z" } 1387 - wheels = [ 1388 - { url = "https://files.pythonhosted.org/packages/cc/7d/484b541fdd060ac9a145e061dcd3c45ad29292db21b828add95667728550/jslog4kube-1.0.6-py2.py3-none-any.whl", hash = "sha256:07cbf494e5265198726b8203460401105e099a2816ba4ec9dae3ed5fe21322fb", size = 10881, upload-time = "2019-06-25T16:04:06.37Z" }, 1389 - ] 1390 - 1391 - [[package]] 1392 1276 name = "jsonpath-rw" 1393 1277 version = "1.4.0" 1394 1278 source = { url = "https://github.com/kennknowles/python-jsonpath-rw/archive/6f5647bb3ad2395c20f0191fef07a1df51c9fed8.tar.gz" } ··· 1473 1357 wheels = [ 1474 1358 { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, 1475 1359 ] 1476 - 1477 - [[package]] 1478 - name = "maxminddb" 1479 - version = "1.5.4" 1480 - source = { registry = "https://pypi.org/simple" } 1481 - sdist = { url = "https://files.pythonhosted.org/packages/c4/0e/7c3e05b850dfa5d94d55c475d8b4e939e73347d9263740ed8ff83f945b21/maxminddb-1.5.4.tar.gz", hash = "sha256:f4d28823d9ca23323d113dc7af8db2087aa4f657fafc64ff8f7a8afda871425b", size = 282627, upload-time = "2020-05-05T20:03:47.042Z" } 1482 1360 1483 1361 [[package]] 1484 1362 name = "mdit-py-plugins" ··· 1666 1544 ] 1667 1545 1668 1546 [[package]] 1669 - name = "numpy" 1670 - version = "1.24.4" 1671 - source = { registry = "https://pypi.org/simple" } 1672 - sdist = { url = "https://files.pythonhosted.org/packages/a4/9b/027bec52c633f6556dba6b722d9a0befb40498b9ceddd29cbe67a45a127c/numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", size = 10911229, upload-time = "2023-06-26T13:39:33.218Z" } 1673 - wheels = [ 1674 - { url = "https://files.pythonhosted.org/packages/a9/cc/5ed2280a27e5dab12994c884f1f4d8c3bd4d885d02ae9e52a9d213a6a5e2/numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", size = 19775508, upload-time = "2023-06-26T13:25:08.882Z" }, 1675 - { url = "https://files.pythonhosted.org/packages/c0/bc/77635c657a3668cf652806210b8662e1aff84b818a55ba88257abf6637a8/numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", size = 13840033, upload-time = "2023-06-26T13:25:33.417Z" }, 1676 - { url = "https://files.pythonhosted.org/packages/a7/4c/96cdaa34f54c05e97c1c50f39f98d608f96f0677a6589e64e53104e22904/numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", size = 13991951, upload-time = "2023-06-26T13:25:55.725Z" }, 1677 - { url = "https://files.pythonhosted.org/packages/22/97/dfb1a31bb46686f09e68ea6ac5c63fdee0d22d7b23b8f3f7ea07712869ef/numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", size = 17278923, upload-time = "2023-06-26T13:26:25.658Z" }, 1678 - { url = "https://files.pythonhosted.org/packages/35/e2/76a11e54139654a324d107da1d98f99e7aa2a7ef97cfd7c631fba7dbde71/numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", size = 12422446, upload-time = "2023-06-26T13:26:49.302Z" }, 1679 - { url = "https://files.pythonhosted.org/packages/d8/ec/ebef2f7d7c28503f958f0f8b992e7ce606fb74f9e891199329d5f5f87404/numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", size = 14834466, upload-time = "2023-06-26T13:27:16.029Z" }, 1680 - ] 1681 - 1682 - [[package]] 1683 1547 name = "opentelemetry-api" 1684 1548 version = "1.36.0" 1685 1549 source = { registry = "https://pypi.org/simple" } ··· 1731 1595 ] 1732 1596 1733 1597 [[package]] 1734 - name = "pdqhash" 1735 - version = "0.2.5" 1736 - source = { registry = "https://pypi.org/simple" } 1737 - sdist = { url = "https://files.pythonhosted.org/packages/98/c1/29cd086b7f7472771fb4b207ed857aae71dc183b88f1f3471ec888faa911/pdqhash-0.2.5.tar.gz", hash = "sha256:c688f3f6ea65debb6213577f46ba2be9ebb7db7d23f96ad6ed2df05832de93c3", size = 666496, upload-time = "2023-08-22T20:51:51.126Z" } 1738 - 1739 - [[package]] 1740 1598 name = "pexpect" 1741 1599 version = "4.9.0" 1742 1600 source = { registry = "https://pypi.org/simple" } ··· 1753 1611 version = "0.3.8" 1754 1612 source = { registry = "https://pypi.org/simple" } 1755 1613 sdist = { url = "https://files.pythonhosted.org/packages/5f/eb/d3fe2c10189f5b3beabc095e9112177096c807cfb6ce6880f75b08125408/phone-iso3166-0.3.8.tar.gz", hash = "sha256:0a220e13bdf1aee53bd95f235f09e7931d758240223bd4c69b6764af8b4e4cb6", size = 40067, upload-time = "2021-12-01T09:13:23.468Z" } 1756 - 1757 - [[package]] 1758 - name = "pillow" 1759 - version = "9.5.0" 1760 - source = { registry = "https://pypi.org/simple" } 1761 - sdist = { url = "https://files.pythonhosted.org/packages/00/d5/4903f310765e0ff2b8e91ffe55031ac6af77d982f0156061e20a4d1a8b2d/Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", size = 50488147, upload-time = "2023-04-01T09:31:37.159Z" } 1762 - wheels = [ 1763 - { url = "https://files.pythonhosted.org/packages/78/a8/3c2d737d856eb9cd8c18e78f6fe0ed08a2805bded74cbb0455584859023b/Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", size = 3395792, upload-time = "2023-04-01T09:28:38.917Z" }, 1764 - { url = "https://files.pythonhosted.org/packages/a9/15/310cde63cb15a091de889ded26281924cf9cfa5c000b36b06bd0c7f50261/Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", size = 3077092, upload-time = "2023-04-01T09:28:41.28Z" }, 1765 - { url = "https://files.pythonhosted.org/packages/17/66/20db69c0361902a2f6ee2086d3e83c70133e3fb4cb31470e59a8ed37184e/Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", size = 3112543, upload-time = "2023-04-01T09:28:43.89Z" }, 1766 - { url = "https://files.pythonhosted.org/packages/5c/a8/ff526cdec6b56eb20c992e7083f02c8065049ed1e62fbc159390d7a3dd5e/Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", size = 3386654, upload-time = "2023-04-01T09:28:46.378Z" }, 1767 - { url = "https://files.pythonhosted.org/packages/3b/70/e9a45a2e9c58c23e023fcda5af9686f5b42c718cc9bc86194e0025cf0ec5/Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", size = 3308566, upload-time = "2023-04-01T09:28:49.521Z" }, 1768 - { url = "https://files.pythonhosted.org/packages/61/a5/ee306d6cc53c9a30c23ba2313b43b67fdf76c611ca5afd0cdd62922cbd3e/Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", size = 3164027, upload-time = "2023-04-01T09:28:52.295Z" }, 1769 - { url = "https://files.pythonhosted.org/packages/3d/59/e6bd2c3715ace343d9739276ceed79657fe116923238d102cf731ab463dd/Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", size = 3415610, upload-time = "2023-04-01T09:28:54.667Z" }, 1770 - { url = "https://files.pythonhosted.org/packages/9a/6d/9beb596ba5a5e61081c843187bcdbb42a5c9a9ef552751b554894247da7a/Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579", size = 3350704, upload-time = "2023-04-01T09:28:57.098Z" }, 1771 - { url = "https://files.pythonhosted.org/packages/1e/e4/de633d85be3b3c770c554a37a89e8273069bd19c34b15a419c2795600310/Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", size = 3414604, upload-time = "2023-04-01T09:29:03.375Z" }, 1772 - { url = "https://files.pythonhosted.org/packages/46/a0/e410f655300932308e70e883dd60c0c51e6f74bed138641ea9193e64fd7c/Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", size = 2211929, upload-time = "2023-04-01T09:29:06.338Z" }, 1773 - { url = "https://files.pythonhosted.org/packages/0c/02/7729c8aecbc525b560c7eb283ffa34c6f5a6d0ed6d1339570c65a3e63088/Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", size = 2511551, upload-time = "2023-04-01T09:29:08.636Z" }, 1774 - { url = "https://files.pythonhosted.org/packages/b9/8b/d38cc68796be4ac238db327682a1acfbc5deccf64a150aa44ee1efbaafae/Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", size = 2489206, upload-time = "2023-04-01T20:01:51.312Z" }, 1775 - { url = "https://files.pythonhosted.org/packages/5d/38/b7bcbab3bfe1946ba9cf71c1fa03e541b498069457be49eadcdc229412ef/Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", size = 2211914, upload-time = "2023-04-01T09:29:10.935Z" }, 1776 - { url = "https://files.pythonhosted.org/packages/29/8a/f4cf3f32bc554f9260b645ea1151449ac13525796d3d1a42076d75945d8d/Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", size = 2511483, upload-time = "2023-04-01T09:29:13.217Z" }, 1777 - ] 1778 1614 1779 1615 [[package]] 1780 1616 name = "plac" ··· 1934 1770 ] 1935 1771 1936 1772 [[package]] 1937 - name = "py" 1938 - version = "1.11.0" 1939 - source = { registry = "https://pypi.org/simple" } 1940 - sdist = { url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", size = 207796, upload-time = "2021-11-04T17:17:01.377Z" } 1941 - wheels = [ 1942 - { url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378", size = 98708, upload-time = "2021-11-04T17:17:00.152Z" }, 1943 - ] 1944 - 1945 - [[package]] 1946 1773 name = "pyasn1" 1947 1774 version = "0.6.1" 1948 1775 source = { registry = "https://pypi.org/simple" } ··· 2109 1936 ] 2110 1937 2111 1938 [[package]] 2112 - name = "python-jose" 2113 - version = "3.5.0" 2114 - source = { registry = "https://pypi.org/simple" } 2115 - dependencies = [ 2116 - { name = "ecdsa" }, 2117 - { name = "pyasn1" }, 2118 - { name = "rsa" }, 2119 - ] 2120 - sdist = { url = "https://files.pythonhosted.org/packages/c6/77/3a1c9039db7124eb039772b935f2244fbb73fc8ee65b9acf2375da1c07bf/python_jose-3.5.0.tar.gz", hash = "sha256:fb4eaa44dbeb1c26dcc69e4bd7ec54a1cb8dd64d3b4d81ef08d90ff453f2b01b", size = 92726, upload-time = "2025-05-28T17:31:54.288Z" } 2121 - wheels = [ 2122 - { url = "https://files.pythonhosted.org/packages/d9/c3/0bd11992072e6a1c513b16500a5d07f91a24017c5909b02c72c62d7ad024/python_jose-3.5.0-py2.py3-none-any.whl", hash = "sha256:abd1202f23d34dfad2c3d28cb8617b90acf34132c7afd60abd0b0b7d3cb55771", size = 34624, upload-time = "2025-05-28T17:31:52.802Z" }, 2123 - ] 2124 - 2125 - [[package]] 2126 1939 name = "python-json-logger" 2127 1940 version = "0.1.10" 2128 1941 source = { registry = "https://pypi.org/simple" } ··· 2150 1963 ] 2151 1964 2152 1965 [[package]] 2153 - name = "pywavelets" 2154 - version = "1.8.0" 2155 - source = { registry = "https://pypi.org/simple" } 2156 - dependencies = [ 2157 - { name = "numpy" }, 2158 - ] 2159 - sdist = { url = "https://files.pythonhosted.org/packages/48/45/bfaaab38545a33a9f06c61211fc3bea2e23e8a8e00fedeb8e57feda722ff/pywavelets-1.8.0.tar.gz", hash = "sha256:f3800245754840adc143cbc29534a1b8fc4b8cff6e9d403326bd52b7bb5c35aa", size = 3935274, upload-time = "2024-12-04T19:54:20.593Z" } 2160 - wheels = [ 2161 - { url = "https://files.pythonhosted.org/packages/6c/8a/9f8e794120b55caa1c4ae8d72696111bc408251615f351a8e54a5d8c4d4e/pywavelets-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e8dd5be4faed994581a8a4b3c0169be20567a9346e523f0b57f903c8f6722bce", size = 4324170, upload-time = "2024-12-04T19:53:19.66Z" }, 2162 - { url = "https://files.pythonhosted.org/packages/3e/b8/f6246be5c78e9fa73fcbba9ab4cbfe0d4dcb79ea5491f28d673a53466134/pywavelets-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8d8abaf7c120b151ef309c9ff57e0a44ba9febf49045056dbc1577526ecec6c8", size = 4294254, upload-time = "2024-12-04T19:53:21.767Z" }, 2163 - { url = "https://files.pythonhosted.org/packages/2c/dc/ba1f212e9b43117ed28e0fd092e72e817790427400f88937ea742d260153/pywavelets-1.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b43a4c58707b1e8d941bec7f1d83e67c482278575ff0db3189d5c0dfae23a57", size = 4447178, upload-time = "2024-12-04T19:53:23.525Z" }, 2164 - { url = "https://files.pythonhosted.org/packages/58/10/e59c162a11d2fedb4454abbf7b74a52390aba5edc9605bf829bfa8708dac/pywavelets-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1aad0b97714e3079a2bfe48e4fb8ccd60778d0427e9ee5e0a9ff922e6c61e4", size = 4486799, upload-time = "2024-12-04T19:53:25.238Z" }, 2165 - { url = "https://files.pythonhosted.org/packages/03/ee/90c3d0a0a3bda74e6e097e4c06bff9446ff2a4c90b8617aaf4902c46966b/pywavelets-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0e1db96dcf3ce08156859df8b359e9ff66fa15061a1b90e70e020bf4cd077a0", size = 4486403, upload-time = "2024-12-04T19:53:26.954Z" }, 2166 - { url = "https://files.pythonhosted.org/packages/05/54/58b87f8b636a9f044f3f9814d2ec696cf25f3b33af97c11811f13c364085/pywavelets-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e62c8fb52ab0e8ff212fff9acae681a8f12d68b76c36fe24cc48809d5b6825ba", size = 4515011, upload-time = "2024-12-04T19:53:28.832Z" }, 2167 - { url = "https://files.pythonhosted.org/packages/a1/d0/f755cee11ff20668114942d0e777e2b502a8e4665e1fdb2553b587aac637/pywavelets-1.8.0-cp311-cp311-win32.whl", hash = "sha256:bf327528d10de471b04bb725c4e10677fac5a49e13d41bf0d0b3a1f6d7097abf", size = 4139934, upload-time = "2024-12-04T19:53:31.421Z" }, 2168 - { url = "https://files.pythonhosted.org/packages/7b/0b/f4b92d4f00565280ea3e62a8e3dc81a667d67ed7bd59232f2f18d55f9aff/pywavelets-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:3814d354dd109e244ffaac3d480d29a5202212fe24570c920268237c8d276f95", size = 4214321, upload-time = "2024-12-04T19:53:33.183Z" }, 2169 - { url = "https://files.pythonhosted.org/packages/2d/8b/4870f11559307416470158a5aa6f61e5c2a910f1645a7a836ffae580b7ad/pywavelets-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3f431c9e2aff1a2240765eff5e804975d0fcc24c82d6f3d4271243f228e5963b", size = 4326187, upload-time = "2024-12-04T19:53:35.19Z" }, 2170 - { url = "https://files.pythonhosted.org/packages/c4/35/66835d889fd7fbf3119c7a9bd9d9bd567fc0bb603dfba408e9226db7cb44/pywavelets-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e39b0e2314e928cb850ee89b9042733a10ea044176a495a54dc84d2c98407a51", size = 4295428, upload-time = "2024-12-04T19:53:36.962Z" }, 2171 - { url = "https://files.pythonhosted.org/packages/63/1c/42e5130226538c70d4bbbaee00eb1bc06ec3287f7ea43d5fcf85bfc761ce/pywavelets-1.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cae701117f5c7244b7c8d48b9e92a0289637cdc02a9c205e8be83361f0c11fae", size = 4421259, upload-time = "2024-12-04T19:53:39.119Z" }, 2172 - { url = "https://files.pythonhosted.org/packages/6f/c5/1ce93657432e22a5debc21e8b52ec6980f819ecb7fa727bb86744224d967/pywavelets-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649936baee933e80083788e0adc4d8bc2da7cdd8b10464d3b113475be2cc5308", size = 4447650, upload-time = "2024-12-04T19:53:41.589Z" }, 2173 - { url = "https://files.pythonhosted.org/packages/b9/d6/b54ef30daca71824f811f9d2322a978b0a58d27674b8e3af6520f67e9ec6/pywavelets-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8c68e9d072c536bc646e8bdce443bb1826eeb9aa21b2cb2479a43954dea692a3", size = 4448538, upload-time = "2024-12-04T19:53:44.308Z" }, 2174 - { url = "https://files.pythonhosted.org/packages/ce/8c/1688b790e55674667ad644262f174405c2c9873cb13e773432e78b1b33e4/pywavelets-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:63f67fa2ee1610445de64f746fb9c1df31980ad13d896ea2331fc3755f49b3ae", size = 4485228, upload-time = "2024-12-04T19:53:46.778Z" }, 2175 - { url = "https://files.pythonhosted.org/packages/c9/9b/69de31c3b663dadd76d1da6bf8af68d8cefff55df8e880fe96a94bb8c9ac/pywavelets-1.8.0-cp312-cp312-win32.whl", hash = "sha256:4b3c2ab669c91e3474fd63294355487b7dd23f0b51d32f811327ddf3546f4f3d", size = 4134850, upload-time = "2024-12-04T19:53:49.101Z" }, 2176 - { url = "https://files.pythonhosted.org/packages/1c/88/9e2aa9d5fde08bfc0fb18ffb1b5307c1ed49c24930b4147e5f48571a7251/pywavelets-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:810a23a631da596fef7196ddec49b345b1aab13525bb58547eeebe1769edbbc1", size = 4210786, upload-time = "2024-12-04T19:53:51.546Z" }, 2177 - { url = "https://files.pythonhosted.org/packages/94/73/7ff347d77c6bda11330565050c3346c54bc210086380abeb84e402c1c9cd/pywavelets-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:441ba45c8dff8c6916dbe706958d0d7f91da675695ca0c0d75e483f6f52d0a12", size = 4321474, upload-time = "2024-12-04T19:53:53.369Z" }, 2178 - { url = "https://files.pythonhosted.org/packages/b0/70/c58937ebbca1aba3475ca5ee63c7bcebf09f3c93891ae5942eaec7e95707/pywavelets-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:24bb282bab09349d9d128ed0536fa50fff5c2147891971a69c2c36155dfeeeac", size = 4291502, upload-time = "2024-12-04T19:53:55.396Z" }, 2179 - { url = "https://files.pythonhosted.org/packages/da/55/87b4ad6128b2e85985908e958e856e0b680cdcc03cc490e2cc995164b13a/pywavelets-1.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:426ff3799446cb4da1db04c2084e6e58edfe24225596805665fd39c14f53dece", size = 4412669, upload-time = "2024-12-04T19:53:57.393Z" }, 2180 - { url = "https://files.pythonhosted.org/packages/bf/1a/bfca9eab23bd7b27843b0ce95c47796033a7b2c93048315f5fc5d6ac6428/pywavelets-1.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa0607a9c085b8285bc0d04e33d461a6c80f8c325389221ffb1a45141861138e", size = 4454604, upload-time = "2024-12-04T19:53:59.105Z" }, 2181 - { url = "https://files.pythonhosted.org/packages/c3/23/9ce38829f57159e812c469c4f9d7b5a16c1ba922c1802985e8c504468206/pywavelets-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d31c36a39110e8fcc7b1a4a11cfed7d22b610c285d3e7f4fe73ec777aa49fa39", size = 4445507, upload-time = "2024-12-04T19:54:00.78Z" }, 2182 - { url = "https://files.pythonhosted.org/packages/e5/d2/e78a976b0600a6ef7a70f4430122d6ad11b3e1cbda3c8b3565661d094678/pywavelets-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa7c68ed1e5bab23b1bafe60ccbcf709b878652d03de59e961baefa5210fcd0a", size = 4479078, upload-time = "2024-12-04T19:54:02.46Z" }, 2183 - { url = "https://files.pythonhosted.org/packages/85/4d/1c4f870010368f3aeb0bdd72929376a1988e4a122e76545bd8c56e549c96/pywavelets-1.8.0-cp313-cp313-win32.whl", hash = "sha256:2c6b359b55d713ef683e9da1529181b865a80d759881ceb9adc1c5742e4da4d8", size = 4133763, upload-time = "2024-12-04T19:54:04.016Z" }, 2184 - { url = "https://files.pythonhosted.org/packages/c9/4f/0a709a5732e6cf9297fc87bf545cb879997cde204115f8c0cbc296c5bdd3/pywavelets-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:4dbebcfd55ea8a85b7fc8802d411e75337170422abf6e96019d7e46c394e80e5", size = 4209548, upload-time = "2024-12-04T19:54:06.61Z" }, 2185 - { url = "https://files.pythonhosted.org/packages/de/2a/4cac0bba67d3bc0ad697d0680539864db0a6964c7ad953d8d9d887f360b3/pywavelets-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:2e1c79784bebeafd3715c1bea6621daa2e2e6ed37b687719322e2078fb35bb70", size = 4335183, upload-time = "2024-12-04T19:54:08.349Z" }, 2186 - { url = "https://files.pythonhosted.org/packages/58/d1/3abe4cf34a35b09ad847f0e9a85f340c1988611222926d295fa8710659e7/pywavelets-1.8.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f489380c95013cc8fb3ef338f6d8c1a907125db453cc4dc739e2cca06fcd8b6", size = 4454723, upload-time = "2024-12-04T19:54:11.007Z" }, 2187 - { url = "https://files.pythonhosted.org/packages/d5/62/f05dd191232ae94e0b48509bb0ee65c9d45abf5e8f3612b09fd309b41384/pywavelets-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:06786201a91b5e74540f4f3c115c49a29190de2eb424823abbd3a1fd75ea3e28", size = 4472192, upload-time = "2024-12-04T19:54:12.754Z" }, 2188 - { url = "https://files.pythonhosted.org/packages/20/6a/257c95ad1e0fd395cbccd4ffec0d01cc9b51a3bb91e67d8fa10ffebc9c72/pywavelets-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:f2877fb7b58c94211257dcf364b204d6ed259146fc87d5a90bf9d93c97af6226", size = 4183968, upload-time = "2024-12-04T19:54:15.099Z" }, 2189 - { url = "https://files.pythonhosted.org/packages/6c/58/7179fd6f87153f2e339171e8cfe9bf901398a89045eefd7a3911bb9b47ad/pywavelets-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ec5d723c3335ff8aa630fd4b14097077f12cc02893c91cafd60dd7b1730e780f", size = 4265431, upload-time = "2024-12-04T19:54:16.928Z" }, 2190 - ] 2191 - 2192 - [[package]] 2193 1966 name = "pyyaml" 2194 1967 version = "6.0.1" 2195 1968 source = { registry = "https://pypi.org/simple" } ··· 2250 2023 ] 2251 2024 2252 2025 [[package]] 2253 - name = "retry" 2254 - version = "0.9.2" 2255 - source = { registry = "https://pypi.org/simple" } 2256 - dependencies = [ 2257 - { name = "decorator" }, 2258 - { name = "py" }, 2259 - ] 2260 - sdist = { url = "https://files.pythonhosted.org/packages/9d/72/75d0b85443fbc8d9f38d08d2b1b67cc184ce35280e4a3813cda2f445f3a4/retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4", size = 6448, upload-time = "2016-05-11T13:58:51.541Z" } 2261 - wheels = [ 2262 - { url = "https://files.pythonhosted.org/packages/4b/0d/53aea75710af4528a25ed6837d71d117602b01946b307a3912cb3cfcbcba/retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606", size = 7986, upload-time = "2016-05-11T13:58:39.925Z" }, 2263 - ] 2264 - 2265 - [[package]] 2266 2026 name = "rich" 2267 2027 version = "14.1.0" 2268 2028 source = { registry = "https://pypi.org/simple" } ··· 2311 2071 { url = "https://files.pythonhosted.org/packages/4e/02/bb3ff8b6e6d02ce9e3740f4c17dfbbfb55f34c789c139e9cd91985f356c7/ruff-0.14.11-py3-none-win32.whl", hash = "sha256:337c5dd11f16ee52ae217757d9b82a26400be7efac883e9e852646f1557ed841", size = 12851094, upload-time = "2026-01-08T19:11:45.163Z" }, 2312 2072 { url = "https://files.pythonhosted.org/packages/58/f1/90ddc533918d3a2ad628bc3044cdfc094949e6d4b929220c3f0eb8a1c998/ruff-0.14.11-py3-none-win_amd64.whl", hash = "sha256:f981cea63d08456b2c070e64b79cb62f951aa1305282974d4d5216e6e0178ae6", size = 14001379, upload-time = "2026-01-08T19:11:52.591Z" }, 2313 2073 { url = "https://files.pythonhosted.org/packages/c4/1c/1dbe51782c0e1e9cfce1d1004752672d2d4629ea46945d19d731ad772b3b/ruff-0.14.11-py3-none-win_arm64.whl", hash = "sha256:649fb6c9edd7f751db276ef42df1f3df41c38d67d199570ae2a7bd6cbc3590f0", size = 12938644, upload-time = "2026-01-08T19:11:50.027Z" }, 2314 - ] 2315 - 2316 - [[package]] 2317 - name = "scipy" 2318 - version = "1.15.3" 2319 - source = { registry = "https://pypi.org/simple" } 2320 - dependencies = [ 2321 - { name = "numpy" }, 2322 - ] 2323 - sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } 2324 - wheels = [ 2325 - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, 2326 - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, 2327 - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, 2328 - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, 2329 - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, 2330 - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, 2331 - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, 2332 - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, 2333 - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, 2334 - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, 2335 - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, 2336 - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, 2337 - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, 2338 - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, 2339 - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, 2340 - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, 2341 - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, 2342 - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, 2343 - { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, 2344 - { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, 2345 - { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, 2346 - { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, 2347 - { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, 2348 - { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, 2349 - { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, 2350 - { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, 2351 - { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, 2352 - { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, 2353 - { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, 2354 - { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, 2355 - { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, 2356 - { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, 2357 - { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, 2358 - { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, 2359 - { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, 2360 - { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, 2361 2074 ] 2362 2075 2363 2076 [[package]]