sunholo 0.61.4__tar.gz → 0.61.5__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 (111) hide show
  1. {sunholo-0.61.4 → sunholo-0.61.5}/PKG-INFO +2 -2
  2. {sunholo-0.61.4 → sunholo-0.61.5}/setup.py +1 -1
  3. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/chat_vac.py +59 -15
  4. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/PKG-INFO +2 -2
  5. {sunholo-0.61.4 → sunholo-0.61.5}/tests/test_config.py +0 -4
  6. {sunholo-0.61.4 → sunholo-0.61.5}/LICENSE.txt +0 -0
  7. {sunholo-0.61.4 → sunholo-0.61.5}/MANIFEST.in +0 -0
  8. {sunholo-0.61.4 → sunholo-0.61.5}/README.md +0 -0
  9. {sunholo-0.61.4 → sunholo-0.61.5}/setup.cfg +0 -0
  10. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/__init__.py +0 -0
  11. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/__init__.py +0 -0
  12. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/chat_history.py +0 -0
  13. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/dispatch_to_qa.py +0 -0
  14. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/fastapi/__init__.py +0 -0
  15. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/fastapi/base.py +0 -0
  16. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/fastapi/qna_routes.py +0 -0
  17. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/flask/__init__.py +0 -0
  18. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/flask/base.py +0 -0
  19. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/flask/qna_routes.py +0 -0
  20. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/langserve.py +0 -0
  21. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/pubsub.py +0 -0
  22. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/route.py +0 -0
  23. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/agents/special_commands.py +0 -0
  24. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/archive/__init__.py +0 -0
  25. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/archive/archive.py +0 -0
  26. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/auth/__init__.py +0 -0
  27. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/auth/run.py +0 -0
  28. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/bots/__init__.py +0 -0
  29. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/bots/discord.py +0 -0
  30. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/bots/github_webhook.py +0 -0
  31. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/bots/webapp.py +0 -0
  32. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/__init__.py +0 -0
  33. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  34. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/doc_handling.py +0 -0
  35. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/images.py +0 -0
  36. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/loaders.py +0 -0
  37. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/message_data.py +0 -0
  38. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/pdfs.py +0 -0
  39. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/publish.py +0 -0
  40. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/chunker/splitter.py +0 -0
  41. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/__init__.py +0 -0
  42. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/cli.py +0 -0
  43. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/cli_init.py +0 -0
  44. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/configs.py +0 -0
  45. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/deploy.py +0 -0
  46. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/merge_texts.py +0 -0
  47. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/run_proxy.py +0 -0
  48. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/cli/sun_rich.py +0 -0
  49. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/components/__init__.py +0 -0
  50. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/components/llm.py +0 -0
  51. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/components/prompt.py +0 -0
  52. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/components/retriever.py +0 -0
  53. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/components/vectorstore.py +0 -0
  54. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/__init__.py +0 -0
  55. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/alloydb.py +0 -0
  56. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/database.py +0 -0
  57. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/lancedb.py +0 -0
  58. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/create_function.sql +0 -0
  59. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  60. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/create_table.sql +0 -0
  61. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  62. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/return_sources.sql +0 -0
  63. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/sql/sb/setup.sql +0 -0
  64. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/static_dbs.py +0 -0
  65. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/database/uuid.py +0 -0
  66. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/embedder/__init__.py +0 -0
  67. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/embedder/embed_chunk.py +0 -0
  68. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/gcs/__init__.py +0 -0
  69. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/gcs/add_file.py +0 -0
  70. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/gcs/download_url.py +0 -0
  71. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/gcs/metadata.py +0 -0
  72. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/langfuse/__init__.py +0 -0
  73. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/langfuse/callback.py +0 -0
  74. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/langfuse/prompts.py +0 -0
  75. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/llamaindex/__init__.py +0 -0
  76. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/llamaindex/generate.py +0 -0
  77. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/llamaindex/import_files.py +0 -0
  78. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/logging.py +0 -0
  79. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/lookup/__init__.py +0 -0
  80. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/lookup/model_lookup.yaml +0 -0
  81. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/patches/__init__.py +0 -0
  82. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/patches/langchain/__init__.py +0 -0
  83. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/patches/langchain/lancedb.py +0 -0
  84. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/patches/langchain/vertexai.py +0 -0
  85. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/pubsub/__init__.py +0 -0
  86. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/pubsub/process_pubsub.py +0 -0
  87. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/pubsub/pubsub_manager.py +0 -0
  88. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/qna/__init__.py +0 -0
  89. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/qna/parsers.py +0 -0
  90. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/qna/retry.py +0 -0
  91. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/streaming/__init__.py +0 -0
  92. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/streaming/content_buffer.py +0 -0
  93. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/streaming/langserve.py +0 -0
  94. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/streaming/streaming.py +0 -0
  95. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/summarise/__init__.py +0 -0
  96. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/summarise/summarise.py +0 -0
  97. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/__init__.py +0 -0
  98. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/big_context.py +0 -0
  99. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/config.py +0 -0
  100. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/config_schema.py +0 -0
  101. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/gcp.py +0 -0
  102. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/parsers.py +0 -0
  103. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/utils/user_ids.py +0 -0
  104. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/vertex/__init__.py +0 -0
  105. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo/vertex/init_vertex.py +0 -0
  106. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/SOURCES.txt +0 -0
  107. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/dependency_links.txt +0 -0
  108. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/entry_points.txt +0 -0
  109. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/requires.txt +0 -0
  110. {sunholo-0.61.4 → sunholo-0.61.5}/sunholo.egg-info/top_level.txt +0 -0
  111. {sunholo-0.61.4 → sunholo-0.61.5}/tests/test_chat_history.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.61.4
3
+ Version: 0.61.5
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.61.4.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.61.5.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.61.4'
4
+ version = '0.61.5'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -9,6 +9,7 @@ import uuid
9
9
  import sys
10
10
  import subprocess
11
11
  import json
12
+ import requests
12
13
 
13
14
  from rich import print
14
15
  from .sun_rich import console
@@ -143,27 +144,46 @@ def headless_mode(service_url, service_name, user_input, chat_history=None):
143
144
 
144
145
  return chat_history
145
146
 
147
+ def resolve_service_url(args):
148
+
149
+ if args.url_override:
150
+
151
+ return args.url_override
152
+
153
+ if not args.no_proxy:
154
+ try:
155
+ service_url = get_service_url(args.vac_name, args.project, args.region)
156
+ except ValueError as e:
157
+ console.print(f"[bold red]ERROR: Could not start {args.vac_name} proxy URL: {str(e)}[/bold red]")
158
+ sys.exit(1)
159
+ else:
160
+ console.print(f"Not using a proxy, connecting directly to {service_url}")
161
+
162
+ agent_url = load_config_key("agent_url", args.vac_name, "vacConfig")
163
+ if agent_url:
164
+ console.print("Found agent_url within vacConfig: {agent_url}")
165
+
166
+ service_url = agent_url or get_cloud_run_service_url(args.project, args.region, args.vac_name)
167
+
168
+ return service_url
146
169
 
147
170
  def vac_command(args):
171
+
172
+ service_url = resolve_service_url(args)
173
+
148
174
  if args.action == 'list':
175
+
149
176
  list_cloud_run_services(args.project, args.region)
177
+
150
178
  return
179
+
151
180
  elif args.action == 'get-url':
152
- service_url = get_cloud_run_service_url(args.project, args.region, args.vac_name)
153
- if service_url:
154
- console.print(service_url)
155
- return
156
- elif args.action == 'chat':
157
181
 
158
- if not args.no_proxy:
159
- try:
160
- service_url = get_service_url(args.vac_name, args.project, args.region)
161
- except ValueError as e:
162
- console.print(f"[bold red]ERROR: Could not start {args.vac_name} proxy URL: {str(e)}[/bold red]")
163
- sys.exit(1)
164
- else:
165
- service_url = get_cloud_run_service_url(args.project, args.region, args.vac_name)
166
- console.print(f"Not using a proxy, connecting directly to {service_url}")
182
+ console.print(service_url)
183
+
184
+ return
185
+
186
+ elif args.action == 'chat':
167
187
 
168
188
  agent_name = load_config_key("agent", args.vac_name, kind="vacConfig")
169
189
 
@@ -188,6 +208,24 @@ def vac_command(args):
188
208
 
189
209
  stop_proxy(agent_name, stop_local=False)
190
210
 
211
+ elif args.action == 'invoke':
212
+ try:
213
+ json_data = json.loads(args.data)
214
+ except json.JSONDecodeError as err:
215
+ console.print(f"[bold red]ERROR: invalid JSON: {str(err)} [/bold red]")
216
+ sys.exit(1)
217
+
218
+ invoke_vac(service_url, json_data)
219
+
220
+ def invoke_vac(service_url, data):
221
+ try:
222
+ headers = {"Content-Type": "application/json"}
223
+ response = requests.post(service_url, headers=headers, data=json.dumps(data))
224
+ response.raise_for_status()
225
+ print(response.json())
226
+ except requests.exceptions.RequestException as e:
227
+ console.print(f"[bold red]ERROR: Failed to invoke VAC: {e}[/bold red]")
228
+
191
229
 
192
230
  def list_cloud_run_services(project, region):
193
231
  """
@@ -281,6 +319,8 @@ def setup_vac_subparser(subparsers):
281
319
  subparsers: The subparsers object from argparse.ArgumentParser().
282
320
  """
283
321
  vac_parser = subparsers.add_parser('vac', help='Interact with deployed VAC services.')
322
+ vac_parser.add_argument('--url_override', help='Override the VAC service URL.')
323
+ vac_parser.add_argument('--no-proxy', action='store_true', help='Do not use the proxy and connect directly to the VAC service.')
284
324
  vac_subparsers = vac_parser.add_subparsers(dest='action', help='VAC subcommands')
285
325
 
286
326
  # Subcommand for listing VAC services
@@ -296,6 +336,10 @@ def setup_vac_subparser(subparsers):
296
336
  chat_parser.add_argument('user_input', help='User input for the VAC service when in headless mode.', nargs='?', default=None)
297
337
  chat_parser.add_argument('--headless', action='store_true', help='Run in headless mode.')
298
338
  chat_parser.add_argument('--chat_history', help='Chat history for headless mode (as JSON string).', default=None)
299
- chat_parser.add_argument('--no-proxy', action='store_true', help='Do not use the proxy and connect directly to the VAC service.')
339
+
340
+ # Subcommand for invoking a VAC service directly
341
+ invoke_parser = vac_subparsers.add_parser('invoke', help='Invoke a VAC service directly with custom data.')
342
+ invoke_parser.add_argument('vac_name', help='Name of the VAC service.')
343
+ invoke_parser.add_argument('data', help='Data to send to the VAC service (as JSON string).')
300
344
 
301
345
  vac_parser.set_defaults(func=vac_command)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.61.4
3
+ Version: 0.61.5
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.61.4.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.61.5.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -9,7 +9,3 @@ def test_load_config():
9
9
  with patch("builtins.open", mock_open(read_data='{"key": "value"}'), create=True):
10
10
  result, _ = config.load_config("mock_file.json")
11
11
  assert result == expected_config
12
-
13
- def test_load_config_key():
14
- with pytest.raises(KeyError):
15
- config.load_config_key("non_existent_key", "mock_vector_name")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes