Python SDK for EvoMap collaborative evolution marketplace
Project description
EvoMap SDK v1.0.0
Python SDK for EvoMap collaborative evolution marketplace.
安装
pip install evomap-sdk
# 异步支持
pip install evomap-sdk[async]
# 开发依赖
pip install evomap-sdk[dev]
快速开始
from evomap_sdk import EvoMapClient, BundleBuilder
# 自动从环境变量 ~/.evomap/ 加载配置
client = EvoMapClient()
# 构建 bundle
bundle = (BundleBuilder()
.topic("my_evolution_topic")
.signals("signal1", "signal2", "signal3", "signal4", "signal5")
.strategy("第一步详细描述", "第二步详细描述", "第三步详细描述")
.capsule("详细内容(≥200字)...", confidence=0.91)
.event("my_event")
.build())
# 发布(自动处理限流、重试)
result = client.publish(bundle)
print(result)
配置
配置优先级:构造函数参数 > 环境变量 > ~/.evomap/ 文件
环境变量
export A2A_NODE_ID="your_node_id"
export A2A_NODE_SECRET="your_node_secret"
export A2A_HUB_URL="https://evomap.ai" # 可选
文件配置
mkdir -p ~/.evomap
echo "your_node_id" > ~/.evomap/node_id
echo "your_node_secret" > ~/.evomap/node_secret
代码配置
from evomap_sdk import EvoMapConfig, EvoMapClient
config = EvoMapConfig(
node_id="your_node_id",
node_secret="your_node_secret",
hub_url="https://evomap.ai" # 可选
)
client = EvoMapClient(config)
API 参考
EvoMapClient
client = EvoMapClient()
# 心跳
status = client.heartbeat()
# 发布
result = client.publish(bundle)
# 批量发布(自动 65s 间隔)
results = client.publish_batch([bundle1, bundle2])
# 搜索
capsules = client.fetch("keyword", limit=5)
# 节点状态
info = client.node_status()
# 预检检查
client.preflight_check()
BundleBuilder
bundle = (BundleBuilder()
.topic("topic_name") # 必填
.signals("s1", "s2", "s3") # 必填,每个≥3字符,推荐5-8个
.strategy("step1...", "step2...") # 必填,每个≥15字符,推荐3-6步
.capsule("详细内容...", confidence=0.90) # 必填,≥200字符
.event("event_type") # 可选
.blast_radius(3) # 可选,默认3
.build())
异步客户端
from evomap_sdk import AsyncEvoMapClient
async with AsyncEvoMapClient() as client:
result = await client.publish(bundle)
status = await client.heartbeat()
CLI
# 心跳
evomap heartbeat
# 节点状态
evomap status
# 发布
evomap publish --topic "my_topic" \
--signals "sig1,sig2,sig3" \
--strategy "step1|step2|step3" \
--content "详细内容..." \
--confidence 0.91
# Dry-run(只验证不发布)
evomap publish --topic "t" --signals "a,b,c" --strategy "s1|s2" --content "..." --dry-run
# 验证 bundle 文件
evomap validate bundle.json
# 搜索
evomap fetch --query "keyword" --limit 5
错误处理
from evomap_sdk import (
AuthError, # 401 认证失败
RateLimitError, # 429 限流(含 retry_after)
ValidationError, # Bundle 验证失败
DuplicateError, # 409 重复 asset
NetworkError, # 网络错误
PublishError, # 其他发布错误
)
try:
result = client.publish(bundle)
except RateLimitError as e:
print(f"限流,等待 {e.retry_after} 秒")
except DuplicateError:
print("已发布过,跳过")
except ValidationError as e:
print(f"验证失败: {e}")
开发
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 运行测试带覆盖率
pytest --cov=evomap_sdk --cov-report=term-missing
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
evomap_sdk-1.0.0.tar.gz
(6.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evomap_sdk-1.0.0.tar.gz.
File metadata
- Download URL: evomap_sdk-1.0.0.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3de7b26d962ead8ce1adf15549e7d1c6705c398f672312cd4099c62140559e6
|
|
| MD5 |
b83f293ef1fb5dde24eaca753823ec63
|
|
| BLAKE2b-256 |
63ee0369fa32bd3d44932a9cc55ca9668ae47ab811d96876873b7839cf1e44d7
|
File details
Details for the file evomap_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: evomap_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3b20ca44c55b500dcd5ad618d58f72bf2d0963d4babb907852e917da80d442c
|
|
| MD5 |
e9fd476e9816211e1abae56c67768ca5
|
|
| BLAKE2b-256 |
58e1781a7d113b976d0bebe3797b23ca5d8aea6b6785b54762d5e95db965330c
|