veadk-python 0.1.0__py3-none-any.whl
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.
Potentially problematic release.
This version of veadk-python might be problematic. Click here for more details.
- veadk/__init__.py +31 -0
- veadk/a2a/__init__.py +13 -0
- veadk/a2a/agent_card.py +45 -0
- veadk/a2a/remote_ve_agent.py +19 -0
- veadk/a2a/ve_a2a_server.py +77 -0
- veadk/a2a/ve_agent_executor.py +78 -0
- veadk/a2a/ve_task_store.py +37 -0
- veadk/agent.py +253 -0
- veadk/cli/__init__.py +13 -0
- veadk/cli/main.py +278 -0
- veadk/cli/services/agentpilot/__init__.py +17 -0
- veadk/cli/services/agentpilot/agentpilot.py +77 -0
- veadk/cli/services/veapig/__init__.py +17 -0
- veadk/cli/services/veapig/apig.py +224 -0
- veadk/cli/services/veapig/apig_utils.py +332 -0
- veadk/cli/services/vefaas/__init__.py +17 -0
- veadk/cli/services/vefaas/template/deploy.py +44 -0
- veadk/cli/services/vefaas/template/src/app.py +30 -0
- veadk/cli/services/vefaas/template/src/config.py +58 -0
- veadk/cli/services/vefaas/vefaas.py +346 -0
- veadk/cli/services/vefaas/vefaas_utils.py +408 -0
- veadk/cli/services/vetls/__init__.py +17 -0
- veadk/cli/services/vetls/vetls.py +87 -0
- veadk/cli/studio/__init__.py +13 -0
- veadk/cli/studio/agent_processor.py +247 -0
- veadk/cli/studio/fast_api.py +232 -0
- veadk/cli/studio/model.py +116 -0
- veadk/cloud/__init__.py +13 -0
- veadk/cloud/cloud_agent_engine.py +144 -0
- veadk/cloud/cloud_app.py +123 -0
- veadk/cloud/template/app.py +30 -0
- veadk/cloud/template/config.py +55 -0
- veadk/config.py +131 -0
- veadk/consts.py +17 -0
- veadk/database/__init__.py +17 -0
- veadk/database/base_database.py +45 -0
- veadk/database/database_factory.py +80 -0
- veadk/database/kv/__init__.py +13 -0
- veadk/database/kv/redis_database.py +109 -0
- veadk/database/local_database.py +43 -0
- veadk/database/relational/__init__.py +13 -0
- veadk/database/relational/mysql_database.py +114 -0
- veadk/database/vector/__init__.py +13 -0
- veadk/database/vector/opensearch_vector_database.py +205 -0
- veadk/database/vector/type.py +50 -0
- veadk/database/viking/__init__.py +13 -0
- veadk/database/viking/viking_database.py +378 -0
- veadk/database/viking/viking_memory_db.py +521 -0
- veadk/evaluation/__init__.py +17 -0
- veadk/evaluation/adk_evaluator/__init__.py +13 -0
- veadk/evaluation/adk_evaluator/adk_evaluator.py +291 -0
- veadk/evaluation/base_evaluator.py +242 -0
- veadk/evaluation/deepeval_evaluator/__init__.py +17 -0
- veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +223 -0
- veadk/evaluation/eval_set_file_loader.py +28 -0
- veadk/evaluation/eval_set_recorder.py +91 -0
- veadk/evaluation/utils/prometheus.py +142 -0
- veadk/knowledgebase/__init__.py +17 -0
- veadk/knowledgebase/knowledgebase.py +83 -0
- veadk/knowledgebase/knowledgebase_database_adapter.py +259 -0
- veadk/memory/__init__.py +13 -0
- veadk/memory/long_term_memory.py +119 -0
- veadk/memory/memory_database_adapter.py +235 -0
- veadk/memory/short_term_memory.py +124 -0
- veadk/memory/short_term_memory_processor.py +90 -0
- veadk/prompts/__init__.py +13 -0
- veadk/prompts/agent_default_prompt.py +30 -0
- veadk/prompts/prompt_evaluator.py +20 -0
- veadk/prompts/prompt_memory_processor.py +55 -0
- veadk/prompts/prompt_optimization.py +158 -0
- veadk/runner.py +252 -0
- veadk/tools/__init__.py +13 -0
- veadk/tools/builtin_tools/__init__.py +13 -0
- veadk/tools/builtin_tools/lark.py +67 -0
- veadk/tools/builtin_tools/las.py +23 -0
- veadk/tools/builtin_tools/vesearch.py +49 -0
- veadk/tools/builtin_tools/web_scraper.py +76 -0
- veadk/tools/builtin_tools/web_search.py +192 -0
- veadk/tools/demo_tools.py +58 -0
- veadk/tools/load_knowledgebase_tool.py +144 -0
- veadk/tools/sandbox/__init__.py +13 -0
- veadk/tools/sandbox/browser_sandbox.py +27 -0
- veadk/tools/sandbox/code_sandbox.py +30 -0
- veadk/tools/sandbox/computer_sandbox.py +27 -0
- veadk/tracing/__init__.py +13 -0
- veadk/tracing/base_tracer.py +172 -0
- veadk/tracing/telemetry/__init__.py +13 -0
- veadk/tracing/telemetry/exporters/__init__.py +13 -0
- veadk/tracing/telemetry/exporters/apiserver_exporter.py +60 -0
- veadk/tracing/telemetry/exporters/apmplus_exporter.py +101 -0
- veadk/tracing/telemetry/exporters/base_exporter.py +28 -0
- veadk/tracing/telemetry/exporters/cozeloop_exporter.py +69 -0
- veadk/tracing/telemetry/exporters/inmemory_exporter.py +88 -0
- veadk/tracing/telemetry/exporters/tls_exporter.py +78 -0
- veadk/tracing/telemetry/metrics/__init__.py +13 -0
- veadk/tracing/telemetry/metrics/opentelemetry_metrics.py +73 -0
- veadk/tracing/telemetry/opentelemetry_tracer.py +167 -0
- veadk/types.py +23 -0
- veadk/utils/__init__.py +13 -0
- veadk/utils/logger.py +59 -0
- veadk/utils/misc.py +33 -0
- veadk/utils/patches.py +85 -0
- veadk/utils/volcengine_sign.py +199 -0
- veadk/version.py +15 -0
- veadk_python-0.1.0.dist-info/METADATA +124 -0
- veadk_python-0.1.0.dist-info/RECORD +110 -0
- veadk_python-0.1.0.dist-info/WHEEL +5 -0
- veadk_python-0.1.0.dist-info/entry_points.txt +2 -0
- veadk_python-0.1.0.dist-info/licenses/LICENSE +201 -0
- veadk_python-0.1.0.dist-info/top_level.txt +1 -0
veadk/utils/patches.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import asyncio
|
|
16
|
+
|
|
17
|
+
from veadk.utils.logger import get_logger
|
|
18
|
+
|
|
19
|
+
logger = get_logger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def patch_asyncio():
|
|
23
|
+
"""Patch asyncio to ignore 'Event loop is closed' error.
|
|
24
|
+
|
|
25
|
+
After invoking MCPToolset, we met the `RuntimeError: Event loop is closed` error. Related issue see:
|
|
26
|
+
- https://github.com/google/adk-python/issues/1429
|
|
27
|
+
- https://github.com/google/adk-python/pull/1420
|
|
28
|
+
"""
|
|
29
|
+
original_del = asyncio.base_subprocess.BaseSubprocessTransport.__del__
|
|
30
|
+
|
|
31
|
+
def patched_del(self):
|
|
32
|
+
try:
|
|
33
|
+
original_del(self)
|
|
34
|
+
except RuntimeError as e:
|
|
35
|
+
if "Event loop is closed" not in str(e):
|
|
36
|
+
raise
|
|
37
|
+
|
|
38
|
+
asyncio.base_subprocess.BaseSubprocessTransport.__del__ = patched_del
|
|
39
|
+
|
|
40
|
+
from anyio._backends._asyncio import CancelScope
|
|
41
|
+
|
|
42
|
+
original_cancel_scope_exit = CancelScope.__exit__
|
|
43
|
+
|
|
44
|
+
def patched_cancel_scope_exit(self, exc_type, exc_val, exc_tb):
|
|
45
|
+
try:
|
|
46
|
+
return original_cancel_scope_exit(self, exc_type, exc_val, exc_tb)
|
|
47
|
+
except RuntimeError as e:
|
|
48
|
+
if (
|
|
49
|
+
"Attempted to exit cancel scope in a different task than it was entered in"
|
|
50
|
+
in str(e)
|
|
51
|
+
):
|
|
52
|
+
return False
|
|
53
|
+
raise
|
|
54
|
+
|
|
55
|
+
CancelScope.__exit__ = patched_cancel_scope_exit
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# def enable_veadk_tracing(tracing_func):
|
|
59
|
+
# """Enable Veadk tracing by add after_agent_callback to Google ADK Agent.
|
|
60
|
+
|
|
61
|
+
# Args:
|
|
62
|
+
# tracing_func: The tracing function to be called after the Runner.run_async is done.
|
|
63
|
+
# """
|
|
64
|
+
# import inspect
|
|
65
|
+
# from functools import wraps
|
|
66
|
+
|
|
67
|
+
# def async_generator_decorator(generator_func):
|
|
68
|
+
# sig = inspect.signature(generator_func)
|
|
69
|
+
|
|
70
|
+
# @wraps(generator_func)
|
|
71
|
+
# async def wrapper(*args, **kwargs):
|
|
72
|
+
# bound_args = sig.bind_partial(*args, **kwargs)
|
|
73
|
+
# user_id = bound_args.arguments.get("user_id", None)
|
|
74
|
+
# session_id = bound_args.arguments.get("session_id", None)
|
|
75
|
+
# try:
|
|
76
|
+
# async for item in generator_func(*args, **kwargs):
|
|
77
|
+
# yield item
|
|
78
|
+
# finally:
|
|
79
|
+
# tracing_func(user_id, session_id)
|
|
80
|
+
|
|
81
|
+
# return wrapper
|
|
82
|
+
|
|
83
|
+
# from google.adk.runners import Runner
|
|
84
|
+
|
|
85
|
+
# Runner.run_async = async_generator_decorator(Runner.run_async)
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import datetime
|
|
16
|
+
import hashlib
|
|
17
|
+
import hmac
|
|
18
|
+
from urllib.parse import quote
|
|
19
|
+
|
|
20
|
+
import requests
|
|
21
|
+
|
|
22
|
+
Service = ""
|
|
23
|
+
Version = ""
|
|
24
|
+
Region = ""
|
|
25
|
+
Host = ""
|
|
26
|
+
ContentType = ""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def norm_query(params):
|
|
30
|
+
query = ""
|
|
31
|
+
for key in sorted(params.keys()):
|
|
32
|
+
if isinstance(params[key], list):
|
|
33
|
+
for k in params[key]:
|
|
34
|
+
query = (
|
|
35
|
+
query + quote(key, safe="-_.~") + "=" + quote(k, safe="-_.~") + "&"
|
|
36
|
+
)
|
|
37
|
+
else:
|
|
38
|
+
query = (
|
|
39
|
+
query
|
|
40
|
+
+ quote(key, safe="-_.~")
|
|
41
|
+
+ "="
|
|
42
|
+
+ quote(params[key], safe="-_.~")
|
|
43
|
+
+ "&"
|
|
44
|
+
)
|
|
45
|
+
query = query[:-1]
|
|
46
|
+
return query.replace("+", "%20")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# 第一步:准备辅助函数。
|
|
50
|
+
# sha256 非对称加密
|
|
51
|
+
def hmac_sha256(key: bytes, content: str):
|
|
52
|
+
return hmac.new(key, content.encode("utf-8"), hashlib.sha256).digest()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# sha256 hash算法
|
|
56
|
+
def hash_sha256(content: str):
|
|
57
|
+
return hashlib.sha256(content.encode("utf-8")).hexdigest()
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# 第二步:签名请求函数
|
|
61
|
+
def request(method, date, query, header, ak, sk, action, body):
|
|
62
|
+
# 第三步:创建身份证明。其中的 Service 和 Region 字段是固定的。ak 和 sk 分别代表
|
|
63
|
+
# AccessKeyID 和 SecretAccessKey。同时需要初始化签名结构体。一些签名计算时需要的属性也在这里处理。
|
|
64
|
+
# 初始化身份证明结构体
|
|
65
|
+
credential = {
|
|
66
|
+
"access_key_id": ak,
|
|
67
|
+
"secret_access_key": sk,
|
|
68
|
+
"service": Service,
|
|
69
|
+
"region": Region,
|
|
70
|
+
}
|
|
71
|
+
# 初始化签名结构体
|
|
72
|
+
request_param = {
|
|
73
|
+
"body": body,
|
|
74
|
+
"host": Host,
|
|
75
|
+
"path": "/",
|
|
76
|
+
"method": method,
|
|
77
|
+
"content_type": ContentType,
|
|
78
|
+
"date": date,
|
|
79
|
+
"query": {"Action": action, "Version": Version, **query},
|
|
80
|
+
}
|
|
81
|
+
if body is None:
|
|
82
|
+
request_param["body"] = ""
|
|
83
|
+
# 第四步:接下来开始计算签名。在计算签名前,先准备好用于接收签算结果的 signResult 变量,并设置一些参数。
|
|
84
|
+
# 初始化签名结果的结构体
|
|
85
|
+
x_date = request_param["date"].strftime("%Y%m%dT%H%M%SZ")
|
|
86
|
+
short_x_date = x_date[:8]
|
|
87
|
+
x_content_sha256 = hash_sha256(request_param["body"])
|
|
88
|
+
sign_result = {
|
|
89
|
+
"Host": request_param["host"],
|
|
90
|
+
"X-Content-Sha256": x_content_sha256,
|
|
91
|
+
"X-Date": x_date,
|
|
92
|
+
"Content-Type": request_param["content_type"],
|
|
93
|
+
}
|
|
94
|
+
# 第五步:计算 Signature 签名。
|
|
95
|
+
signed_headers_str = ";".join(
|
|
96
|
+
["content-type", "host", "x-content-sha256", "x-date"]
|
|
97
|
+
)
|
|
98
|
+
# signed_headers_str = signed_headers_str + ";x-security-token"
|
|
99
|
+
canonical_request_str = "\n".join(
|
|
100
|
+
[
|
|
101
|
+
request_param["method"].upper(),
|
|
102
|
+
request_param["path"],
|
|
103
|
+
norm_query(request_param["query"]),
|
|
104
|
+
"\n".join(
|
|
105
|
+
[
|
|
106
|
+
"content-type:" + request_param["content_type"],
|
|
107
|
+
"host:" + request_param["host"],
|
|
108
|
+
"x-content-sha256:" + x_content_sha256,
|
|
109
|
+
"x-date:" + x_date,
|
|
110
|
+
]
|
|
111
|
+
),
|
|
112
|
+
"",
|
|
113
|
+
signed_headers_str,
|
|
114
|
+
x_content_sha256,
|
|
115
|
+
]
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# 打印正规化的请求用于调试比对
|
|
119
|
+
# print(canonical_request_str)
|
|
120
|
+
hashed_canonical_request = hash_sha256(canonical_request_str)
|
|
121
|
+
|
|
122
|
+
# 打印hash值用于调试比对
|
|
123
|
+
# print(hashed_canonical_request)
|
|
124
|
+
credential_scope = "/".join(
|
|
125
|
+
[short_x_date, credential["region"], credential["service"], "request"]
|
|
126
|
+
)
|
|
127
|
+
string_to_sign = "\n".join(
|
|
128
|
+
["HMAC-SHA256", x_date, credential_scope, hashed_canonical_request]
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
# 打印最终计算的签名字符串用于调试比对
|
|
132
|
+
# print(string_to_sign)
|
|
133
|
+
k_date = hmac_sha256(credential["secret_access_key"].encode("utf-8"), short_x_date)
|
|
134
|
+
k_region = hmac_sha256(k_date, credential["region"])
|
|
135
|
+
k_service = hmac_sha256(k_region, credential["service"])
|
|
136
|
+
k_signing = hmac_sha256(k_service, "request")
|
|
137
|
+
signature = hmac_sha256(k_signing, string_to_sign).hex()
|
|
138
|
+
|
|
139
|
+
sign_result["Authorization"] = (
|
|
140
|
+
"HMAC-SHA256 Credential={}, SignedHeaders={}, Signature={}".format(
|
|
141
|
+
credential["access_key_id"] + "/" + credential_scope,
|
|
142
|
+
signed_headers_str,
|
|
143
|
+
signature,
|
|
144
|
+
)
|
|
145
|
+
)
|
|
146
|
+
header = {**header, **sign_result}
|
|
147
|
+
# header = {**header, **{"X-Security-Token": SessionToken}}
|
|
148
|
+
# 第六步:将 Signature 签名写入 HTTP Header 中,并发送 HTTP 请求。
|
|
149
|
+
r = requests.request(
|
|
150
|
+
method=method,
|
|
151
|
+
url="https://{}{}".format(request_param["host"], request_param["path"]),
|
|
152
|
+
headers=header,
|
|
153
|
+
params=request_param["query"],
|
|
154
|
+
data=request_param["body"],
|
|
155
|
+
)
|
|
156
|
+
return r.json()
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def ve_request(
|
|
160
|
+
request_body: dict,
|
|
161
|
+
action: str,
|
|
162
|
+
ak: str,
|
|
163
|
+
sk: str,
|
|
164
|
+
service: str,
|
|
165
|
+
version: str,
|
|
166
|
+
region: str,
|
|
167
|
+
host: str,
|
|
168
|
+
content_type: str = "application/json",
|
|
169
|
+
):
|
|
170
|
+
# response_body = request("Get", datetime.datetime.utcnow(), {}, {}, AK, SK, "ListUsers", None)
|
|
171
|
+
# print(response_body)
|
|
172
|
+
# 以下参数视服务不同而不同,一个服务内通常是一致的
|
|
173
|
+
global Service
|
|
174
|
+
Service = service
|
|
175
|
+
global Version
|
|
176
|
+
Version = version
|
|
177
|
+
global Region
|
|
178
|
+
Region = region
|
|
179
|
+
global Host
|
|
180
|
+
Host = host
|
|
181
|
+
global ContentType
|
|
182
|
+
ContentType = content_type
|
|
183
|
+
|
|
184
|
+
AK = ak
|
|
185
|
+
SK = sk
|
|
186
|
+
|
|
187
|
+
now = datetime.datetime.utcnow()
|
|
188
|
+
|
|
189
|
+
# Body的格式需要配合Content-Type,API使用的类型请阅读具体的官方文档,如:json格式需要json.dumps(obj)
|
|
190
|
+
# response_body = request("GET", now, {"Limit": "2"}, {}, AK, SK, "ListUsers", None)
|
|
191
|
+
import json
|
|
192
|
+
|
|
193
|
+
try:
|
|
194
|
+
response_body = request(
|
|
195
|
+
"POST", now, {}, {}, AK, SK, action, json.dumps(request_body)
|
|
196
|
+
)
|
|
197
|
+
return response_body
|
|
198
|
+
except Exception as e:
|
|
199
|
+
raise e
|
veadk/version.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
VERSION = "0.1.0"
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: veadk-python
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Volcengine agent development kit, integrations with Volcengine cloud services.
|
|
5
|
+
Author-email: Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>, Zhi Han <sliverydayday@gmail.com>, Meng Wang <mengwangwm@gmail.com>
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: pydantic-settings>=2.10.1
|
|
10
|
+
Requires-Dist: a2a-sdk==0.2.12
|
|
11
|
+
Requires-Dist: deprecated>=1.2.18
|
|
12
|
+
Requires-Dist: google-adk==1.8.0
|
|
13
|
+
Requires-Dist: litellm>=1.74.3
|
|
14
|
+
Requires-Dist: loguru>=0.7.3
|
|
15
|
+
Requires-Dist: openinference-instrumentation-google-adk>=0.1.1
|
|
16
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.35.0
|
|
17
|
+
Requires-Dist: opentelemetry-instrumentation-logging>=0.56b0
|
|
18
|
+
Requires-Dist: wrapt>=1.17.2
|
|
19
|
+
Provides-Extra: database
|
|
20
|
+
Requires-Dist: opensearch-py==2.8.0; extra == "database"
|
|
21
|
+
Requires-Dist: redis>=6.2.0; extra == "database"
|
|
22
|
+
Requires-Dist: pymysql>=1.1.1; extra == "database"
|
|
23
|
+
Requires-Dist: volcengine>=1.0.193; extra == "database"
|
|
24
|
+
Requires-Dist: tos>=2.8.4; extra == "database"
|
|
25
|
+
Provides-Extra: eval
|
|
26
|
+
Requires-Dist: prometheus-client>=0.22.1; extra == "eval"
|
|
27
|
+
Requires-Dist: deepeval>=3.2.6; extra == "eval"
|
|
28
|
+
Requires-Dist: google-adk[eval]; extra == "eval"
|
|
29
|
+
Provides-Extra: cli
|
|
30
|
+
Requires-Dist: volcengine-python-sdk==4.0.3; extra == "cli"
|
|
31
|
+
Requires-Dist: typer>=0.16.0; extra == "cli"
|
|
32
|
+
Requires-Dist: streamlit==1.46.1; extra == "cli"
|
|
33
|
+
Requires-Dist: agent-pilot-sdk>=0.0.9; extra == "cli"
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: pre-commit>=4.2.0; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest>=8.4.1; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<img src="assets/images/logo.png" alt="Volcengine Agent Development Kit Logo" width="50%">
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
# Volcengine Agent Development Kit
|
|
46
|
+
|
|
47
|
+
[](LICENSE)
|
|
48
|
+
[](https://deepwiki.com/volcengine/veadk-python)
|
|
49
|
+
|
|
50
|
+
An open-source kit for agent development, integrated the powerful capabilities of Volcengine.
|
|
51
|
+
|
|
52
|
+
For more details, see our [documents](https://volcengine.github.io/veadk-python/).
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
We use `uv` to build this project ([how-to-install-uv](https://docs.astral.sh/uv/getting-started/installation/)).
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
git clone ... # clone repo first
|
|
60
|
+
|
|
61
|
+
cd veadk-python
|
|
62
|
+
|
|
63
|
+
uv venv --python 3.10
|
|
64
|
+
|
|
65
|
+
# only install necessary requirements
|
|
66
|
+
uv sync
|
|
67
|
+
|
|
68
|
+
# or, install extra requirements
|
|
69
|
+
# uv sync --extra database
|
|
70
|
+
# uv sync --extra eval
|
|
71
|
+
# uv sync --extra cli
|
|
72
|
+
|
|
73
|
+
# or, directly install all requirements
|
|
74
|
+
# uv sync --all-extras
|
|
75
|
+
|
|
76
|
+
# install veadk-python with editable mode
|
|
77
|
+
uv pip install -e .
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Configuration
|
|
81
|
+
|
|
82
|
+
We recommand you to create a `config.yaml` file in the root directory of your own project, `VeADK` is able to read it automatically.
|
|
83
|
+
|
|
84
|
+
You can refer to the [example config file](config.yaml.example) for more details.
|
|
85
|
+
|
|
86
|
+
## Have a try
|
|
87
|
+
|
|
88
|
+
Enjoy a minimal agent from VeADK:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from veadk import Agent
|
|
92
|
+
import asyncio
|
|
93
|
+
|
|
94
|
+
agent = Agent()
|
|
95
|
+
|
|
96
|
+
res = asyncio.run(agent.run("hello!"))
|
|
97
|
+
print(res)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Command line tools
|
|
101
|
+
|
|
102
|
+
VeADK provides several useful command line tools for faster deployment and optimization, such as:
|
|
103
|
+
|
|
104
|
+
- `veadk deploy`: deploy your project to Volcengine VeFaaS platform (you can use `veadk init` to init a demo project first)
|
|
105
|
+
- `veadk prompt`: otpimize the system prompt of your agent by PromptPilot
|
|
106
|
+
|
|
107
|
+
## Contribution
|
|
108
|
+
|
|
109
|
+
Before making your contribution to our repository, please install and config the `pre-commit` linter first.
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
pip install pre-commit
|
|
113
|
+
pre-commit install
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Before commit or push your changes, please make sure the unittests are passed ,otherwise your PR will be rejected by CI/CD workflow. Running the unittests by:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pytest -n 16
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## License
|
|
123
|
+
|
|
124
|
+
This project is licensed under the [Apache 2.0 License](./LICENSE).
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
veadk/__init__.py,sha256=h8Bp9i6OP0XdG6NncpNGKrVnH1nQdmLvH-_wJPZ-qYo,997
|
|
2
|
+
veadk/agent.py,sha256=oCpDSoXPNHyUth7aom3PHJKmYNCNmssiM1mqi5FwHmI,9806
|
|
3
|
+
veadk/config.py,sha256=UFUgzL4fTRlM_LIyutP50dvxtKOuFeMhL5TPEOO7r2k,4109
|
|
4
|
+
veadk/consts.py,sha256=DIVr-sXQahrlJoPiTfsDL0y_pX8w-LLXHDsubL5w13k,802
|
|
5
|
+
veadk/runner.py,sha256=Rz3xU6lAOX9ObJryveUpMRlWydIcmvRkj_-fBxWDakg,8900
|
|
6
|
+
veadk/types.py,sha256=pFwBNu93xldy23j4tycpdpKUvpeg_8Ho5hhf-DCsKQg,864
|
|
7
|
+
veadk/version.py,sha256=mrqo_LScRyn-MYWZu8xzWqUTnggwSa715PK4SJeBqdg,653
|
|
8
|
+
veadk/a2a/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
9
|
+
veadk/a2a/agent_card.py,sha256=lhtgW1acMpxYUdULHEZwVFXOi6Xh4lNkf4S7QIhbFFI,1525
|
|
10
|
+
veadk/a2a/remote_ve_agent.py,sha256=LRZrg0gOcWh7qJodBgo0FJMtLOjFZaWuNISgWHnviu8,621
|
|
11
|
+
veadk/a2a/ve_a2a_server.py,sha256=zSRK-w0fy5YB9iEQX0fRhLBzcT16opR1ZVRXVS0p_u0,2573
|
|
12
|
+
veadk/a2a/ve_agent_executor.py,sha256=PSF5akKxVosLOXQ_Kb75PO8u1Lrm2Zj6OnRT5-U6VE8,2646
|
|
13
|
+
veadk/a2a/ve_task_store.py,sha256=rxwQ-j7Ffe4LnLwpKbweQk4ofwMQx9UL6k3zaDrFIXg,1234
|
|
14
|
+
veadk/cli/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
15
|
+
veadk/cli/main.py,sha256=Qep0ntZit0xT2hfunjIt3A4anQi6UoBptwFSWLQ3bcc,8258
|
|
16
|
+
veadk/cli/services/agentpilot/__init__.py,sha256=CZp6VOX_95rK8uei2ViTALAT0baVLHJVoEfdFsmHTKg,696
|
|
17
|
+
veadk/cli/services/agentpilot/agentpilot.py,sha256=rU-O4zd3X0SDLRjo0pnIyeQYgsYlP2ePUeoqEb7_PEs,2906
|
|
18
|
+
veadk/cli/services/veapig/__init__.py,sha256=n3Zx34e262kdSPHR22h84MbkLA3xtJ2ZyoKdECVXPz8,690
|
|
19
|
+
veadk/cli/services/veapig/apig.py,sha256=B4yPiNTGeXKFdji8RHWrCKmv0RomhfbCKgHM3IhaziU,8931
|
|
20
|
+
veadk/cli/services/veapig/apig_utils.py,sha256=9eL7vu51PyPAZNoBMpoaDjWRatvqbY_Bb1BaBsjz-V8,10766
|
|
21
|
+
veadk/cli/services/vefaas/__init__.py,sha256=i4KU1qoBvByN1MVvk_vX0KVwWlZ-4U-CNwXN-bYrTY4,684
|
|
22
|
+
veadk/cli/services/vefaas/vefaas.py,sha256=e6LLlG22-_IrDCLkL_LSRc10wMKLRZlkCMSP7xLjwhQ,11809
|
|
23
|
+
veadk/cli/services/vefaas/vefaas_utils.py,sha256=57INjzLs-k2pReHhyMaFwptUUuP5Wk7SWqFUzaE3bBw,13200
|
|
24
|
+
veadk/cli/services/vefaas/template/deploy.py,sha256=xiMahdZFM_VnkOK121qkiyYmvudtkgE2SJx_aqj5kxE,1419
|
|
25
|
+
veadk/cli/services/vefaas/template/src/app.py,sha256=yYx6gOyPyMRfmILKFSt6ZCyMhvleTluI-PL5AxDOWDI,954
|
|
26
|
+
veadk/cli/services/vefaas/template/src/config.py,sha256=S5r43YQj5RynNUS3HZm789vtr1OsGKMSGomj7M7fEvE,1995
|
|
27
|
+
veadk/cli/services/vetls/__init__.py,sha256=NRcf3y892ZnqA3-F0AXsGOEtH5UioAlDdWrh8JIPDFM,681
|
|
28
|
+
veadk/cli/services/vetls/vetls.py,sha256=ZGxE6ThRToQNlECP2RLsCmf_OEN-Q7j3gbe8ytN_MoY,3146
|
|
29
|
+
veadk/cli/studio/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
30
|
+
veadk/cli/studio/agent_processor.py,sha256=D4xMvQ_p8REJHQxh4-eUqjAhdJy8rS0OUOmwodBJM5Y,8850
|
|
31
|
+
veadk/cli/studio/fast_api.py,sha256=x-yg757G72wFqd9Cgd5Sk2_k4wGSC8EbM2SLBFJ-ZSM,6838
|
|
32
|
+
veadk/cli/studio/model.py,sha256=VAzHve_vMw9eUEub0pL7s6Tt2I7ExzJ8eUET0KY2UlA,2479
|
|
33
|
+
veadk/cloud/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
34
|
+
veadk/cloud/cloud_agent_engine.py,sha256=av3b2N7715g7ID7YHdkDFwfj_rl1TKeAv5q2xeQYfJM,5313
|
|
35
|
+
veadk/cloud/cloud_app.py,sha256=Bg_qGLf5-xXo7Gmmtp_ECfZUXHpufNnXTgwRWrx5z6o,4532
|
|
36
|
+
veadk/cloud/template/app.py,sha256=6LKWjVFKLd8svH5ZTx5HHZbnxMaLQ0zJXs1dHY1nYVY,948
|
|
37
|
+
veadk/cloud/template/config.py,sha256=s1lhRodvQxwUz5pxsc7VcNNI_a9q3ACniucPqvPKTSw,1842
|
|
38
|
+
veadk/database/__init__.py,sha256=7mkw5JUz9-I-wF3UvG9PYDWyy3UYkzDul9_oU1ojjXk,712
|
|
39
|
+
veadk/database/base_database.py,sha256=sdAaBKFnA9tOEzcJvtv3xSE3G_vBfFJdpAHVR4oRvgs,1217
|
|
40
|
+
veadk/database/database_factory.py,sha256=P8fy_pt1EC4lCsGdfjiZfeoCPhInghI29zX_cjTGp10,2804
|
|
41
|
+
veadk/database/local_database.py,sha256=ql2Cxu-FQ1g5t7PGVZGmXRYBrZ4ElVYlNx0tCoKzqEY,1396
|
|
42
|
+
veadk/database/kv/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
43
|
+
veadk/database/kv/redis_database.py,sha256=7TIA9V6NJtuA_PWlI9Q1lLV4J7IHbBneKUA3VknK9tI,3639
|
|
44
|
+
veadk/database/relational/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
45
|
+
veadk/database/relational/mysql_database.py,sha256=eXb9RKMQpOFFBXiRRz8Ph80xNoeKY7die1F_CFNjcY8,3726
|
|
46
|
+
veadk/database/vector/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
47
|
+
veadk/database/vector/opensearch_vector_database.py,sha256=neryvNi3CpYJPH1nSf1Z-kDLnnmZk6JvHUhnhqcBQfA,7238
|
|
48
|
+
veadk/database/vector/type.py,sha256=tQXaHMs4YJrLLL6O1m6Hmyu4sdB6M7C467P3Mxk_bFg,1770
|
|
49
|
+
veadk/database/viking/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
50
|
+
veadk/database/viking/viking_database.py,sha256=RyKGBoUPKVqtvKu2LDCoMiACoM0AiOEaPJHYWfpPVtk,13098
|
|
51
|
+
veadk/database/viking/viking_memory_db.py,sha256=yzRhE0N5kVzO32jCCdoMDGNYhv5NdiD8XMUhBfd4QuM,17791
|
|
52
|
+
veadk/evaluation/__init__.py,sha256=Pwnv6x-QaQQiv4J_QNnR-Asl7wN0laF92EX9n0Sll1U,713
|
|
53
|
+
veadk/evaluation/base_evaluator.py,sha256=kbl6jp6qrF2DFy3XJIO-lj9tDctsRxrmeontSegpoyo,8768
|
|
54
|
+
veadk/evaluation/eval_set_file_loader.py,sha256=AkKZpLXKdHve6SLDl4HJDRbBsTBXFyFgC8iykscJOf4,1130
|
|
55
|
+
veadk/evaluation/eval_set_recorder.py,sha256=lSvDixwKfs1Moho1FDhpveuDoydUfGQJWVYdvDny_p8,3146
|
|
56
|
+
veadk/evaluation/adk_evaluator/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
57
|
+
veadk/evaluation/adk_evaluator/adk_evaluator.py,sha256=v3IiIFyg6S1Ik9TAYo-3ZaF_JvEhAXQtwmqkv8rL6Rc,10193
|
|
58
|
+
veadk/evaluation/deepeval_evaluator/__init__.py,sha256=lLGtRvWhwDy4u7hmtZxZbPmdMzM58pSjEwEF34NqW-4,718
|
|
59
|
+
veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py,sha256=GxpTw_KQuwFMKCaT9WeQukCp3s4OFHPTq2fPaluG9xs,8880
|
|
60
|
+
veadk/evaluation/utils/prometheus.py,sha256=ryJKszxFc7VqStCt3eotdXxti7FQNgtuS6w91ug2Lo0,3855
|
|
61
|
+
veadk/knowledgebase/__init__.py,sha256=k-5WM0DAqNq94Dg64Rl12ozoS1BnE9i-MY_ZOR2s2CQ,705
|
|
62
|
+
veadk/knowledgebase/knowledgebase.py,sha256=Jt6rVTAiFeCw5KaUHO-Ssmr0gFQf1HZ1-kDIQf3yjQ0,3179
|
|
63
|
+
veadk/knowledgebase/knowledgebase_database_adapter.py,sha256=EwJyGcjkrA_IdytAsHSNGbkiQ1LAhd1RRnL7Kr42QPo,9743
|
|
64
|
+
veadk/memory/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
65
|
+
veadk/memory/long_term_memory.py,sha256=Y0QrdIBE6JNaHfoq_v-3A2bFQ_G85r9VGgK3xgslXAs,4047
|
|
66
|
+
veadk/memory/memory_database_adapter.py,sha256=g2j38XOAnd2anAKTW6JKQLagTG8N71J8gUSa8EIl1bA,8471
|
|
67
|
+
veadk/memory/short_term_memory.py,sha256=wSEgRkcDnMqhuO5LTNAyrBKgays5Ayr04VZJEzQCzYg,4491
|
|
68
|
+
veadk/memory/short_term_memory_processor.py,sha256=jB4nxDVFxGioLzKLZQ7o2X_u6rR0aZb1j-eGiyPa5i4,3001
|
|
69
|
+
veadk/prompts/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
70
|
+
veadk/prompts/agent_default_prompt.py,sha256=hijfMeZt0TYDVB9WEVwcazuuhm8z0Xdlzht1CfyYPLE,1380
|
|
71
|
+
veadk/prompts/prompt_evaluator.py,sha256=oE6x7WJrT-q7weh9t-jNAZv3_90eoiWLC9RiuCYoWQc,1103
|
|
72
|
+
veadk/prompts/prompt_memory_processor.py,sha256=7RF12ixz13FQ-1H7xDM3EHcMtMRDh7UIdT2aTnTdoNs,1729
|
|
73
|
+
veadk/prompts/prompt_optimization.py,sha256=rXLZFR1Q_t8n19H0CZRkBnLyd6WzXFz8to4O3yOTe_I,4418
|
|
74
|
+
veadk/tools/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
75
|
+
veadk/tools/demo_tools.py,sha256=Gu3sxygcYVS2cv3WqUOl-Gq4JhMlDAktoCHOFT0gbFQ,2216
|
|
76
|
+
veadk/tools/load_knowledgebase_tool.py,sha256=o-glNgYqZpMZuYfPGLdjUG5SRZVZX1oiubEJZypgtiA,4427
|
|
77
|
+
veadk/tools/builtin_tools/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
78
|
+
veadk/tools/builtin_tools/lark.py,sha256=b2IWsN8fZFh9aweSGznaOqA30TCOLpVjNCDNa1LHZl4,2046
|
|
79
|
+
veadk/tools/builtin_tools/las.py,sha256=LpxwZME2RyCvaFXae18yPUwSb9su1HeSudoLAaNzjE8,890
|
|
80
|
+
veadk/tools/builtin_tools/vesearch.py,sha256=W8PZ-OivYT8DDLeQXsSem_iwxFUDWBNRLZZv8fEp1EE,1739
|
|
81
|
+
veadk/tools/builtin_tools/web_scraper.py,sha256=Ob9wENBUTCtATd3ASthB5ih71iSUrAwnfzhb-UYhaoE,2386
|
|
82
|
+
veadk/tools/builtin_tools/web_search.py,sha256=IzthoJLzY7u8Nb3GqQQiWBroxV4vN2fEon56KrR4OrE,5734
|
|
83
|
+
veadk/tools/sandbox/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
84
|
+
veadk/tools/sandbox/browser_sandbox.py,sha256=8pxFVAYKmdP8Sdhssq2Btqx1JjFGdGgaRSno8tbPwzg,894
|
|
85
|
+
veadk/tools/sandbox/code_sandbox.py,sha256=G9k4F3RDSstmFbsWzfSIWGU_TOPV2yFAH3-MWeGXyAo,968
|
|
86
|
+
veadk/tools/sandbox/computer_sandbox.py,sha256=DOv5RTanSWiJNhpL0htITGxL3dkiUw76UiYw0_YZ7U4,897
|
|
87
|
+
veadk/tracing/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
88
|
+
veadk/tracing/base_tracer.py,sha256=B1C7st8GjAOx0y6ijrUvp6qFXEErb46AUepsp7w6Zuw,6552
|
|
89
|
+
veadk/tracing/telemetry/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
90
|
+
veadk/tracing/telemetry/opentelemetry_tracer.py,sha256=qEn_wI-s_2wQG08sS39JlcbP7ZMGAX89r5P9Z_kVLQo,6466
|
|
91
|
+
veadk/tracing/telemetry/exporters/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
92
|
+
veadk/tracing/telemetry/exporters/apiserver_exporter.py,sha256=Xn7CJASHjWMiSJZ7J6hEmK66P6h6jVx7xVH627IVhUM,2239
|
|
93
|
+
veadk/tracing/telemetry/exporters/apmplus_exporter.py,sha256=qC49saKDKZnCRy-y11xoR8iFco3iwzB08QPYRDYABcg,3707
|
|
94
|
+
veadk/tracing/telemetry/exporters/base_exporter.py,sha256=c4Py27xPt-FhvKnOMrCj-3GBpj2cmjrm8mkOtDpvDRg,890
|
|
95
|
+
veadk/tracing/telemetry/exporters/cozeloop_exporter.py,sha256=a2oUjR01k0LkeXZ56AG7FuuCK_qnQ0Zg5VpDkm_y1NQ,2386
|
|
96
|
+
veadk/tracing/telemetry/exporters/inmemory_exporter.py,sha256=LHVt-ZJqhsRp0sddUFHc2Aq0Vl2nJHdO5xTTLQQnZM0,3288
|
|
97
|
+
veadk/tracing/telemetry/exporters/tls_exporter.py,sha256=GEHKyNDdWuPNhG7aHsIq3cTN99Fc_caMrEv-FfULb6Y,2677
|
|
98
|
+
veadk/tracing/telemetry/metrics/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
99
|
+
veadk/tracing/telemetry/metrics/opentelemetry_metrics.py,sha256=0VcEfQqPF17tgGZrUbF9JCbvzO-_o4cycid2j1DWAow,2715
|
|
100
|
+
veadk/utils/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
|
|
101
|
+
veadk/utils/logger.py,sha256=IeoLzHVOm7XaHNSSBKkzgKzqzLvt71wUN2jjRtllCfo,1601
|
|
102
|
+
veadk/utils/misc.py,sha256=RjNmhxZjKxa-EPsDvj-Q7DKbWPn3N9ribn-2pUZlWh0,1045
|
|
103
|
+
veadk/utils/patches.py,sha256=Ym3y-thX-4spUNpvMGVfQ_kyPRqJzTXgqsjznr10oE4,2931
|
|
104
|
+
veadk/utils/volcengine_sign.py,sha256=cU5CucU6MXV2FY8qLs7hWVwSO87_Opk-lgNnW9HYs_o,6498
|
|
105
|
+
veadk_python-0.1.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
106
|
+
veadk_python-0.1.0.dist-info/METADATA,sha256=9i7tzrJnCPMUO1KqpfVfPG1T6WxSMGJSt_xSkab5dOU,3901
|
|
107
|
+
veadk_python-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
108
|
+
veadk_python-0.1.0.dist-info/entry_points.txt,sha256=su1TJC5YpYPk1o4I5uKOI8pjaR0wujhnjJeqQ-yk65U,45
|
|
109
|
+
veadk_python-0.1.0.dist-info/top_level.txt,sha256=Qqi3ycJ4anKiZWBXtUBIy8zK9ZuXJsFa05oFq8O8qqY,6
|
|
110
|
+
veadk_python-0.1.0.dist-info/RECORD,,
|