sunholo 0.71.28__tar.gz → 0.71.29__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 (134) hide show
  1. {sunholo-0.71.28 → sunholo-0.71.29}/PKG-INFO +6 -4
  2. {sunholo-0.71.28 → sunholo-0.71.29}/setup.py +6 -3
  3. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/gcs/__init__.py +1 -1
  4. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/gcs/download_url.py +15 -0
  5. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/PKG-INFO +6 -4
  6. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/requires.txt +4 -2
  7. {sunholo-0.71.28 → sunholo-0.71.29}/LICENSE.txt +0 -0
  8. {sunholo-0.71.28 → sunholo-0.71.29}/MANIFEST.in +0 -0
  9. {sunholo-0.71.28 → sunholo-0.71.29}/README.md +0 -0
  10. {sunholo-0.71.28 → sunholo-0.71.29}/setup.cfg +0 -0
  11. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/__init__.py +0 -0
  12. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/flask/vac_routes.py +0 -0
  22. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/langserve.py +0 -0
  23. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/pubsub.py +0 -0
  24. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/route.py +0 -0
  25. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/special_commands.py +0 -0
  26. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/agents/swagger.py +0 -0
  27. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/archive/__init__.py +0 -0
  28. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/archive/archive.py +0 -0
  29. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/auth/__init__.py +0 -0
  30. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/auth/run.py +0 -0
  31. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/bots/__init__.py +0 -0
  32. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/bots/discord.py +0 -0
  33. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/bots/github_webhook.py +0 -0
  34. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/bots/webapp.py +0 -0
  35. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/__init__.py +0 -0
  36. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  37. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/doc_handling.py +0 -0
  38. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/images.py +0 -0
  39. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/loaders.py +0 -0
  40. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/message_data.py +0 -0
  41. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/pdfs.py +0 -0
  42. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/publish.py +0 -0
  43. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/chunker/splitter.py +0 -0
  44. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/__init__.py +0 -0
  45. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/chat_vac.py +0 -0
  46. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/cli.py +0 -0
  47. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/cli_init.py +0 -0
  48. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/configs.py +0 -0
  49. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/deploy.py +0 -0
  50. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/embedder.py +0 -0
  51. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/merge_texts.py +0 -0
  52. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/run_proxy.py +0 -0
  53. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/sun_rich.py +0 -0
  54. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/cli/swagger.py +0 -0
  55. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/components/__init__.py +0 -0
  56. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/components/llm.py +0 -0
  57. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/components/retriever.py +0 -0
  58. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/components/vectorstore.py +0 -0
  59. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/__init__.py +0 -0
  60. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/alloydb.py +0 -0
  61. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/alloydb_client.py +0 -0
  62. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/database.py +0 -0
  63. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/lancedb.py +0 -0
  64. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/create_function.sql +0 -0
  65. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  66. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/create_table.sql +0 -0
  67. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  68. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/return_sources.sql +0 -0
  69. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/sql/sb/setup.sql +0 -0
  70. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/static_dbs.py +0 -0
  71. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/database/uuid.py +0 -0
  72. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/discovery_engine/__init__.py +0 -0
  73. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/discovery_engine/chunker_handler.py +0 -0
  74. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/discovery_engine/create_new.py +0 -0
  75. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  76. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/embedder/__init__.py +0 -0
  77. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/embedder/embed_chunk.py +0 -0
  78. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/gcs/add_file.py +0 -0
  79. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/gcs/metadata.py +0 -0
  80. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/langfuse/__init__.py +0 -0
  81. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/langfuse/callback.py +0 -0
  82. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/langfuse/prompts.py +0 -0
  83. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/llamaindex/__init__.py +0 -0
  84. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/llamaindex/generate.py +0 -0
  85. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/llamaindex/get_files.py +0 -0
  86. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/llamaindex/import_files.py +0 -0
  87. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/logging.py +0 -0
  88. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/lookup/__init__.py +0 -0
  89. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/lookup/model_lookup.yaml +0 -0
  90. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/patches/__init__.py +0 -0
  91. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/patches/langchain/__init__.py +0 -0
  92. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/patches/langchain/lancedb.py +0 -0
  93. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/patches/langchain/vertexai.py +0 -0
  94. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/pubsub/__init__.py +0 -0
  95. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/pubsub/process_pubsub.py +0 -0
  96. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/pubsub/pubsub_manager.py +0 -0
  97. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/qna/__init__.py +0 -0
  98. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/qna/parsers.py +0 -0
  99. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/qna/retry.py +0 -0
  100. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/streaming/__init__.py +0 -0
  101. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/streaming/content_buffer.py +0 -0
  102. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/streaming/langserve.py +0 -0
  103. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/streaming/stream_lookup.py +0 -0
  104. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/streaming/streaming.py +0 -0
  105. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/summarise/__init__.py +0 -0
  106. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/summarise/summarise.py +0 -0
  107. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/tools/__init__.py +0 -0
  108. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/tools/web_browser.py +0 -0
  109. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/__init__.py +0 -0
  110. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/api_key.py +0 -0
  111. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/big_context.py +0 -0
  112. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/config.py +0 -0
  113. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/config_schema.py +0 -0
  114. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/gcp.py +0 -0
  115. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/gcp_project.py +0 -0
  116. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/parsers.py +0 -0
  117. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/timedelta.py +0 -0
  118. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/user_ids.py +0 -0
  119. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/utils/version.py +0 -0
  120. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/__init__.py +0 -0
  121. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/extensions.py +0 -0
  122. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/extensions_class.py +0 -0
  123. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/init.py +0 -0
  124. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/memory_tools.py +0 -0
  125. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo/vertex/safety.py +0 -0
  126. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/SOURCES.txt +0 -0
  127. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/dependency_links.txt +0 -0
  128. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/entry_points.txt +0 -0
  129. {sunholo-0.71.28 → sunholo-0.71.29}/sunholo.egg-info/top_level.txt +0 -0
  130. {sunholo-0.71.28 → sunholo-0.71.29}/tests/test_chat_history.py +0 -0
  131. {sunholo-0.71.28 → sunholo-0.71.29}/tests/test_chunker.py +0 -0
  132. {sunholo-0.71.28 → sunholo-0.71.29}/tests/test_config.py +0 -0
  133. {sunholo-0.71.28 → sunholo-0.71.29}/tests/test_dispatch_to_qa.py +0 -0
  134. {sunholo-0.71.28 → sunholo-0.71.29}/tests/test_swagger.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.71.28
3
+ Version: 0.71.29
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.71.28.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.71.29.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -56,6 +56,7 @@ Requires-Dist: langchain-anthropic>=0.1.13; extra == "all"
56
56
  Requires-Dist: langfuse; extra == "all"
57
57
  Requires-Dist: pg8000; extra == "all"
58
58
  Requires-Dist: pgvector; extra == "all"
59
+ Requires-Dist: pillow; extra == "all"
59
60
  Requires-Dist: playwright; extra == "all"
60
61
  Requires-Dist: psycopg2-binary; extra == "all"
61
62
  Requires-Dist: pypdf; extra == "all"
@@ -87,6 +88,8 @@ Requires-Dist: pytesseract; extra == "pipeline"
87
88
  Requires-Dist: tabulate; extra == "pipeline"
88
89
  Requires-Dist: unstructured[local-inference]; extra == "pipeline"
89
90
  Provides-Extra: gcp
91
+ Requires-Dist: google-api-python-client; extra == "gcp"
92
+ Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "gcp"
90
93
  Requires-Dist: google-auth-httplib2; extra == "gcp"
91
94
  Requires-Dist: google-auth-oauthlib; extra == "gcp"
92
95
  Requires-Dist: google-cloud-aiplatform; extra == "gcp"
@@ -100,8 +103,7 @@ Requires-Dist: google-cloud-discoveryengine; extra == "gcp"
100
103
  Requires-Dist: google-generativeai>=0.7.1; extra == "gcp"
101
104
  Requires-Dist: langchain-google-genai>=1.0.5; extra == "gcp"
102
105
  Requires-Dist: langchain_google_alloydb_pg>=0.2.2; extra == "gcp"
103
- Requires-Dist: google-api-python-client; extra == "gcp"
104
- Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "gcp"
106
+ Requires-Dist: pillow; extra == "gcp"
105
107
  Provides-Extra: openai
106
108
  Requires-Dist: langchain-openai; extra == "openai"
107
109
  Requires-Dist: tiktoken; extra == "openai"
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.71.28'
4
+ version = '0.71.29'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -71,6 +71,7 @@ setup(
71
71
  "langfuse",
72
72
  "pg8000",
73
73
  "pgvector",
74
+ "pillow",
74
75
  "playwright",
75
76
  "psycopg2-binary",
76
77
  "pypdf",
@@ -107,6 +108,8 @@ setup(
107
108
  "unstructured[local-inference]",
108
109
  ],
109
110
  'gcp': [
111
+ "google-api-python-client",
112
+ "google-cloud-alloydb-connector[pg8000]",
110
113
  "google-auth-httplib2",
111
114
  "google-auth-oauthlib",
112
115
  "google-cloud-aiplatform",
@@ -120,8 +123,8 @@ setup(
120
123
  "google-generativeai>=0.7.1",
121
124
  "langchain-google-genai>=1.0.5",
122
125
  "langchain_google_alloydb_pg>=0.2.2",
123
- "google-api-python-client",
124
- "google-cloud-alloydb-connector[pg8000]",
126
+ "pillow",
127
+
125
128
  ],
126
129
  'openai': [
127
130
  "langchain-openai",
@@ -1 +1 @@
1
- from .download_url import construct_download_link, get_bytes_from_gcs
1
+ from .download_url import construct_download_link, get_bytes_from_gcs, get_image_from_gcs
@@ -14,12 +14,27 @@ except ImportError:
14
14
 
15
15
  from ..logging import log
16
16
  from ..utils.gcp import is_running_on_gcp
17
+ from io import BytesIO
18
+ try:
19
+ from PIL import Image
20
+ except ImportError:
21
+ Image = None
17
22
 
18
23
  gcs_credentials = None
19
24
  project_id = None
20
25
  gcs_client = None
21
26
  gcs_bucket_cache = {}
22
27
 
28
+ def get_image_from_gcs(gs_uri: str):
29
+ """Converts image bytes from GCS to a PIL Image object."""
30
+ image_bytes = get_bytes_from_gcs(gs_uri)
31
+ if not Image:
32
+ raise ImportError('Could not import PIL (pillow) - install via `pip install sunholo[gcp]`')
33
+ try:
34
+ img = Image.open(BytesIO(image_bytes))
35
+ return img
36
+ except IOError as e:
37
+ raise ValueError("Unable to open image from bytes:", e)
23
38
 
24
39
  def get_bytes_from_gcs(gs_uri):
25
40
  """
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.71.28
3
+ Version: 0.71.29
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.71.28.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.71.29.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -56,6 +56,7 @@ Requires-Dist: langchain-anthropic>=0.1.13; extra == "all"
56
56
  Requires-Dist: langfuse; extra == "all"
57
57
  Requires-Dist: pg8000; extra == "all"
58
58
  Requires-Dist: pgvector; extra == "all"
59
+ Requires-Dist: pillow; extra == "all"
59
60
  Requires-Dist: playwright; extra == "all"
60
61
  Requires-Dist: psycopg2-binary; extra == "all"
61
62
  Requires-Dist: pypdf; extra == "all"
@@ -87,6 +88,8 @@ Requires-Dist: pytesseract; extra == "pipeline"
87
88
  Requires-Dist: tabulate; extra == "pipeline"
88
89
  Requires-Dist: unstructured[local-inference]; extra == "pipeline"
89
90
  Provides-Extra: gcp
91
+ Requires-Dist: google-api-python-client; extra == "gcp"
92
+ Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "gcp"
90
93
  Requires-Dist: google-auth-httplib2; extra == "gcp"
91
94
  Requires-Dist: google-auth-oauthlib; extra == "gcp"
92
95
  Requires-Dist: google-cloud-aiplatform; extra == "gcp"
@@ -100,8 +103,7 @@ Requires-Dist: google-cloud-discoveryengine; extra == "gcp"
100
103
  Requires-Dist: google-generativeai>=0.7.1; extra == "gcp"
101
104
  Requires-Dist: langchain-google-genai>=1.0.5; extra == "gcp"
102
105
  Requires-Dist: langchain_google_alloydb_pg>=0.2.2; extra == "gcp"
103
- Requires-Dist: google-api-python-client; extra == "gcp"
104
- Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "gcp"
106
+ Requires-Dist: pillow; extra == "gcp"
105
107
  Provides-Extra: openai
106
108
  Requires-Dist: langchain-openai; extra == "openai"
107
109
  Requires-Dist: tiktoken; extra == "openai"
@@ -37,6 +37,7 @@ langchain-anthropic>=0.1.13
37
37
  langfuse
38
38
  pg8000
39
39
  pgvector
40
+ pillow
40
41
  playwright
41
42
  psycopg2-binary
42
43
  pypdf
@@ -67,6 +68,8 @@ lancedb
67
68
  tantivy
68
69
 
69
70
  [gcp]
71
+ google-api-python-client
72
+ google-cloud-alloydb-connector[pg8000]
70
73
  google-auth-httplib2
71
74
  google-auth-oauthlib
72
75
  google-cloud-aiplatform
@@ -80,8 +83,7 @@ google-cloud-discoveryengine
80
83
  google-generativeai>=0.7.1
81
84
  langchain-google-genai>=1.0.5
82
85
  langchain_google_alloydb_pg>=0.2.2
83
- google-api-python-client
84
- google-cloud-alloydb-connector[pg8000]
86
+ pillow
85
87
 
86
88
  [http]
87
89
  fastapi
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes