fastapi-commons 0.6.2__tar.gz → 0.6.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {fastapi_commons-0.6.2/src/fastapi_commons.egg-info → fastapi_commons-0.6.3}/PKG-INFO +3 -3
  2. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/pyproject.toml +5 -2
  3. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3/src/fastapi_commons.egg-info}/PKG-INFO +3 -3
  4. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons.egg-info/requires.txt +2 -2
  5. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/uv.lock +89 -20
  6. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.coveragerc +0 -0
  7. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.env_template +0 -0
  8. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.github/workflows/checks.yml +0 -0
  9. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.github/workflows/python-publish.yaml +0 -0
  10. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.github/workflows/release-on-tag-push.yml +0 -0
  11. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.gitignore +0 -0
  12. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.pre-commit-config.yaml +0 -0
  13. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/.python-version +0 -0
  14. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/AUTHORS.rst +0 -0
  15. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/CHANGELOG.rst +0 -0
  16. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/LICENSE +0 -0
  17. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/README.md +0 -0
  18. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/README.rst +0 -0
  19. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/setup.cfg +0 -0
  20. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/__init__.py +0 -0
  21. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/auth.py +0 -0
  22. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/conf.py +0 -0
  23. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/handlers.py +0 -0
  24. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/helpers.py +0 -0
  25. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/instrumentation.py +0 -0
  26. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/log/__init__.py +0 -0
  27. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/log/filters.py +0 -0
  28. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/middleware/__init__.py +0 -0
  29. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/middleware/correlation_id.py +0 -0
  30. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/middleware/log_context.py +0 -0
  31. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons/middleware/prometheus.py +0 -0
  32. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons.egg-info/SOURCES.txt +0 -0
  33. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons.egg-info/dependency_links.txt +0 -0
  34. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/src/fastapi_commons.egg-info/top_level.txt +0 -0
  35. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/tests/__init__.py +0 -0
  36. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/tests/conftest.py +0 -0
  37. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/tests/unit/__init__.py +0 -0
  38. {fastapi_commons-0.6.2 → fastapi_commons-0.6.3}/tests/unit/test_poc.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-commons
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Re-usable FastAPI code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0
@@ -14,7 +14,7 @@ License-File: LICENSE
14
14
  License-File: AUTHORS.rst
15
15
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.1
16
16
  Requires-Dist: asyncpg~=0.31.0
17
- Requires-Dist: fastapi~=0.137.1
17
+ Requires-Dist: fastapi~=0.136.3
18
18
  Requires-Dist: msgspec~=0.21.1
19
19
  Requires-Dist: pydantic[email]~=2.13.4
20
20
  Requires-Dist: pydantic-settings~=2.14.1
@@ -26,7 +26,7 @@ Requires-Dist: opentelemetry-exporter-otlp~=1.42.1
26
26
  Requires-Dist: opentelemetry-instrumentation-fastapi~=0.63b1
27
27
  Requires-Dist: opentelemetry-instrumentation-logging~=0.63b1
28
28
  Requires-Dist: prometheus-client~=0.25.0
29
- Requires-Dist: python3-commons[authn]~=0.22.3
29
+ Requires-Dist: python3-commons[authn]~=0.22.4
30
30
  Dynamic: license-file
31
31
 
32
32
  FastAPI commons
@@ -20,7 +20,7 @@ requires-python = ">=3.14.0,<3.15.0"
20
20
  dependencies = [
21
21
  "aiohttp[speedups]>=3.14.1,<3.15.0",
22
22
  "asyncpg~=0.31.0",
23
- "fastapi~=0.137.1",
23
+ "fastapi~=0.136.3",
24
24
  "msgspec~=0.21.1",
25
25
  "pydantic[email]~=2.13.4",
26
26
  "pydantic-settings~=2.14.1",
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "opentelemetry-instrumentation-fastapi~=0.63b1",
33
33
  "opentelemetry-instrumentation-logging~=0.63b1",
34
34
  "prometheus-client~=0.25.0",
35
- "python3-commons[authn]~=0.22.3",
35
+ "python3-commons[authn]~=0.22.4",
36
36
  ]
37
37
 
38
38
  [dependency-groups]
@@ -40,8 +40,11 @@ dev = [
40
40
  "build",
41
41
  "pip",
42
42
  "pre-commit",
43
+ "pyright",
44
+ "ruff",
43
45
  "setuptools",
44
46
  "setuptools_scm",
47
+ "ty",
45
48
  "types-aiobotocore-s3",
46
49
  "wheel",
47
50
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-commons
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Re-usable FastAPI code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0
@@ -14,7 +14,7 @@ License-File: LICENSE
14
14
  License-File: AUTHORS.rst
15
15
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.1
16
16
  Requires-Dist: asyncpg~=0.31.0
17
- Requires-Dist: fastapi~=0.137.1
17
+ Requires-Dist: fastapi~=0.136.3
18
18
  Requires-Dist: msgspec~=0.21.1
19
19
  Requires-Dist: pydantic[email]~=2.13.4
20
20
  Requires-Dist: pydantic-settings~=2.14.1
@@ -26,7 +26,7 @@ Requires-Dist: opentelemetry-exporter-otlp~=1.42.1
26
26
  Requires-Dist: opentelemetry-instrumentation-fastapi~=0.63b1
27
27
  Requires-Dist: opentelemetry-instrumentation-logging~=0.63b1
28
28
  Requires-Dist: prometheus-client~=0.25.0
29
- Requires-Dist: python3-commons[authn]~=0.22.3
29
+ Requires-Dist: python3-commons[authn]~=0.22.4
30
30
  Dynamic: license-file
31
31
 
32
32
  FastAPI commons
@@ -1,6 +1,6 @@
1
1
  aiohttp[speedups]<3.15.0,>=3.14.1
2
2
  asyncpg~=0.31.0
3
- fastapi~=0.137.1
3
+ fastapi~=0.136.3
4
4
  msgspec~=0.21.1
5
5
  pydantic[email]~=2.13.4
6
6
  pydantic-settings~=2.14.1
@@ -12,4 +12,4 @@ opentelemetry-exporter-otlp~=1.42.1
12
12
  opentelemetry-instrumentation-fastapi~=0.63b1
13
13
  opentelemetry-instrumentation-logging~=0.63b1
14
14
  prometheus-client~=0.25.0
15
- python3-commons[authn]~=0.22.3
15
+ python3-commons[authn]~=0.22.4
@@ -147,14 +147,14 @@ wheels = [
147
147
 
148
148
  [[package]]
149
149
  name = "anyio"
150
- version = "4.13.0"
150
+ version = "4.14.0"
151
151
  source = { registry = "https://pypi.org/simple" }
152
152
  dependencies = [
153
153
  { name = "idna" },
154
154
  ]
155
- sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" }
155
+ sdist = { url = "https://files.pythonhosted.org/packages/1c/b5/001890774a9552aff22502b8da382593109ce0c95314abaebbb116567545/anyio-4.14.0.tar.gz", hash = "sha256:b47c1f9ccf73e67021df785332508f99379c68fa7d0684e8e3492cb1d4b23f89", size = 253586, upload-time = "2026-06-15T22:00:49.021Z" }
156
156
  wheels = [
157
- { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" },
157
+ { url = "https://files.pythonhosted.org/packages/ba/16/9826f089383c593cdfc4a6e5aca94d9e91ae1692c57af82c3b2aa5e810f7/anyio-4.14.0-py3-none-any.whl", hash = "sha256:dd9b7a2a9799ed6552fde617b2c5df02b7fdd7d88392fc48101e51bae46164d9", size = 123506, upload-time = "2026-06-15T22:00:47.595Z" },
158
158
  ]
159
159
 
160
160
  [[package]]
@@ -451,7 +451,7 @@ wheels = [
451
451
 
452
452
  [[package]]
453
453
  name = "fastapi"
454
- version = "0.137.1"
454
+ version = "0.136.3"
455
455
  source = { registry = "https://pypi.org/simple" }
456
456
  dependencies = [
457
457
  { name = "annotated-doc" },
@@ -460,9 +460,9 @@ dependencies = [
460
460
  { name = "typing-extensions" },
461
461
  { name = "typing-inspection" },
462
462
  ]
463
- sdist = { url = "https://files.pythonhosted.org/packages/d5/b1/e5b92c59d2c37817e77c1a8c2fc1f79cdcc04c68253e5406b43e3204cba7/fastapi-0.137.1.tar.gz", hash = "sha256:822360704230d9533d8d9475399613525968aa2f0b5bd2a3ccc9f18c88fd541c", size = 408293, upload-time = "2026-06-15T11:28:20.79Z" }
463
+ sdist = { url = "https://files.pythonhosted.org/packages/81/2d/ff8d91d7b564d464629a0fd50a4489c97fcb836ac230bf3a7269232a9b1f/fastapi-0.136.3.tar.gz", hash = "sha256:e487fae93ad408e6f47641ee4dfe389864fd7bec92e547ea8498fc13f43e83ab", size = 396410, upload-time = "2026-05-23T18:53:15.192Z" }
464
464
  wheels = [
465
- { url = "https://files.pythonhosted.org/packages/da/35/380b9a5922f4340e51c309cde09e5bd32e62f02302971bee30dc15aa0624/fastapi-0.137.1-py3-none-any.whl", hash = "sha256:64f6983c59e45c4b9fdc44e57cb8035c2451ee91ea8e8ec042aca37de7cf6b69", size = 121877, upload-time = "2026-06-15T11:28:19.523Z" },
465
+ { url = "https://files.pythonhosted.org/packages/e0/82/45359b62a067409bd929ae8a56b8ed13e5a8c8a61194b3c236920999ab83/fastapi-0.136.3-py3-none-any.whl", hash = "sha256:3d2a69bdf04b7e9f3afa292c3bc7a98816bbfafa10bc9b45f3f3700d2f761620", size = 117481, upload-time = "2026-05-23T18:53:16.924Z" },
466
466
  ]
467
467
 
468
468
  [[package]]
@@ -491,8 +491,11 @@ dev = [
491
491
  { name = "build" },
492
492
  { name = "pip" },
493
493
  { name = "pre-commit" },
494
+ { name = "pyright" },
495
+ { name = "ruff" },
494
496
  { name = "setuptools" },
495
497
  { name = "setuptools-scm" },
498
+ { name = "ty" },
496
499
  { name = "types-aiobotocore-s3" },
497
500
  { name = "wheel" },
498
501
  ]
@@ -507,7 +510,7 @@ testing = [
507
510
  requires-dist = [
508
511
  { name = "aiohttp", extras = ["speedups"], specifier = ">=3.14.1,<3.15.0" },
509
512
  { name = "asyncpg", specifier = "~=0.31.0" },
510
- { name = "fastapi", specifier = "~=0.137.1" },
513
+ { name = "fastapi", specifier = "~=0.136.3" },
511
514
  { name = "msgspec", specifier = "~=0.21.1" },
512
515
  { name = "opentelemetry-api", specifier = "~=1.42.1" },
513
516
  { name = "opentelemetry-exporter-otlp", specifier = "~=1.42.1" },
@@ -518,7 +521,7 @@ requires-dist = [
518
521
  { name = "pydantic", extras = ["email"], specifier = "~=2.13.4" },
519
522
  { name = "pydantic-settings", specifier = "~=2.14.1" },
520
523
  { name = "python-jose", specifier = "~=3.5.0" },
521
- { name = "python3-commons", extras = ["authn"], specifier = "~=0.22.3" },
524
+ { name = "python3-commons", extras = ["authn"], specifier = "~=0.22.4" },
522
525
  { name = "sqlalchemy", extras = ["asyncio"], specifier = "~=2.0.51" },
523
526
  ]
524
527
 
@@ -527,8 +530,11 @@ dev = [
527
530
  { name = "build" },
528
531
  { name = "pip" },
529
532
  { name = "pre-commit" },
533
+ { name = "pyright" },
534
+ { name = "ruff" },
530
535
  { name = "setuptools" },
531
536
  { name = "setuptools-scm" },
537
+ { name = "ty" },
532
538
  { name = "types-aiobotocore-s3" },
533
539
  { name = "wheel" },
534
540
  ]
@@ -885,14 +891,14 @@ wheels = [
885
891
 
886
892
  [[package]]
887
893
  name = "object-storage-client"
888
- version = "0.0.35"
894
+ version = "0.0.37"
889
895
  source = { registry = "https://pypi.org/simple" }
890
- sdist = { url = "https://files.pythonhosted.org/packages/56/c0/6a0df08fba3262523e6f33b4ff26ec1d28c5da4086b0b4a6bbf867b4cfdc/object_storage_client-0.0.35.tar.gz", hash = "sha256:310a6aaeac574a54dd8c0505edde121188027190dd2123a1ce7d864604a992e3", size = 68254, upload-time = "2026-06-09T14:43:33.964Z" }
896
+ sdist = { url = "https://files.pythonhosted.org/packages/85/0c/454ee97e24a53f6e3ce95286ae63efdbf84bbe05a8d29c11509397347d21/object_storage_client-0.0.37.tar.gz", hash = "sha256:50ccaa1aa2a2f36dbeea1c919125df306b1871ed5b257f69818981c0fd114449", size = 69385, upload-time = "2026-06-16T10:54:57.08Z" }
891
897
  wheels = [
892
- { url = "https://files.pythonhosted.org/packages/3c/ed/b0981b77871c1749028630a7148c807f05f7601f0934427d7084992823d5/object_storage_client-0.0.35-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32c6da5456cf64328f2826ea3ee66ae17caa5470742d698ad08db2a27e0c0e25", size = 3333174, upload-time = "2026-06-09T14:43:39.684Z" },
893
- { url = "https://files.pythonhosted.org/packages/f2/85/b02714a0c328845fdef44d449e7018269ea28edef71e92bdb9abe4c1cf9e/object_storage_client-0.0.35-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac4214d4dcc0a4a06b031cd4928cdaba07dde84fa16b954d8fc74cdb7caa6d25", size = 3769024, upload-time = "2026-06-09T14:43:32.755Z" },
894
- { url = "https://files.pythonhosted.org/packages/47/45/0969f5e6dda7d3c28ef7fc12c780bfda0ebc2049501d0847387751999be6/object_storage_client-0.0.35-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:cf1103d4cb477112018e37d69100f4a708243aab6bf7f83887a56fb212a1543e", size = 3504105, upload-time = "2026-06-09T14:43:29.565Z" },
895
- { url = "https://files.pythonhosted.org/packages/fa/47/d0c6a34ec5fab7c63a10f0427242769ed21169042e3d8baa3a6de9491062/object_storage_client-0.0.35-cp314-cp314-win_amd64.whl", hash = "sha256:5b313a2d2f4e1f044ae367124646435c565785d5e47c93e96aded9bbf26bbdab", size = 3270586, upload-time = "2026-06-09T14:43:35.432Z" },
898
+ { url = "https://files.pythonhosted.org/packages/76/09/45e8087b408a3a30cf774f5beb596068003892b500353f120fd53369edbf/object_storage_client-0.0.37-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:64b18d759d92e2c819234c56b41abfcf1403a6658bc5aa0a6abc84a7e47ed463", size = 3327631, upload-time = "2026-06-16T10:54:51.745Z" },
899
+ { url = "https://files.pythonhosted.org/packages/95/7a/9fea9cb06f395966c7dec001496a9ef3d436c3ac3e644d42773bb72dbbd1/object_storage_client-0.0.37-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac5cc375983756d5f4b11898693bef68de4021053c95d5e64e689454250b0885", size = 3767425, upload-time = "2026-06-16T10:54:54.463Z" },
900
+ { url = "https://files.pythonhosted.org/packages/89/e4/a97eb2034edb78c4ce6bf9172715abb8023357cb69e9db919e22d728bbac/object_storage_client-0.0.37-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:52ff75cf30d54b9055b12a6301eb2ea492fb3b2b2ef955810d17d9632e861864", size = 3502673, upload-time = "2026-06-16T10:54:50.464Z" },
901
+ { url = "https://files.pythonhosted.org/packages/2c/c3/f06a401edae247b9f251f06ae933d7cbc18f0b671536897874538ee4473b/object_storage_client-0.0.37-cp314-cp314-win_amd64.whl", hash = "sha256:a8cadf75c47fc3bf5b496cb29777da6a3ce2a9231d72527259962dedbd47cd6a", size = 3257348, upload-time = "2026-06-16T10:54:55.948Z" },
896
902
  ]
897
903
 
898
904
  [[package]]
@@ -1342,6 +1348,19 @@ wheels = [
1342
1348
  { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216, upload-time = "2024-09-29T09:24:11.978Z" },
1343
1349
  ]
1344
1350
 
1351
+ [[package]]
1352
+ name = "pyright"
1353
+ version = "1.1.410"
1354
+ source = { registry = "https://pypi.org/simple" }
1355
+ dependencies = [
1356
+ { name = "nodeenv" },
1357
+ { name = "typing-extensions" },
1358
+ ]
1359
+ sdist = { url = "https://files.pythonhosted.org/packages/10/53/e4d8ea1391bd4355231be6f91bf239479aa0014260ed3fb5526eeb12a1f2/pyright-1.1.410.tar.gz", hash = "sha256:07a073b8ba6749826773c1269773efa11b93440d9a6aa60419d9a3172d6dc488", size = 4062013, upload-time = "2026-06-01T17:35:48.894Z" }
1360
+ wheels = [
1361
+ { url = "https://files.pythonhosted.org/packages/d7/33/288b5868fa00846dacf249633719d747893e54aebd196b9968ac1878a5d3/pyright-1.1.410-py3-none-any.whl", hash = "sha256:5e961bed37cacf96b3f7cd7b1da39b350a9239aa2e69138d0e88f728cfaf296c", size = 6082448, upload-time = "2026-06-01T17:35:46.387Z" },
1362
+ ]
1363
+
1345
1364
  [[package]]
1346
1365
  name = "pytest"
1347
1366
  version = "9.1.0"
@@ -1446,16 +1465,16 @@ wheels = [
1446
1465
 
1447
1466
  [[package]]
1448
1467
  name = "python3-commons"
1449
- version = "0.22.3"
1468
+ version = "0.22.4"
1450
1469
  source = { registry = "https://pypi.org/simple" }
1451
1470
  dependencies = [
1452
1471
  { name = "msgpack" },
1453
1472
  { name = "msgspec" },
1454
1473
  { name = "pydantic-settings" },
1455
1474
  ]
1456
- sdist = { url = "https://files.pythonhosted.org/packages/02/98/6cb8fd132b001c8ae63feb195e97e82e0d4c3e77a0f04cb328334c70f8c1/python3_commons-0.22.3.tar.gz", hash = "sha256:0e590fbc4b60d10291f9bcff113a82cf4d4354eab407535c3c6df707c810a4df", size = 125201, upload-time = "2026-06-15T21:49:32.727Z" }
1475
+ sdist = { url = "https://files.pythonhosted.org/packages/35/93/87d9492afe21e7452290ceeaaf1eee18900932fc92440243f3424580d2a8/python3_commons-0.22.4.tar.gz", hash = "sha256:f9c0bc9c0037fd0f6c4de130b3456ce47924d86b54a8f369894f300a1d24284d", size = 125182, upload-time = "2026-06-16T10:57:35.121Z" }
1457
1476
  wheels = [
1458
- { url = "https://files.pythonhosted.org/packages/b3/65/2bd7de30788be91fda2a62fc917ab4363188a80ce0cdb1a9bf0a69fb26fb/python3_commons-0.22.3-py3-none-any.whl", hash = "sha256:8bae50e558ffc50e30c8c24ea2649c237110be4f214ad9cd6713c467619019cb", size = 44969, upload-time = "2026-06-15T21:49:31.66Z" },
1477
+ { url = "https://files.pythonhosted.org/packages/09/ff/db687960a0278e67d2bdb5978f26c0ddfabf1baa8c014499bef40f183762/python3_commons-0.22.4-py3-none-any.whl", hash = "sha256:15ac56cda503c8c15aa8b160bc619a082b5e16b7417d669ace1616850c1387ec", size = 44965, upload-time = "2026-06-16T10:57:33.87Z" },
1459
1478
  ]
1460
1479
 
1461
1480
  [package.optional-dependencies]
@@ -1554,6 +1573,31 @@ wheels = [
1554
1573
  { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" },
1555
1574
  ]
1556
1575
 
1576
+ [[package]]
1577
+ name = "ruff"
1578
+ version = "0.15.17"
1579
+ source = { registry = "https://pypi.org/simple" }
1580
+ sdist = { url = "https://files.pythonhosted.org/packages/8c/a9/3abdf488f1bf3d24c699415e454ed554a6350d5d89ce183be1ee0a3361ac/ruff-0.15.17.tar.gz", hash = "sha256:2ec446937fd16c8c4de2674a209cc5af64d9c6f17d21fbf1151054fa0bcf5219", size = 4743346, upload-time = "2026-06-11T17:54:47.663Z" }
1581
+ wheels = [
1582
+ { url = "https://files.pythonhosted.org/packages/db/4d/e11259f5da07cb6afb2d074c31bf09da9671993f7329d4f15d2fdc458301/ruff-0.15.17-py3-none-linux_armv6l.whl", hash = "sha256:d9feddb927fc68bd295f5eebc587a7e42cfaf9b65f60ca4a2386febff575da8f", size = 10856677, upload-time = "2026-06-11T17:54:49.533Z" },
1583
+ { url = "https://files.pythonhosted.org/packages/29/3e/772d679e1a0dc058e58875bd2c0cb713a0530877b4a76fee3c7966df0d49/ruff-0.15.17-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:25805a226d741c47d274a35ad5c10a7dde175fcddfa511d7cf3da0a21eb3eab7", size = 11223443, upload-time = "2026-06-11T17:55:00.573Z" },
1584
+ { url = "https://files.pythonhosted.org/packages/68/58/bd41f7688b2fd5623012605130ed70e60aa7f2244baa3d5066bdd61530c8/ruff-0.15.17-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f6ad73b14c2d18a3bf8ad7cb6974294d7f613a7898604826058e6ac64918ef4d", size = 10566458, upload-time = "2026-06-11T17:55:07.52Z" },
1585
+ { url = "https://files.pythonhosted.org/packages/d8/5b/733371013fcf1ec339e477ece6ab42bfe10bdd9bba8ee88a9516aa56bfc0/ruff-0.15.17-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ba0c1e4f95bcb3869d0d30cbd5917071ef2e28665abfec970cdab0492c713ed", size = 10914483, upload-time = "2026-06-11T17:55:05.501Z" },
1586
+ { url = "https://files.pythonhosted.org/packages/bd/cc/6f24251cc0252f7239391ccb85833f320efad14ebe5b443943f37ced6332/ruff-0.15.17-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81647960f10bff57d2e51cadd0c3950fe598400c852863a038720ef5b8cca91e", size = 10647497, upload-time = "2026-06-11T17:54:57.733Z" },
1587
+ { url = "https://files.pythonhosted.org/packages/68/dd/0d10c17ce1a1624d6fc3156309c3f834fdb5dfaad026ec90c85684f3990e/ruff-0.15.17-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e01a84ddbc8c16c23055ba3924476850f1bbc1917cebbb9376665a63e74260d", size = 11416967, upload-time = "2026-06-11T17:54:51.461Z" },
1588
+ { url = "https://files.pythonhosted.org/packages/2f/91/556bfb156f6144f355e831c23db00b2fc4120f86b3ce81cc5f7fd2df51f3/ruff-0.15.17-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fe9f653152f8f294f9f7e03bf3a453d8b4a27f7a59c78c8666167f2b17b96c", size = 12335770, upload-time = "2026-06-11T17:54:45.793Z" },
1589
+ { url = "https://files.pythonhosted.org/packages/88/82/8b5999aa13355e926f06d9f42a32dcca862f623bf0363785ff89d607dffd/ruff-0.15.17-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c0fe88a7676e7a05b73174d4d4a59cb2ac21ff8263583f87a81a6018475a978", size = 11575441, upload-time = "2026-06-11T17:54:32.661Z" },
1590
+ { url = "https://files.pythonhosted.org/packages/11/93/f10377bb04109ca0e8cbc483ff1982c54b6d418210041776f93e8cdc7fa9/ruff-0.15.17-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecfc3c7878fff94633ab0348524e093f9ce3243080416dd7d14f8ba400174719", size = 11557614, upload-time = "2026-06-11T17:54:34.698Z" },
1591
+ { url = "https://files.pythonhosted.org/packages/c7/a6/eeeae7f7d5493df41649ab3db92f086b2d0a30199e4efdf8e3dd7a033f24/ruff-0.15.17-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:b8461180b22420b1bdc289909410930761629fddf2a5aaf60fae1ab26cedc4c4", size = 11544450, upload-time = "2026-06-11T17:54:39.042Z" },
1592
+ { url = "https://files.pythonhosted.org/packages/32/88/5991ce565129a24dd4a00db1254b3b5db2e53018cbe4018ea5a89738e727/ruff-0.15.17-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6eccbe50a038b503e7140b441aa9c7fc8c1f36edf23ebef9f4165c2f28f568b7", size = 10892524, upload-time = "2026-06-11T17:55:09.432Z" },
1593
+ { url = "https://files.pythonhosted.org/packages/f5/1d/0fdd248313425f55223968af04b0a42125466a8d88d21c1d99c6af0a51e8/ruff-0.15.17-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:382fc0521025f5a8ad447d8bdd523545d0d7646adb718eb1c2dac5065ec27c0f", size = 10659573, upload-time = "2026-06-11T17:54:36.824Z" },
1594
+ { url = "https://files.pythonhosted.org/packages/9e/0e/072e8260deb9461062ce9311ced27a8e541229a6ffd483013dd37661e43e/ruff-0.15.17-py3-none-musllinux_1_2_i686.whl", hash = "sha256:456d41fcd1b2777ad63f09a6e7121d43f7b688bbc76a800c10f7f8fb1f912c3f", size = 11127818, upload-time = "2026-06-11T17:55:03.124Z" },
1595
+ { url = "https://files.pythonhosted.org/packages/ab/b4/55060a34163121498014696b5f656db5b8c6963768f227dbf0d76b311073/ruff-0.15.17-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b1a04bcc94ae6194e9db05d16ad31f298a7194bfbcb08258bbe589cee1d587b8", size = 11655901, upload-time = "2026-06-11T17:54:53.562Z" },
1596
+ { url = "https://files.pythonhosted.org/packages/49/71/9b29d6b87cef468d697f43c6a91e3fae4a80185779d7d5a4ef27d173439f/ruff-0.15.17-py3-none-win32.whl", hash = "sha256:596065960ab1ff593f744220c9fe6580eda00a95003cffa9f4048bb5b1bf0392", size = 10925574, upload-time = "2026-06-11T17:54:55.723Z" },
1597
+ { url = "https://files.pythonhosted.org/packages/3d/b2/8fc77f3723228836fa5d12497eb71c808f83782e10d058d2b15cfa14640b/ruff-0.15.17-py3-none-win_amd64.whl", hash = "sha256:6769e5fa1710b179b92e0bfa5a51735b35baea9013dadb06d5f44cbcf9547084", size = 12058788, upload-time = "2026-06-11T17:54:41.042Z" },
1598
+ { url = "https://files.pythonhosted.org/packages/2d/c7/c53e8dbff9c9dc4b7928773421ae294a5d28fcb8dcda1a089579d3a7e510/ruff-0.15.17-py3-none-win_arm64.whl", hash = "sha256:f3be1fbb34bcdfd146240d8fb92a709d4c2c8191348580a3c044ec60fa0b4456", size = 11355275, upload-time = "2026-06-11T17:54:43.635Z" },
1599
+ ]
1600
+
1557
1601
  [[package]]
1558
1602
  name = "setuptools"
1559
1603
  version = "82.0.1"
@@ -1630,6 +1674,31 @@ wheels = [
1630
1674
  { url = "https://files.pythonhosted.org/packages/ec/bb/2799cc2ede3ed41131f8975621e7213dfc7ef4acbbaadfa440f32500c370/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6", size = 73632, upload-time = "2026-06-12T09:23:10.017Z" },
1631
1675
  ]
1632
1676
 
1677
+ [[package]]
1678
+ name = "ty"
1679
+ version = "0.0.49"
1680
+ source = { registry = "https://pypi.org/simple" }
1681
+ sdist = { url = "https://files.pythonhosted.org/packages/1d/8d/37cb91808069509d43a2a11743e12f1e854fd808dbef2203309d256718cd/ty-0.0.49.tar.gz", hash = "sha256:0a027bd0c9c75d035641a365d087ad883446057f9be0b9826251c2aecafbf145", size = 5884753, upload-time = "2026-06-12T03:08:20.221Z" }
1682
+ wheels = [
1683
+ { url = "https://files.pythonhosted.org/packages/ca/de/9237c6a96356612dd0393db1e94cf21f903616adf3a3701bf3da6e4adc92/ty-0.0.49-py3-none-linux_armv6l.whl", hash = "sha256:12c0c4310b936d762a8586c210b53d4fa4bb361a04429afa89bf84b922e5e065", size = 11834671, upload-time = "2026-06-12T03:07:53.062Z" },
1684
+ { url = "https://files.pythonhosted.org/packages/8f/15/daf5a14a5e07012277d450c75325c94614e2acfec4c620c881486118c410/ty-0.0.49-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:737bfdc2caf9712a8580944dcdc80a450a37a4f2bc83c8fa9b7433b374f9e471", size = 11589570, upload-time = "2026-06-12T03:08:25.779Z" },
1685
+ { url = "https://files.pythonhosted.org/packages/7d/58/30bdf98436488aca25f0763bf7f92a061528d42461b686453029e845e4c5/ty-0.0.49-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ab90c1baf3b1701d282fce4b02fa552a962d109f8972c46ef6b22429503bfea4", size = 10985236, upload-time = "2026-06-12T03:08:36.664Z" },
1686
+ { url = "https://files.pythonhosted.org/packages/22/45/ece503e4a1396e13a1a9a0cde51afe476a6506a1d557eeadf8ad45c83bc0/ty-0.0.49-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ce8ecf6ba6fc79bd137cc0557a754f7e5f2dfe9436412551d480d680e248ad", size = 11504302, upload-time = "2026-06-12T03:08:01.664Z" },
1687
+ { url = "https://files.pythonhosted.org/packages/17/dc/5d09333d289dfbca1804eaade125c9e8a1a992a2a592a8b80c5e9b589ca9/ty-0.0.49-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:10d85c6865c984e78661e0bd20b180514b4a289739224e84816e342bdf381e04", size = 11626629, upload-time = "2026-06-12T03:08:06.844Z" },
1688
+ { url = "https://files.pythonhosted.org/packages/f2/36/155f41c9dd7237c4b609211f29f77755a139ee6218605dadc7fe21d5e3c8/ty-0.0.49-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d96a67a206619e01fa92f35a22267ec634bba62be24b1d0e947020cc179995b", size = 12074481, upload-time = "2026-06-12T03:08:09.643Z" },
1689
+ { url = "https://files.pythonhosted.org/packages/96/4c/998ee13cd5045f1f8b36982de7343163832ac53f27debe01b0de0e8bd968/ty-0.0.49-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de9f648564e0a66344ef397770387cb0d093735f8679d2c5a08a4741e79814d", size = 12678042, upload-time = "2026-06-12T03:08:39.319Z" },
1690
+ { url = "https://files.pythonhosted.org/packages/85/c9/9a505aba85c41ce54cbcaa14f8d79aa084b86151d2d70df11c4655b92898/ty-0.0.49-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5779179ab397d15f8c9dbb8f506ec1b1745f54eac639982f76ef3ce538943b50", size = 12316194, upload-time = "2026-06-12T03:08:18.023Z" },
1691
+ { url = "https://files.pythonhosted.org/packages/c9/b8/ded37fb93503294abbc83c36470bb1413bea05048b745881d4470b518a06/ty-0.0.49-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792d4974e93cc09bd32f934586080bbbe21b8e777099cb521cb2de18b68a49f0", size = 12145507, upload-time = "2026-06-12T03:07:56.505Z" },
1692
+ { url = "https://files.pythonhosted.org/packages/2f/07/392e80d78f02445f695b815bb9eb0fffacda68b03faee38c900f7b990815/ty-0.0.49-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:727bda86deb136073e525c2e78d60e38aedcce5d80579170844a52bbf7c1440d", size = 12365967, upload-time = "2026-06-12T03:08:12.553Z" },
1693
+ { url = "https://files.pythonhosted.org/packages/50/d3/31b0c2a7fbedd3373e389cb1d81b8d2128f6f868fafb46557736a6f9aca8/ty-0.0.49-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4f2fc2bc4a8d2ff1cca59fd94772cabdfec4062d47a0b3a0784be46d94d0540b", size = 11475283, upload-time = "2026-06-12T03:08:28.334Z" },
1694
+ { url = "https://files.pythonhosted.org/packages/5a/5b/329e101638920b468a3bb63059c9f66ef99b44aac501222c44832a507321/ty-0.0.49-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:3724bd9badef333321578b6a941fbc571ebf49141ec2356a8590fbe4c9aa588d", size = 11645343, upload-time = "2026-06-12T03:08:15.246Z" },
1695
+ { url = "https://files.pythonhosted.org/packages/a9/76/c897e615e32f80ca81c8c1bc49b9a1f72ff9e3cfea0f8345ba505fe28472/ty-0.0.49-py3-none-musllinux_1_2_i686.whl", hash = "sha256:166c6eb52ee4af3c5a9bb267d165d93000daa55c6758cd8ff3199741fb75917d", size = 11725585, upload-time = "2026-06-12T03:08:33.915Z" },
1696
+ { url = "https://files.pythonhosted.org/packages/59/e1/fdb42ee239f618800842681af5bb8598117e74512c10974a8b7b9086a898/ty-0.0.49-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:91e81d832c287b05782ee32eb1b801f62c1fa08df37d589d2b88c3f1d51c9731", size = 12237261, upload-time = "2026-06-12T03:08:31.105Z" },
1697
+ { url = "https://files.pythonhosted.org/packages/98/0f/a2d6a5fc9d0786cbeb3c200786da4e18c203589be3984bb5def83ca92320/ty-0.0.49-py3-none-win32.whl", hash = "sha256:7186af5ca9829d1f5d8916bcf767b8e819bfbf61b1b8ec843bb3fc699cb502e1", size = 11100789, upload-time = "2026-06-12T03:07:59.092Z" },
1698
+ { url = "https://files.pythonhosted.org/packages/d0/9d/473ac8bc57b5a2d121da893bf9dd74a118efb19a01d711df1a6e397f05cc/ty-0.0.49-py3-none-win_amd64.whl", hash = "sha256:ae2142fc126a01effcca0c222908b0e6654b5ba1266d4e4d406e4866aef8e1d1", size = 12204644, upload-time = "2026-06-12T03:08:04.327Z" },
1699
+ { url = "https://files.pythonhosted.org/packages/ef/a2/8959249da951ba3977fee20e688d28678b8a1d30a9ed4464228a85d45853/ty-0.0.49-py3-none-win_arm64.whl", hash = "sha256:75d5e2e7649765f31f4bed6c8adb149a75b18edd3fa6336dac4d0efc1a66466f", size = 11558965, upload-time = "2026-06-12T03:08:23.012Z" },
1700
+ ]
1701
+
1633
1702
  [[package]]
1634
1703
  name = "types-aiobotocore-s3"
1635
1704
  version = "3.7.0"
@@ -1683,7 +1752,7 @@ wheels = [
1683
1752
 
1684
1753
  [[package]]
1685
1754
  name = "virtualenv"
1686
- version = "21.5.0"
1755
+ version = "21.5.1"
1687
1756
  source = { registry = "https://pypi.org/simple" }
1688
1757
  dependencies = [
1689
1758
  { name = "distlib" },
@@ -1691,9 +1760,9 @@ dependencies = [
1691
1760
  { name = "platformdirs" },
1692
1761
  { name = "python-discovery" },
1693
1762
  ]
1694
- sdist = { url = "https://files.pythonhosted.org/packages/cd/0e/933bacb37b57ae7928b0030eef205a3dbb3e37afdbdde5be2e113318958f/virtualenv-21.5.0.tar.gz", hash = "sha256:98847aadf5e2037e0e4d2e19528eb3aca6f23906422e59a510bff231a6d32fce", size = 4577424, upload-time = "2026-06-13T20:36:45.066Z" }
1763
+ sdist = { url = "https://files.pythonhosted.org/packages/f1/a5/81f987504738e6defeed61ec1c47e2aefab3c35d8eeb87e1b3f38cf28254/virtualenv-21.5.1.tar.gz", hash = "sha256:dca3bf98275a59c652b69d68e73433e597d977c2da9198882479d1a7188009c8", size = 4578798, upload-time = "2026-06-16T16:23:58.603Z" }
1695
1764
  wheels = [
1696
- { url = "https://files.pythonhosted.org/packages/e9/87/b0667ede418386ab631e48924b845d326f366d61e6bd08fe68a748fae4d4/virtualenv-21.5.0-py3-none-any.whl", hash = "sha256:8f7c38605023688c89789f566959006af6d61c99eeeb9e58342eb780c5761e5e", size = 4557937, upload-time = "2026-06-13T20:36:42.967Z" },
1765
+ { url = "https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl", hash = "sha256:55aa670b67bbfb991b03fda39bd3276d92c419d702376e98c5df1c9989a26783", size = 4558820, upload-time = "2026-06-16T16:23:56.963Z" },
1697
1766
  ]
1698
1767
 
1699
1768
  [[package]]
File without changes