Files
Hy-Memory/pyproject.toml
T
alvinfeiandClaude Opus 5.5 4e217f845e release: hy-memory 2.0.6
Published hy-memory==2.0.6 to PyPI: search rerank switch, size-gated
MMR and near-duplicate demotion, scene="all" search and list, per-scene
list/memory_stats, productivity update/delete, reconcile time order,
HTTP 409/400 for ambiguous or bad namespaces, and the stats UTC fix.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 15:55:00 +08:00

89 lines
2.0 KiB
TOML

[build-system]
requires = ["setuptools>=64", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "hy-memory"
version = "2.0.6"
description = "HY Memory - Industrial-grade dual-system cognitive memory framework"
readme = "README.md"
requires-python = ">=3.9"
license = "Apache-2.0"
authors = [
{name = "alvinfei"},
]
dependencies = [
"pydantic",
"numpy",
"openai>=1.40,<3",
"python-dotenv",
"pyyaml",
"chromadb>=1.5.9",
"kuzu",
"langdetect",
"scikit-learn",
"tiktoken",
"json-repair",
# Working 记忆(coding 链路)的事实层词面通道。rank_bm25 缺失时该通道
# 静默降级为纯稠密(lexical.py 的 except 兜住,不报错)——功能缺失而非
# 故障,线上不易察觉,所以进主依赖而不是 optional。
# jieba 只在文本含 CJK 时 lazy import,缺了退化为 bigram,同理。
"rank-bm25",
"jieba",
]
[project.optional-dependencies]
qdrant = ["qdrant-client", "fastembed"]
faiss = ["faiss-cpu"]
graph = ["neo4j"]
mysql = ["aiomysql"]
rerank = ["torch", "transformers"]
all = [
"chromadb>=1.5.9",
"qdrant-client",
"fastembed",
"faiss-cpu",
"kuzu",
"neo4j",
"aiomysql",
"torch",
"transformers",
]
dev = [
"pytest",
"pytest-asyncio",
"httpx",
"ruff",
]
[tool.setuptools.packages.find]
include = ["hy_memory*"]
exclude = ["tests*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_classes = "Test*"
python_functions = "test_*"
asyncio_mode = "auto"
addopts = "-v --tb=short -m 'not integration'"
markers = [
"slow: marks tests as slow",
"integration: marks tests as integration tests",
"asyncio: marks tests as async",
]
log_cli = true
log_cli_level = "INFO"
log_cli_format = "%(asctime)s [%(levelname)s] %(name)s: %(message)s"
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::PendingDeprecationWarning",
]
[tool.ruff]
target-version = "py38"
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]