sunholo 0.66.3__tar.gz → 0.66.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 (123) hide show
  1. {sunholo-0.66.3 → sunholo-0.66.5}/PKG-INFO +4 -2
  2. {sunholo-0.66.3 → sunholo-0.66.5}/setup.py +4 -2
  3. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/flask/qna_routes.py +42 -1
  4. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/swagger.py +27 -2
  5. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/PKG-INFO +4 -2
  6. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/requires.txt +2 -0
  7. {sunholo-0.66.3 → sunholo-0.66.5}/tests/test_swagger.py +1 -1
  8. {sunholo-0.66.3 → sunholo-0.66.5}/LICENSE.txt +0 -0
  9. {sunholo-0.66.3 → sunholo-0.66.5}/MANIFEST.in +0 -0
  10. {sunholo-0.66.3 → sunholo-0.66.5}/README.md +0 -0
  11. {sunholo-0.66.3 → sunholo-0.66.5}/setup.cfg +0 -0
  12. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/__init__.py +0 -0
  13. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/__init__.py +0 -0
  14. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/chat_history.py +0 -0
  15. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/dispatch_to_qa.py +0 -0
  16. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/fastapi/__init__.py +0 -0
  17. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/fastapi/base.py +0 -0
  18. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/fastapi/qna_routes.py +0 -0
  19. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/flask/__init__.py +0 -0
  20. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/flask/base.py +0 -0
  21. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/langserve.py +0 -0
  22. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/pubsub.py +0 -0
  23. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/route.py +0 -0
  24. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/agents/special_commands.py +0 -0
  25. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/archive/__init__.py +0 -0
  26. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/archive/archive.py +0 -0
  27. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/auth/__init__.py +0 -0
  28. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/auth/run.py +0 -0
  29. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/bots/__init__.py +0 -0
  30. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/bots/discord.py +0 -0
  31. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/bots/github_webhook.py +0 -0
  32. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/bots/webapp.py +0 -0
  33. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/__init__.py +0 -0
  34. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
  35. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/doc_handling.py +0 -0
  36. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/images.py +0 -0
  37. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/loaders.py +0 -0
  38. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/message_data.py +0 -0
  39. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/pdfs.py +0 -0
  40. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/publish.py +0 -0
  41. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/chunker/splitter.py +0 -0
  42. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/__init__.py +0 -0
  43. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/chat_vac.py +0 -0
  44. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/cli.py +0 -0
  45. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/cli_init.py +0 -0
  46. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/configs.py +0 -0
  47. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/deploy.py +0 -0
  48. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/embedder.py +0 -0
  49. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/merge_texts.py +0 -0
  50. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/run_proxy.py +0 -0
  51. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/sun_rich.py +0 -0
  52. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/cli/swagger.py +0 -0
  53. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/components/__init__.py +0 -0
  54. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/components/llm.py +0 -0
  55. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/components/retriever.py +0 -0
  56. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/components/vectorstore.py +0 -0
  57. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/__init__.py +0 -0
  58. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/alloydb.py +0 -0
  59. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/database.py +0 -0
  60. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/lancedb.py +0 -0
  61. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/create_function.sql +0 -0
  62. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  63. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/create_table.sql +0 -0
  64. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  65. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/return_sources.sql +0 -0
  66. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/sql/sb/setup.sql +0 -0
  67. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/static_dbs.py +0 -0
  68. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/database/uuid.py +0 -0
  69. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/embedder/__init__.py +0 -0
  70. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/embedder/embed_chunk.py +0 -0
  71. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/gcs/__init__.py +0 -0
  72. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/gcs/add_file.py +0 -0
  73. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/gcs/download_url.py +0 -0
  74. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/gcs/metadata.py +0 -0
  75. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/langfuse/__init__.py +0 -0
  76. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/langfuse/callback.py +0 -0
  77. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/langfuse/prompts.py +0 -0
  78. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/llamaindex/__init__.py +0 -0
  79. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/llamaindex/generate.py +0 -0
  80. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/llamaindex/get_files.py +0 -0
  81. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/llamaindex/import_files.py +0 -0
  82. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/logging.py +0 -0
  83. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/lookup/__init__.py +0 -0
  84. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/lookup/model_lookup.yaml +0 -0
  85. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/patches/__init__.py +0 -0
  86. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/patches/langchain/__init__.py +0 -0
  87. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/patches/langchain/lancedb.py +0 -0
  88. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/patches/langchain/vertexai.py +0 -0
  89. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/pubsub/__init__.py +0 -0
  90. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/pubsub/process_pubsub.py +0 -0
  91. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/pubsub/pubsub_manager.py +0 -0
  92. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/qna/__init__.py +0 -0
  93. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/qna/parsers.py +0 -0
  94. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/qna/retry.py +0 -0
  95. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/streaming/__init__.py +0 -0
  96. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/streaming/content_buffer.py +0 -0
  97. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/streaming/langserve.py +0 -0
  98. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/streaming/stream_lookup.py +0 -0
  99. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/streaming/streaming.py +0 -0
  100. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/summarise/__init__.py +0 -0
  101. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/summarise/summarise.py +0 -0
  102. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/__init__.py +0 -0
  103. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/big_context.py +0 -0
  104. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/config.py +0 -0
  105. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/config_schema.py +0 -0
  106. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/gcp.py +0 -0
  107. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/gcp_project.py +0 -0
  108. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/parsers.py +0 -0
  109. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/timedelta.py +0 -0
  110. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/user_ids.py +0 -0
  111. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/utils/version.py +0 -0
  112. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/vertex/__init__.py +0 -0
  113. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/vertex/init.py +0 -0
  114. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/vertex/memory_tools.py +0 -0
  115. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo/vertex/safety.py +0 -0
  116. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/SOURCES.txt +0 -0
  117. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/dependency_links.txt +0 -0
  118. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/entry_points.txt +0 -0
  119. {sunholo-0.66.3 → sunholo-0.66.5}/sunholo.egg-info/top_level.txt +0 -0
  120. {sunholo-0.66.3 → sunholo-0.66.5}/tests/test_chat_history.py +0 -0
  121. {sunholo-0.66.3 → sunholo-0.66.5}/tests/test_chunker.py +0 -0
  122. {sunholo-0.66.3 → sunholo-0.66.5}/tests/test_config.py +0 -0
  123. {sunholo-0.66.3 → sunholo-0.66.5}/tests/test_dispatch_to_qa.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.66.3
3
+ Version: 0.66.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.66.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.66.5.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -36,6 +36,7 @@ Requires-Dist: google-api-python-client; extra == "all"
36
36
  Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "all"
37
37
  Requires-Dist: google-cloud-bigquery; extra == "all"
38
38
  Requires-Dist: google-cloud-build; extra == "all"
39
+ Requires-Dist: google-endpoints; extra == "all"
39
40
  Requires-Dist: google-cloud-logging; extra == "all"
40
41
  Requires-Dist: google-cloud-storage; extra == "all"
41
42
  Requires-Dist: google-cloud-pubsub; extra == "all"
@@ -84,6 +85,7 @@ Requires-Dist: google-auth-oauthlib; extra == "gcp"
84
85
  Requires-Dist: google-cloud-aiplatform; extra == "gcp"
85
86
  Requires-Dist: google-cloud-bigquery; extra == "gcp"
86
87
  Requires-Dist: google-cloud-build; extra == "gcp"
88
+ Requires-Dist: google-endpoints; extra == "gcp"
87
89
  Requires-Dist: google-cloud-storage; extra == "gcp"
88
90
  Requires-Dist: google-cloud-logging; extra == "gcp"
89
91
  Requires-Dist: google-cloud-pubsub; extra == "gcp"
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  # Define your base version
4
- version = '0.66.3'
4
+ version = '0.66.5'
5
5
 
6
6
  setup(
7
7
  name='sunholo',
@@ -29,7 +29,7 @@ setup(
29
29
  install_requires=[
30
30
  # Base dependencies
31
31
  "google-auth", # to check if on gcp
32
- "tenacity==8.3.0",
32
+ "tenacity==8.3.0", #TODO: remove soon
33
33
  "ruamel.yaml",
34
34
  "langchain",
35
35
  "langchain_experimental",
@@ -50,6 +50,7 @@ setup(
50
50
  "google-cloud-alloydb-connector[pg8000]",
51
51
  "google-cloud-bigquery",
52
52
  "google-cloud-build",
53
+ "google-endpoints",
53
54
  "google-cloud-logging",
54
55
  "google-cloud-storage",
55
56
  "google-cloud-pubsub",
@@ -103,6 +104,7 @@ setup(
103
104
  "google-cloud-aiplatform",
104
105
  "google-cloud-bigquery",
105
106
  "google-cloud-build",
107
+ "google-endpoints",
106
108
  "google-cloud-storage",
107
109
  "google-cloud-logging",
108
110
  "google-cloud-pubsub",
@@ -27,7 +27,8 @@ from ...utils.config import load_config
27
27
  from ...utils.version import sunholo_version
28
28
  import os
29
29
  from ...gcs.add_file import add_file_to_gcs, handle_base64_image
30
-
30
+ from ..swagger import validate_api_key
31
+ from datetime import datetime, timedelta
31
32
 
32
33
  try:
33
34
  from flask import request, jsonify, Response
@@ -39,6 +40,9 @@ try:
39
40
  except ImportError:
40
41
  pass
41
42
 
43
+ # Cache dictionary to store validated API keys
44
+ api_key_cache = {}
45
+ cache_duration = timedelta(minutes=5) # Cache duration
42
46
 
43
47
  def register_qna_routes(app, stream_interpreter, vac_interpreter):
44
48
  """
@@ -219,6 +223,43 @@ def register_qna_routes(app, stream_interpreter, vac_interpreter):
219
223
  # {'answer': 'output'}
220
224
  return jsonify(bot_output)
221
225
 
226
+ @app.before_request
227
+ def check_authentication_header():
228
+ if request.path.startswith('/openai/'):
229
+ auth_header = request.headers.get('Authorization')
230
+ if auth_header:
231
+ api_key = auth_header.split(' ')[1] # Assuming "Bearer <api_key>"
232
+ endpoints_host = os.getenv('_ENDPOINTS_HOST')
233
+ if not endpoints_host:
234
+ return jsonify({'error': '_ENDPOINTS_HOST environment variable not found'}), 401
235
+
236
+ # Check cache first
237
+ current_time = datetime.now()
238
+ if api_key in api_key_cache:
239
+ cached_result, cache_time = api_key_cache[api_key]
240
+ if current_time - cache_time < cache_duration:
241
+ if not cached_result:
242
+ return jsonify({'error': 'Invalid cached API key'}), 401
243
+ else:
244
+ return # Valid API key, continue to the endpoint
245
+ else:
246
+ # Cache expired, remove from cache
247
+ del api_key_cache[api_key]
248
+
249
+ # Validate API key
250
+ is_valid = validate_api_key(api_key, endpoints_host)
251
+ # Update cache
252
+ api_key_cache[api_key] = (is_valid, current_time)
253
+
254
+ if not is_valid:
255
+ return jsonify({'error': 'Invalid API key'}), 401
256
+ else:
257
+ return jsonify({'error': 'Missing Authorization header'}), 401
258
+
259
+ @app.route('/openai/health', methods=['GET', 'POST'])
260
+ def openai_health_endpoint():
261
+ return jsonify({'message': 'Success'})
262
+
222
263
  @app.route('/openai/v1/chat/completions', methods=['POST'])
223
264
  @app.route('/openai/v1/chat/completions/<vector_name>', methods=['POST'])
224
265
  def openai_compatible_endpoint(vector_name=None):
@@ -6,6 +6,31 @@ from ruamel.yaml import YAML
6
6
  from io import StringIO
7
7
  # check it here:
8
8
  # https://editor.swagger.io/
9
+ from functools import lru_cache
10
+
11
+ try:
12
+ from google.cloud import endpoints_v1
13
+ except ImportError:
14
+ endpoints_v1 = None
15
+
16
+ def validate_api_key(api_key: str, service_name: str) -> bool:
17
+ """
18
+ Validate an API key against the service name e.g. 'endpoints-xxxx.a.run.app'
19
+ """
20
+ if not endpoints_v1:
21
+ raise ImportError("Cloud Endpoints API key validation is required, install via `pip install google-cloud-endpoints`")
22
+
23
+ return _validate_api_key_cached(api_key, service_name)
24
+
25
+ @lru_cache(maxsize=1024)
26
+ def _validate_api_key_cached(api_key: str, service_name: str) -> bool:
27
+ client = endpoints_v1.ServiceControlServiceClient()
28
+ response = client.check(
29
+ service_name=service_name,
30
+ operation={'consumer_id': f'api_key:{api_key}'}
31
+ )
32
+
33
+ return response.check_errors is None
9
34
 
10
35
  def config_to_swagger():
11
36
  """
@@ -123,8 +148,8 @@ def generate_swagger(vac_config, agent_config):
123
148
  swagger_template = {
124
149
  'swagger': '2.0',
125
150
  'info': {
126
- 'title': 'Multivac - Cloud Endpoints + Cloud Run',
127
- 'description': 'Multivac - Cloud Endpoints with a Cloud Run backend',
151
+ 'title': 'Multivac ${_BRANCH_NAME} - Cloud Endpoints + Cloud Run',
152
+ 'description': 'Multivac Endpoints - see documentation at https://dev.sunholo.com/',
128
153
  'version': '0.1.0'
129
154
  },
130
155
  'host': '${_ENDPOINTS_HOST}',
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.66.3
3
+ Version: 0.66.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.66.3.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.66.5.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -36,6 +36,7 @@ Requires-Dist: google-api-python-client; extra == "all"
36
36
  Requires-Dist: google-cloud-alloydb-connector[pg8000]; extra == "all"
37
37
  Requires-Dist: google-cloud-bigquery; extra == "all"
38
38
  Requires-Dist: google-cloud-build; extra == "all"
39
+ Requires-Dist: google-endpoints; extra == "all"
39
40
  Requires-Dist: google-cloud-logging; extra == "all"
40
41
  Requires-Dist: google-cloud-storage; extra == "all"
41
42
  Requires-Dist: google-cloud-pubsub; extra == "all"
@@ -84,6 +85,7 @@ Requires-Dist: google-auth-oauthlib; extra == "gcp"
84
85
  Requires-Dist: google-cloud-aiplatform; extra == "gcp"
85
86
  Requires-Dist: google-cloud-bigquery; extra == "gcp"
86
87
  Requires-Dist: google-cloud-build; extra == "gcp"
88
+ Requires-Dist: google-endpoints; extra == "gcp"
87
89
  Requires-Dist: google-cloud-storage; extra == "gcp"
88
90
  Requires-Dist: google-cloud-logging; extra == "gcp"
89
91
  Requires-Dist: google-cloud-pubsub; extra == "gcp"
@@ -17,6 +17,7 @@ google-api-python-client
17
17
  google-cloud-alloydb-connector[pg8000]
18
18
  google-cloud-bigquery
19
19
  google-cloud-build
20
+ google-endpoints
20
21
  google-cloud-logging
21
22
  google-cloud-storage
22
23
  google-cloud-pubsub
@@ -66,6 +67,7 @@ google-auth-oauthlib
66
67
  google-cloud-aiplatform
67
68
  google-cloud-bigquery
68
69
  google-cloud-build
70
+ google-endpoints
69
71
  google-cloud-storage
70
72
  google-cloud-logging
71
73
  google-cloud-pubsub
@@ -10,6 +10,6 @@ def test_config_to_swagger():
10
10
  assert 'swagger' in swagger_dict
11
11
  assert swagger_dict['swagger'] == '2.0'
12
12
  assert 'info' in swagger_dict
13
- assert swagger_dict['info']['title'] == 'Multivac - Cloud Endpoints + Cloud Run'
13
+ assert swagger_dict['info']['title'] == 'Multivac ${_BRANCH_NAME} - Cloud Endpoints + Cloud Run'
14
14
  assert 'paths' in swagger_dict
15
15
  #TODO: more tests for specific agents
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
File without changes
File without changes