mcp-postgresql-ops 3.3.3__tar.gz → 3.3.4__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 (70) hide show
  1. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/PKG-INFO +2 -2
  2. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/README.md +0 -1
  3. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/pyproject.toml +1 -0
  4. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/PKG-INFO +2 -2
  5. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/requires.txt +1 -0
  6. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/uv.lock +91 -0
  7. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.env.example +0 -0
  8. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/CONTRIBUTING.md +0 -0
  9. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/FUNDING.yml +0 -0
  10. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  11. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  12. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  13. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  14. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/ISSUE_TEMPLATE/question.md +0 -0
  15. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/copilot-instructions.md +0 -0
  16. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/dependabot.yml +0 -0
  17. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/pull_request_template.md +0 -0
  18. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/workflows/pypi-publish.yml +0 -0
  19. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.github/workflows/test.yml +0 -0
  20. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.gitignore +0 -0
  21. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.gitleaks.toml +0 -0
  22. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.pre-commit-config.yaml +0 -0
  23. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/.python-version +0 -0
  24. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/Dockerfile.MCP-Server +0 -0
  25. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/Dockerfile.MCPO-Proxy +0 -0
  26. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/LICENSE +0 -0
  27. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/MANIFEST.in +0 -0
  28. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/SECURITY.md +0 -0
  29. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/_config.yml +0 -0
  30. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/_includes/head-custom-google-analytics.html +0 -0
  31. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/build-mcp-server-docker-image.sh +0 -0
  32. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/build-mcpo-server-docker-image.sh +0 -0
  33. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/docker-compose.custom-db.yml +0 -0
  34. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/docker-compose.yml +0 -0
  35. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
  36. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-000.png +0 -0
  37. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-001.png +0 -0
  38. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-002.png +0 -0
  39. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-004.png +0 -0
  40. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-005.png +0 -0
  41. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-claude-desktop-airflow-connections-html.png +0 -0
  42. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-claude-desktop-mermaid-diagram.png +0 -0
  43. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-claude-desktop-question-001.png +0 -0
  44. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/img/screenshot-swagger-api.png +0 -0
  45. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/main.py +0 -0
  46. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/mcp-config.json.http +0 -0
  47. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/mcp-config.json.stdio +0 -0
  48. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/run-mcp-inspector-local.sh +0 -0
  49. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/run-mcp-inspector-pypi.sh +0 -0
  50. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/scripts/create-test-data.sh +0 -0
  51. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/scripts/create-test-data.sql +0 -0
  52. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/scripts/enable-pgsql-extensions.sh +0 -0
  53. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/scripts/mcp-server-docker-cmd.sh +0 -0
  54. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/setup.cfg +0 -0
  55. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/__init__.py +0 -0
  56. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/__main__.py +0 -0
  57. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/functions.py +0 -0
  58. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/mcp_main.py +0 -0
  59. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/prompt_template.md +0 -0
  60. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops/version_compat.py +0 -0
  61. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/SOURCES.txt +0 -0
  62. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/dependency_links.txt +0 -0
  63. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/entry_points.txt +0 -0
  64. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/src/mcp_postgresql_ops.egg-info/top_level.txt +0 -0
  65. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/__init__.py +0 -0
  66. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/conftest.py +0 -0
  67. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/docker/docker-compose.test.yml +0 -0
  68. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/docker/init-test-db.sql +0 -0
  69. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/test_tools_integration.py +0 -0
  70. {mcp_postgresql_ops-3.3.3 → mcp_postgresql_ops-3.3.4}/tests/test_version_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-postgresql-ops
3
- Version: 3.3.3
3
+ Version: 3.3.4
4
4
  Summary: Add your description here
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -10,6 +10,7 @@ Requires-Dist: fastmcp>=2.12.3
10
10
  Requires-Dist: asyncpg>=0.29.0
11
11
  Requires-Dist: psycopg2-binary>=2.9.7
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
+ Requires-Dist: pre-commit>=4.6.0
13
14
  Provides-Extra: dev
14
15
  Requires-Dist: pytest>=7.0.0; extra == "dev"
15
16
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -986,7 +987,6 @@ uv run python scripts/run-tests.py --no-cleanup
986
987
  ```
987
988
 
988
989
  > **Note**: Docker must be running. The test stack uses ports 5412–5418 (PG 12–18).
989
- ```
990
990
 
991
991
  ### Version Compatibility Testing
992
992
 
@@ -969,7 +969,6 @@ uv run python scripts/run-tests.py --no-cleanup
969
969
  ```
970
970
 
971
971
  > **Note**: Docker must be running. The test stack uses ports 5412–5418 (PG 12–18).
972
- ```
973
972
 
974
973
  ### Version Compatibility Testing
975
974
 
@@ -10,6 +10,7 @@ dependencies = [
10
10
  "asyncpg>=0.29.0",
11
11
  "psycopg2-binary>=2.9.7",
12
12
  "setuptools-scm>=10.0.5",
13
+ "pre-commit>=4.6.0",
13
14
  ]
14
15
 
15
16
  [project.optional-dependencies]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-postgresql-ops
3
- Version: 3.3.3
3
+ Version: 3.3.4
4
4
  Summary: Add your description here
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -10,6 +10,7 @@ Requires-Dist: fastmcp>=2.12.3
10
10
  Requires-Dist: asyncpg>=0.29.0
11
11
  Requires-Dist: psycopg2-binary>=2.9.7
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
+ Requires-Dist: pre-commit>=4.6.0
13
14
  Provides-Extra: dev
14
15
  Requires-Dist: pytest>=7.0.0; extra == "dev"
15
16
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -986,7 +987,6 @@ uv run python scripts/run-tests.py --no-cleanup
986
987
  ```
987
988
 
988
989
  > **Note**: Docker must be running. The test stack uses ports 5412–5418 (PG 12–18).
989
- ```
990
990
 
991
991
  ### Version Compatibility Testing
992
992
 
@@ -2,6 +2,7 @@ fastmcp>=2.12.3
2
2
  asyncpg>=0.29.0
3
3
  psycopg2-binary>=2.9.7
4
4
  setuptools-scm>=10.0.5
5
+ pre-commit>=4.6.0
5
6
 
6
7
  [dev]
7
8
  pytest>=7.0.0
@@ -187,6 +187,15 @@ wheels = [
187
187
  { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
188
188
  ]
189
189
 
190
+ [[package]]
191
+ name = "cfgv"
192
+ version = "3.5.0"
193
+ source = { registry = "https://pypi.org/simple" }
194
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" }
195
+ wheels = [
196
+ { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" },
197
+ ]
198
+
190
199
  [[package]]
191
200
  name = "charset-normalizer"
192
201
  version = "3.4.3"
@@ -318,6 +327,15 @@ wheels = [
318
327
  { url = "https://files.pythonhosted.org/packages/06/06/d68a5d5d292c2ad2bc6a02e5ca2cb1bb9c15e941ab02f004a06a342d7f0f/cyclopts-4.10.0-py3-none-any.whl", hash = "sha256:50f333382a60df8d40ec14aa2e627316b361c4f478598ada1f4169d959bf9ea7", size = 204097, upload-time = "2026-03-14T14:09:32.504Z" },
319
328
  ]
320
329
 
330
+ [[package]]
331
+ name = "distlib"
332
+ version = "0.4.0"
333
+ source = { registry = "https://pypi.org/simple" }
334
+ sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" }
335
+ wheels = [
336
+ { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" },
337
+ ]
338
+
321
339
  [[package]]
322
340
  name = "dnspython"
323
341
  version = "2.8.0"
@@ -402,6 +420,15 @@ wheels = [
402
420
  { url = "https://files.pythonhosted.org/packages/4f/67/684fa2d2de1e7504549d4ca457b4f854ccec3cd3be03bd86b33b599fbf58/fastmcp-3.2.0-py3-none-any.whl", hash = "sha256:e71aba3df16f86f546a4a9e513261d3233bcc92bef0dfa647bac3fa33623f681", size = 705550, upload-time = "2026-03-30T20:25:35.499Z" },
403
421
  ]
404
422
 
423
+ [[package]]
424
+ name = "filelock"
425
+ version = "3.29.0"
426
+ source = { registry = "https://pypi.org/simple" }
427
+ sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" }
428
+ wheels = [
429
+ { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" },
430
+ ]
431
+
405
432
  [[package]]
406
433
  name = "h11"
407
434
  version = "0.16.0"
@@ -448,6 +475,15 @@ wheels = [
448
475
  { url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054, upload-time = "2025-06-24T13:21:04.772Z" },
449
476
  ]
450
477
 
478
+ [[package]]
479
+ name = "identify"
480
+ version = "2.6.19"
481
+ source = { registry = "https://pypi.org/simple" }
482
+ sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" }
483
+ wheels = [
484
+ { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" },
485
+ ]
486
+
451
487
  [[package]]
452
488
  name = "idna"
453
489
  version = "3.10"
@@ -631,6 +667,7 @@ source = { editable = "." }
631
667
  dependencies = [
632
668
  { name = "asyncpg" },
633
669
  { name = "fastmcp" },
670
+ { name = "pre-commit" },
634
671
  { name = "psycopg2-binary" },
635
672
  { name = "setuptools-scm" },
636
673
  ]
@@ -650,6 +687,7 @@ dev = [
650
687
  requires-dist = [
651
688
  { name = "asyncpg", specifier = ">=0.29.0" },
652
689
  { name = "fastmcp", specifier = ">=2.12.3" },
690
+ { name = "pre-commit", specifier = ">=4.6.0" },
653
691
  { name = "psycopg2-binary", specifier = ">=2.9.7" },
654
692
  { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0.0" },
655
693
  { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" },
@@ -678,6 +716,15 @@ wheels = [
678
716
  { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" },
679
717
  ]
680
718
 
719
+ [[package]]
720
+ name = "nodeenv"
721
+ version = "1.10.0"
722
+ source = { registry = "https://pypi.org/simple" }
723
+ sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" }
724
+ wheels = [
725
+ { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" },
726
+ ]
727
+
681
728
  [[package]]
682
729
  name = "openapi-pydantic"
683
730
  version = "0.5.1"
@@ -748,6 +795,22 @@ wheels = [
748
795
  { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
749
796
  ]
750
797
 
798
+ [[package]]
799
+ name = "pre-commit"
800
+ version = "4.6.0"
801
+ source = { registry = "https://pypi.org/simple" }
802
+ dependencies = [
803
+ { name = "cfgv" },
804
+ { name = "identify" },
805
+ { name = "nodeenv" },
806
+ { name = "pyyaml" },
807
+ { name = "virtualenv" },
808
+ ]
809
+ sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" }
810
+ wheels = [
811
+ { url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", hash = "sha256:e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b", size = 226472, upload-time = "2026-04-21T20:31:40.092Z" },
812
+ ]
813
+
751
814
  [[package]]
752
815
  name = "psycopg2-binary"
753
816
  version = "2.9.10"
@@ -950,6 +1013,19 @@ wheels = [
950
1013
  { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" },
951
1014
  ]
952
1015
 
1016
+ [[package]]
1017
+ name = "python-discovery"
1018
+ version = "1.2.2"
1019
+ source = { registry = "https://pypi.org/simple" }
1020
+ dependencies = [
1021
+ { name = "filelock" },
1022
+ { name = "platformdirs" },
1023
+ ]
1024
+ sdist = { url = "https://files.pythonhosted.org/packages/de/ef/3bae0e537cfe91e8431efcba4434463d2c5a65f5a89edd47c6cf2f03c55f/python_discovery-1.2.2.tar.gz", hash = "sha256:876e9c57139eb757cb5878cbdd9ae5379e5d96266c99ef731119e04fffe533bb", size = 58872, upload-time = "2026-04-07T17:28:49.249Z" }
1025
+ wheels = [
1026
+ { url = "https://files.pythonhosted.org/packages/d8/db/795879cc3ddfe338599bddea6388cc5100b088db0a4caf6e6c1af1c27e04/python_discovery-1.2.2-py3-none-any.whl", hash = "sha256:e1ae95d9af875e78f15e19aed0c6137ab1bb49c200f21f5061786490c9585c7a", size = 31894, upload-time = "2026-04-07T17:28:48.09Z" },
1027
+ ]
1028
+
953
1029
  [[package]]
954
1030
  name = "python-dotenv"
955
1031
  version = "1.2.2"
@@ -1289,6 +1365,21 @@ wheels = [
1289
1365
  { url = "https://files.pythonhosted.org/packages/e6/60/73603fbcdbe5e803855bcce4414f94eaeed449083bd8183e67161af78188/vcs_versioning-1.1.1-py3-none-any.whl", hash = "sha256:b541e2ba79fc6aaa3850f8a7f88af43d97c1c80649c01142ee4146eddbc599e4", size = 79851, upload-time = "2026-03-27T20:42:40.45Z" },
1290
1366
  ]
1291
1367
 
1368
+ [[package]]
1369
+ name = "virtualenv"
1370
+ version = "21.2.4"
1371
+ source = { registry = "https://pypi.org/simple" }
1372
+ dependencies = [
1373
+ { name = "distlib" },
1374
+ { name = "filelock" },
1375
+ { name = "platformdirs" },
1376
+ { name = "python-discovery" },
1377
+ ]
1378
+ sdist = { url = "https://files.pythonhosted.org/packages/0c/98/3a7e644e19cb26133488caff231be390579860bbbb3da35913c49a1d0a46/virtualenv-21.2.4.tar.gz", hash = "sha256:b294ef68192638004d72524ce7ef303e9d0cf5a44c95ce2e54a7500a6381cada", size = 5850742, upload-time = "2026-04-14T22:15:31.438Z" }
1379
+ wheels = [
1380
+ { url = "https://files.pythonhosted.org/packages/27/8d/edd0bd910ff803c308ee9a6b7778621af0d10252219ad9f19ef4d4982a61/virtualenv-21.2.4-py3-none-any.whl", hash = "sha256:29d21e941795206138d0f22f4e45ff7050e5da6c6472299fb7103318763861ac", size = 5831232, upload-time = "2026-04-14T22:15:29.342Z" },
1381
+ ]
1382
+
1292
1383
  [[package]]
1293
1384
  name = "watchfiles"
1294
1385
  version = "1.1.1"