[project]
name = "heurams"
version = "0.5.1"
authors = [{ name = "Wang Zhiyu", email = "pluvium27@outlook.com" }]
description = "Heuristic Auxiliary Memory Scheduler"
readme = "README.md"
requires-python = ">=3.12"
classifiers = [
    "Programming Language :: Python :: 3",
    "Operating System :: OS Independent",
]
license = "AGPL-3.0-or-later"
license-files = ["LICENSE"]

dependencies = [ # 这些依赖只能驱动 kernel 程序库
    "click>=8.3.3",
    "tabulate>=0.10.0",
    "toml>=0.10.2",
    "transitions>=0.9.3",
]

[project.optional-dependencies]
interface = [ # 基本用户界面依赖
    "textual>=8.2.5",
]

algo-fsrs = [
    "fsrs>=6.3.1", # FSRS 算法底层依赖
]
tts-edgetts = [
    "edge-tts>=7.2.8", # 微软 TTS
]
llm = ["llms-py>=3.0.0"]
audio-playsound = ["playsound3>=3.3.1"]
dev = [ # 调试所需依赖
    "zmq>=0.0.0",        # 用于 ZMQ 远程调试服务器, 在 linux 上建议先安装 libzmq
    "pytest>=8.0.0",     # 用于普通测试
    "pytest-cov>=6.0.0",
]
all = [
    "heurams[algo-fsrs]",
    "heurams[tts-edgetts]",
    "heurams[llm]",
    "heurams[audio-playsound]",
    "heurams[dev]",
]
basic = [
    "heurams[algo-fsrs]",
    "heurams[interface]",
    "heurams[tts-edgetts]",
    "heurams[llm]",
]

[project.urls]
Homepage = "https://ams.pluv27.top"
Issues = "https://github.com/heurams/heurams/issues"

[[tool.uv.index]]
url = "https://mirrors.ustc.edu.cn/pypi/simple"
default = true

[project.scripts]
heurams = "heurams.__main__:main"

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
pythonpath = ["src"]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "integration: marks tests as integration tests",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
