From 5dc5621e6b254fc4305328c180a4e3c437ad4e99 Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Wed, 5 Aug 2026 18:20:16 +0800 Subject: [PATCH] =?UTF-8?q?modify:=20=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/README.md b/README.md index e69de29..b70af3b 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,116 @@ +# chongming-config + +应用配置加载器,提供类型安全的 TOML 配置解析,支持模块级缓存。 + +--- + +## 安装 + +```bash +uv pip install -e utils/config +``` + +已在项目根 `pyproject.toml` 中声明为 workspace 依赖。 + +--- + +## API + +### `get_config(config_path="config.toml") -> Config` + +加载并缓存全局配置。首次调用解析 TOML 文件,后续调用返回缓存对象。 + +```python +from chongming_config import get_config + +cfg = get_config() +print(cfg["default"]["app"]["name"]) # "chongming" +print(cfg["security"]["secret_key"]) # "your-secret-key..." +print(cfg["development"]["server"]["port"]) # 8000 +``` + +### `load_config(config_path) -> Config` + +与 `get_config` 相同,但不使用缓存——每次都重新解析文件。 + +### `get_workers_config(config_path="config/workers/config.toml") -> dict` + +加载 Worker 插件注册配置,返回原始字典。 + +--- + +## 配置结构 (TypedDict) + +### 顶层 `Config` + +| 键 | 类型 | 说明 | +| ---------------- | ----------- | --------------- | +| `default` | `Default` | 应用元信息 | +| `database` | `Database` | 数据库配置 | +| `scheduler` | `Scheduler` | 任务调度 | +| `cache` | `Cache` | 缓存配置 | +| `security` | `Security` | JWT 安全 | +| `development` | `Env` | 开发环境 | +| `production` | `Env` | 生产环境 | +| `plugins_worker` | `dict` | Worker 配置路径 | + +### `Default` — 应用元信息 + +| 字段 | 类型 | 说明 | +| ----------------- | -------------------------------------- | ---------------------------- | +| `app.name` | `str` | 应用名称 | +| `app.version` | `str` | 版本号 | +| `app.description` | `str` | 描述 | +| `app.debug` | `bool` | 调试模式 | +| `env` | `Literal["development", "production"]` | 当前环境 | +| `prefix` | `str` | API 路由前缀,如 `"/api/v1"` | +| `upload_path` | `str` | 文件上传目录 | + +### `Security` — 安全配置 + +| 字段 | 类型 | 说明 | +| ------------ | ----- | ------------------------------ | +| `secret_key` | `str` | JWT 签名密钥 | +| `algorithm` | `str` | JWT 签名算法(默认 `"HS256"`) | + +### `Server` — 服务器配置 + +| 字段 | 类型 | 说明 | +| ------------ | ------ | -------- | +| `host` | `str` | 监听地址 | +| `port` | `int` | 监听端口 | +| `reload` | `bool` | 热重载 | +| `access_log` | `bool` | 访问日志 | + +### `Database` — 数据库配置 + +| 字段 | 类型 | 说明 | +| ------------------ | ------------------------------------------ | ------------ | +| `type` | `Literal["sqlite", "mysql", "postgresql"]` | 数据库类型 | +| `url` | `str` | 连接 URL | +| `generate_schemas` | `bool` | 是否自动建表 | + +--- + +## 使用模式 + +```python +from chongming_config import get_config, get_workers_config + +# 获取全局配置 +cfg = get_config() +env = cfg["default"]["env"] +server_cfg = cfg[env]["server"] + +# 获取 Worker 注册列表 +workers = get_workers_config() +for w in workers["workers"]: + print(f"插件: {w['type']}, 副本: {w['count']}") +``` + +--- + +## 依赖 + +- `tomli` / `tomllib` — TOML 解析(Python 版本自适应) +- `typing-extensions` — TypedDict 支持