{"skill":{"slug":"helper","displayName":"Pywayne Helper","summary":"Project configuration management helper for YAML config files. Use when projects need cross-process/cross-file parameter sharing via a centralized config fil...","description":"---\nname: pywayne-helper\ndescription: Project configuration management helper for YAML config files. Use when projects need cross-process/cross-file parameter sharing via a centralized config file. Supports automatic project root detection, nested config key management, and waiting mechanism for values set by other processes.\n---\n\n# Pywayne Helper\n\n项目配置管理辅助工具，实现跨进程、跨文件的参数共享机制。\n\n## Quick Start\n\n```python\nfrom pywayne.helper import Helper\n\n# 初始化（自动检测调用者所在目录作为项目根目录）\nhelper = Helper()\n\n# 进程 A：写入配置\nhelper.set_module_value('database', 'host', value='127.0.0.1')\n\n# 进程 B：读取配置（自动等待直到值存在）\ndb_host = helper.get_module_value('database', 'host', max_waiting_time=10)\nprint(f\"数据库主机: {db_host}\")\n```\n\n## 跨进程/跨文件参数共享\n\nHelper 通过项目根目录下的 YAML 配置文件实现参数共享：\n\n```\nproject_root/\n├── common_info.yaml          # 配置文件，自动创建\n├── module_a/              # 模块 A\n└── module_b/              # 模块 B\n```\n\n**工作原理**：\n1. 任何模块初始化 Helper 实例，自动定位到项目根目录\n2. 配置文件统一位于 `{project_root}/common_info.yaml`\n3. 各模块通过 `set_module_value` 写入配置\n4. 各模块通过 `get_module_value` 读取配置\n5. 支持等待机制，确保读取到其他进程写入的值\n\n**适用场景**：\n\n| 场景 | 说明 |\n|------|------|\n| 多进程协作 | 进程 A 写配置，进程 B 读配置 |\n| 分布式任务 | 主进程设置参数，子进程读取执行 |\n| 配置传递 | 程序启动时写入配置，后续模块读取 |\n| 动态参数 | 模块间共享动态生成的参数（如 token、临时 ID） |\n\n## Initialization\n\n```python\n# 使用调用者所在目录作为项目根目录（推荐）\nhelper = Helper('./')\n\n# 指定项目根目录\nhelper = Helper('/path/to/project')\n\n# 自定义配置文件名\nhelper = Helper('/path/to/project', config_file_name='shared_config.yaml')\n```\n\n## Methods\n\n### set_module_value\n\n设置嵌套配置键的值。\n\n```python\n# 写入数据库配置\nhelper.set_module_value('database', 'host', value='127.0.0.1')\nhelper.set_module_value('database', 'port', value=5432)\n\n# 写入 API 配置\nhelper.set_module_value('api', 'token', value='abc123')\nhelper.set_module_value('api', 'endpoint', value='https://api.example.com')\n\n# 写入共享临时参数\nhelper.set_module_value('shared', 'temp_id', value='temp_123')\nhelper.set_module_value('shared', 'status', value='running')\n```\n\n**参数说明**：\n- `*keys`: 按嵌套层级排列的键\n- `value`: 要设置的值\n\n### get_module_value\n\n获取嵌套配置键的值，支持等待机制。\n\n```python\n# 基本获取\nhost = helper.get_module_value('database', 'host')\n\n# 等待最多 10 秒，直到值存在（跨进程场景）\nhost = helper.get_module_value('database', 'host', max_waiting_time=10)\n\n# 禁用调试输出\nhost = helper.get_module_value('database', 'host', debug=False)\n\n# 未找到时返回 None\nif host is None:\n    print(\"配置未找到\")\n```\n\n**参数说明**：\n- `*keys`: 按嵌套层级排列的键\n- `max_waiting_time` (可选): 最大等待时间（秒），轮询配置文件直到值存在\n- `debug` (可选): 是否启用调试信息，默认 True\n\n**返回值**：\n- 找到值：返回配置值\n- 超时：返回 None\n\n### delete_module_value\n\n删除嵌套配置键的值。\n\n```python\n# 删除指定键\nhelper.delete_module_value('database', 'host')\n\n# 删除整个分支\nhelper.delete_module_value('database')\n\n# 清除临时参数\nhelper.delete_module_value('shared', 'temp_id')\n```\n\n**参数说明**：\n- `*keys`: 按嵌套层级排列的键\n\n### get_proj_root\n\n获取项目根目录路径。\n\n```python\nroot = helper.get_proj_root()\nprint(f\"项目根目录: {root}\")\n```\n\n### get_config_path\n\n获取配置文件路径。\n\n```python\nconfig_path = helper.get_config_path()\nprint(f\"配置文件: {config_path}\")\n```\n\n## 使用模式\n\n### 模式 1：主进程配置，子进程读取\n\n```python\n# main.py - 主进程\nfrom pywayne.helper import Helper\n\nhelper = Helper()\nhelper.set_module_value('task', 'config', value={'param1': 1, 'param2': 2})\n\n# 启动子进程\nimport subprocess\nsubprocess.run(['python', 'worker.py'])\n```\n\n```python\n# worker.py - 子进程\nfrom pywayne.helper import Helper\n\nhelper = Helper()\nconfig = helper.get_module_value('task', 'config', max_waiting_time=5)\nprint(f\"收到配置: {config}\")\n```\n\n### 模式 2：模块间共享参数\n\n```python\n# module_a.py\nfrom pywayne.helper import Helper\n\nhelper = Helper()\nhelper.set_module_value('shared', 'data_file', value='/path/to/data.csv')\n```\n\n```python\n# module_b.py\nfrom pywayne.helper import Helper\n\nhelper = Helper()\ndata_file = helper.get_module_value('shared', 'data_file', max_waiting_time=10)\nwith open(data_file, 'r') as f:\n    # 处理文件\n    pass\n```\n\n### 模式 3：动态参数传递\n\n```python\n# sender.py\nfrom pywayne.helper import Helper\n\nhelper = Helper()\ntemp_id = generate_temp_id()\nhelper.set_module_value('shared', 'temp_id', value=temp_id)\n\n# 通知接收者...\n```\n\n```python\n# receiver.py\nfrom pywayne.helper import Helper\n\nhelper = Helper()\ntemp_id = helper.get_module_value('shared', 'temp_id', max_waiting_time=60)\nif temp_id:\n    # 使用 temp_id\n    pass\n```\n\n## 配置文件结构\n\nHelper 操作的配置文件为 YAML 格式，示例结构：\n\n```yaml\ndatabase:\n  host: 127.0.0.1\n  port: 5432\napi:\n  token: abc123\n  endpoint: https://api.example.com\nshared:\n  temp_id: temp_123\n  status: running\n```\n\n## 注意事项\n\n1. **统一配置文件**: 所有模块共享同一个 `common_info.yaml`（或自定义文件名）\n2. **自动创建**: 配置文件不存在时，初始化会自动创建空文件\n3. **路径检测**: 未指定 `project_root` 时，自动根据调用者所在文件目录确定项目根目录\n4. **等待机制**: `max_waiting_time` 用于等待其他进程写入的配置值\n5. **并发安全**: YAML 写入使用 update 模式，减少并发冲突风险\n","tags":{"latest":"0.1.0"},"stats":{"comments":0,"downloads":923,"installsAllTime":35,"installsCurrent":0,"stars":0,"versions":1},"createdAt":1771215102369,"updatedAt":1778491552996},"latestVersion":{"version":"0.1.0","createdAt":1771215102369,"changelog":"pywayne-helper v0.1.0 – Initial release\n\n- Provides centralized YAML config file management for parameter sharing across processes and files.\n- Supports automatic project root detection for configuration placement.\n- Offers methods for setting, getting (with optional waiting), and deleting nested config values.\n- Includes process synchronization features: one process can wait for values set by another.\n- Configuration file and root detection are automatic, with easy customization options.","license":null},"metadata":null,"owner":{"handle":"wangyendt","userId":"s172p3g61c0j9vy0sa1bs01b7x885y52","displayName":"wangyendt","image":"https://avatars.githubusercontent.com/u/18455758?v=4"},"moderation":null}