sunholo 0.62.11__tar.gz → 0.62.13__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 (118) hide show
  1. {sunholo-0.62.11 → sunholo-0.62.13}/PKG-INFO +2 -2
  2. {sunholo-0.62.11 → sunholo-0.62.13}/setup.py +1 -1
  3. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/dispatch_to_qa.py +1 -1
  4. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/flask/qna_routes.py +2 -0
  5. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/PKG-INFO +2 -2
  6. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/SOURCES.txt +2 -1
  7. sunholo-0.62.13/tests/test_config.py +34 -0
  8. sunholo-0.62.13/tests/test_dispatch_to_qa.py +18 -0
  9. sunholo-0.62.11/tests/test_config.py +0 -11
  10. {sunholo-0.62.11 → sunholo-0.62.13}/LICENSE.txt +0 -0
  11. {sunholo-0.62.11 → sunholo-0.62.13}/MANIFEST.in +0 -0
  12. {sunholo-0.62.11 → sunholo-0.62.13}/README.md +0 -0
  13. {sunholo-0.62.11 → sunholo-0.62.13}/setup.cfg +0 -0
  14. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/__init__.py +0 -0
  15. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/__init__.py +0 -0
  16. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/chat_history.py +0 -0
  17. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/fastapi/__init__.py +0 -0
  18. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/fastapi/base.py +0 -0
  19. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/fastapi/qna_routes.py +0 -0
  20. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/flask/__init__.py +0 -0
  21. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/flask/base.py +0 -0
  22. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/langserve.py +0 -0
  23. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/pubsub.py +0 -0
  24. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/route.py +0 -0
  25. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/agents/special_commands.py +0 -0
  26. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/archive/__init__.py +0 -0
  27. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/archive/archive.py +0 -0
  28. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/auth/__init__.py +0 -0
  29. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/auth/run.py +0 -0
  30. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/bots/__init__.py +0 -0
  31. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/bots/discord.py +0 -0
  32. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/bots/github_webhook.py +0 -0
  33. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/bots/webapp.py +0 -0
  34. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/__init__.py +0 -0
  35. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  36. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/doc_handling.py +0 -0
  37. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/images.py +0 -0
  38. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/loaders.py +0 -0
  39. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/message_data.py +0 -0
  40. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/pdfs.py +0 -0
  41. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/publish.py +0 -0
  42. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/chunker/splitter.py +0 -0
  43. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/__init__.py +0 -0
  44. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/chat_vac.py +0 -0
  45. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/cli.py +0 -0
  46. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/cli_init.py +0 -0
  47. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/configs.py +0 -0
  48. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/deploy.py +0 -0
  49. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/embedder.py +0 -0
  50. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/merge_texts.py +0 -0
  51. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/run_proxy.py +0 -0
  52. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/cli/sun_rich.py +0 -0
  53. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/components/__init__.py +0 -0
  54. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/components/llm.py +0 -0
  55. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/components/retriever.py +0 -0
  56. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/components/vectorstore.py +0 -0
  57. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/__init__.py +0 -0
  58. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/alloydb.py +0 -0
  59. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/database.py +0 -0
  60. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/lancedb.py +0 -0
  61. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/create_function.sql +0 -0
  62. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  63. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/create_table.sql +0 -0
  64. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  65. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/return_sources.sql +0 -0
  66. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/sql/sb/setup.sql +0 -0
  67. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/static_dbs.py +0 -0
  68. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/database/uuid.py +0 -0
  69. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/embedder/__init__.py +0 -0
  70. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/embedder/embed_chunk.py +0 -0
  71. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/gcs/__init__.py +0 -0
  72. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/gcs/add_file.py +0 -0
  73. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/gcs/download_url.py +0 -0
  74. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/gcs/metadata.py +0 -0
  75. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/langfuse/__init__.py +0 -0
  76. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/langfuse/callback.py +0 -0
  77. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/langfuse/prompts.py +0 -0
  78. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/llamaindex/__init__.py +0 -0
  79. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/llamaindex/generate.py +0 -0
  80. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/llamaindex/get_files.py +0 -0
  81. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/llamaindex/import_files.py +0 -0
  82. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/logging.py +0 -0
  83. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/lookup/__init__.py +0 -0
  84. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/lookup/model_lookup.yaml +0 -0
  85. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/patches/__init__.py +0 -0
  86. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/patches/langchain/__init__.py +0 -0
  87. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/patches/langchain/lancedb.py +0 -0
  88. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/patches/langchain/vertexai.py +0 -0
  89. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/pubsub/__init__.py +0 -0
  90. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/pubsub/process_pubsub.py +0 -0
  91. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/pubsub/pubsub_manager.py +0 -0
  92. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/qna/__init__.py +0 -0
  93. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/qna/parsers.py +0 -0
  94. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/qna/retry.py +0 -0
  95. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/streaming/__init__.py +0 -0
  96. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/streaming/content_buffer.py +0 -0
  97. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/streaming/langserve.py +0 -0
  98. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/streaming/stream_lookup.py +0 -0
  99. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/streaming/streaming.py +0 -0
  100. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/summarise/__init__.py +0 -0
  101. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/summarise/summarise.py +0 -0
  102. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/__init__.py +0 -0
  103. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/big_context.py +0 -0
  104. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/config.py +0 -0
  105. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/config_schema.py +0 -0
  106. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/gcp.py +0 -0
  107. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/gcp_project.py +0 -0
  108. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/parsers.py +0 -0
  109. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/timedelta.py +0 -0
  110. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/utils/user_ids.py +0 -0
  111. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/vertex/__init__.py +0 -0
  112. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/vertex/init.py +0 -0
  113. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo/vertex/memory_tools.py +0 -0
  114. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/dependency_links.txt +0 -0
  115. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/entry_points.txt +0 -0
  116. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/requires.txt +0 -0
  117. {sunholo-0.62.11 → sunholo-0.62.13}/sunholo.egg-info/top_level.txt +0 -0
  118. {sunholo-0.62.11 → sunholo-0.62.13}/tests/test_chat_history.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.62.11
3
+ Version: 0.62.13
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.62.11.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.13.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.62.11'
4
+ version = '0.62.13'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -74,7 +74,7 @@ def prep_request_payload(user_input, chat_history, vector_name, stream, **kwargs
74
74
  # Update qna_data with optional values from kwargs
75
75
  qna_data.update(kwargs)
76
76
 
77
- if not 'vector_name' not in qna_data:
77
+ if 'vector_name' not in qna_data:
78
78
  qna_data['vector_name'] = vector_name
79
79
 
80
80
  return qna_endpoint, qna_data
@@ -206,6 +206,8 @@ def prep_vac(request, vector_name):
206
206
  stream_wait_time = data.pop('stream_wait_time', 7)
207
207
  stream_timeout = data.pop('stream_timeout', 120)
208
208
  chat_history = data.pop('chat_history', None)
209
+ vector_name = data.pop('vector_name', vector_name)
210
+
209
211
  paired_messages = extract_chat_history(chat_history)
210
212
 
211
213
  all_input = {'user_input': user_input,
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.62.11
3
+ Version: 0.62.13
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.62.11.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.13.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -112,4 +112,5 @@ sunholo/vertex/__init__.py
112
112
  sunholo/vertex/init.py
113
113
  sunholo/vertex/memory_tools.py
114
114
  tests/test_chat_history.py
115
- tests/test_config.py
115
+ tests/test_config.py
116
+ tests/test_dispatch_to_qa.py
@@ -0,0 +1,34 @@
1
+ import pytest
2
+ from unittest.mock import patch, mock_open
3
+ from sunholo.utils import config
4
+
5
+ def test_load_config():
6
+ expected_config = {"key": "value"}
7
+ with pytest.raises(FileNotFoundError):
8
+ config.load_config("non_existent_file")
9
+ with patch("builtins.open", mock_open(read_data='{"key": "value"}'), create=True):
10
+ result, _ = config.load_config("mock_file.json")
11
+ assert result == expected_config
12
+
13
+ # Test cases for load_config_key function
14
+ @patch("sunholo.utils.config.load_all_configs")
15
+ def test_load_config_key(mock_load_all_configs):
16
+ mock_load_all_configs.return_value = {
17
+ "vacConfig": {
18
+ "vac": {
19
+ "test_vector": {
20
+ "key1": "value1",
21
+ "key2": "value2"
22
+ }
23
+ }
24
+ }
25
+ }
26
+ # Test existing key
27
+ assert config.load_config_key("key1", "test_vector", "vacConfig") == "value1"
28
+ # Test non-existing key
29
+ result = config.load_config_key("non_existing_key", "test_vector", "vacConfig")
30
+ assert result is None
31
+
32
+ # Test invalid configuration
33
+ with pytest.raises(KeyError):
34
+ config.load_config_key("key1", "test_vector", "invalidConfig")
@@ -0,0 +1,18 @@
1
+ import pytest
2
+ from unittest.mock import patch
3
+ from sunholo.agents.dispatch_to_qa import prep_request_payload
4
+
5
+ @pytest.mark.parametrize("user_input, chat_history, vector_name, stream, expected_endpoint, expected_payload", [
6
+ ("What is AI?", [], "my_vector", False, "http://example.com/invoke", {"user_input": "What is AI?", "chat_history": [], "vector_name": "my_vector"}),
7
+ ("Tell me about ML", ["Previous chat message"], "another_vector", True, "http://example.com/stream", {"user_input": "Tell me about ML", "chat_history": ["Previous chat message"], "vector_name": "another_vector"})
8
+ ])
9
+ @patch('sunholo.agents.dispatch_to_qa.load_config_key')
10
+ @patch('sunholo.agents.dispatch_to_qa.route_endpoint')
11
+ def test_prep_request_payload(mock_route_endpoint, mock_load_config_key, user_input, chat_history, vector_name, stream, expected_endpoint, expected_payload):
12
+ mock_route_endpoint.return_value = {"invoke": "http://example.com/invoke", "stream": "http://example.com/stream"}
13
+ mock_load_config_key.side_effect = lambda key, vector_name=None, kind=None: "my_vector" if key == "vector_name" else None
14
+
15
+ endpoint, payload = prep_request_payload(user_input, chat_history, vector_name, stream)
16
+
17
+ assert endpoint == expected_endpoint
18
+ assert payload == expected_payload
@@ -1,11 +0,0 @@
1
- import pytest
2
- from unittest.mock import patch, mock_open
3
- from sunholo.utils import config
4
-
5
- def test_load_config():
6
- expected_config = {"key": "value"}
7
- with pytest.raises(FileNotFoundError):
8
- config.load_config("non_existent_file")
9
- with patch("builtins.open", mock_open(read_data='{"key": "value"}'), create=True):
10
- result, _ = config.load_config("mock_file.json")
11
- assert result == expected_config
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes