Metadata-Version: 2.4
Name: yayo-pypkg
Version: 0.0.7
Summary: yayo 工具包
Author-email: yanyue <1874524491@qq.com>
License: MIT
Keywords: tools,utility,yayo
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.7
Requires-Dist: requests>=2.28
Requires-Dist: snowflake-id>=1.0.2
Provides-Extra: all
Requires-Dist: apscheduler>=3.10; extra == 'all'
Requires-Dist: fastapi>=0.100; extra == 'all'
Requires-Dist: langchain-deepseek>=1.0; extra == 'all'
Requires-Dist: langchain-openai>=1.0; extra == 'all'
Requires-Dist: langchain>=1.0; extra == 'all'
Requires-Dist: pydantic>=2.0; extra == 'all'
Requires-Dist: pymysql>=1.1; extra == 'all'
Requires-Dist: sqlalchemy>=2.0; extra == 'all'
Requires-Dist: sqlmodel>=0.0.14; extra == 'all'
Provides-Extra: api
Requires-Dist: fastapi>=0.100; extra == 'api'
Requires-Dist: pydantic>=2.0; extra == 'api'
Requires-Dist: pymysql>=1.1; extra == 'api'
Requires-Dist: sqlalchemy>=2.0; extra == 'api'
Requires-Dist: sqlmodel>=0.0.14; extra == 'api'
Provides-Extra: core
Requires-Dist: apscheduler>=3.10; extra == 'core'
Provides-Extra: llm
Requires-Dist: langchain-deepseek>=1.0; extra == 'llm'
Requires-Dist: langchain-openai>=1.0; extra == 'llm'
Requires-Dist: langchain>=1.0; extra == 'llm'
Requires-Dist: pydantic>=2.0; extra == 'llm'
Provides-Extra: pydantic
Requires-Dist: pydantic>=2.0; extra == 'pydantic'
Description-Content-Type: text/markdown

# yayo-pypkg

yayo 工具包 —— 提供常用的 Python 工具函数。

## Python 版本支持

| 范围 | 说明 |
|---|---|
| **基础功能** (`log` / `config` / `utils`) | ✅ **Python >= 3.7**(零三方依赖:只有 `requests` + `snowflake-id`) |
| 进阶功能(`pydantic` schemas) | 需要 Python >= 3.8 |
| `core` extras(调度器) | 需要 Python >= 3.7 |
| `llm` extras(LangChain) | 需要 Python >= 3.10 |
| `api` extras(FastAPI + DB) | 需要 Python >= 3.8 |
| `all` extras(全包) | 需要 Python >= 3.10 |

> 全部源码已用 `from __future__ import annotations`,PEP 604 (`str \| None`) / 内建泛型 (`list[str]`) 语法都已惰性化,旧版 Python 也能跑。

## 安装

```bash
# 基础(只装 log / config / utils,推荐 Python 3.7+ 项目用)
pip install yayo-pypkg

# + pydantic schemas(给 json_utils / schemas 用)
pip install yayo-pypkg[pydantic]

# + 定时任务调度器
pip install yayo-pypkg[core]

# + LLM / DeepSeek / OpenAI
pip install yayo-pypkg[llm]

# + FastAPI + SQLAlchemy + MySQL
pip install yayo-pypkg[api]

# 全包
pip install yayo-pypkg[all]
```

> uv 用户:把 `pip install` 换成 `uv add` 即可,语义完全一样。

## 快速上手

支持两种导入方式(完全等价,任选其一):

```python
# 方式 1:完整包名
from yayo_pypkg import hello, config, get_logger

# 方式 2:短别名
from ypk import hello, config, get_logger

print(hello())         # -> hello from yayo_pypkg
print(config.DB_HOST)  # -> 从 .env 自动读取(支持类型自动转换)
```

## 日志(`get_logger`)

一行接入,**按天切割 + 保留 7 天 + 控制台/文件双输出**:

```python
# log.py
from yayo_pypkg import get_logger
logger = get_logger()     # 自动用入口脚本名,如 main.py → ./logs/main.log
logger.info("hello")
logger.error("oops")
```

- 默认自动在 CWD 下创建 `./logs/<name>.log`
- 同名 logger 幂等,多次 `get_logger()` 不会重复挂 handler
- 业务方只需 `from .log import logger` 即可

## 配置(`config`)

读取项目根目录的 `.env`,支持 `str / int / float / bool` 自动类型推断:

```bash
# .env
DB_HOST=localhost
DB_PORT=3306
DEBUG=true
APP_NAME="my service"
```

```python
from yayo_pypkg import config

print(config.DB_HOST)    # -> 'localhost'  (str)
print(config.DB_PORT)    # -> 3306         (int,自动转换)
print(config.DEBUG)      # -> True         (bool,自动转换)
print(config.APP_NAME)   # -> 'my service' (引号自动剥离)
```

- 环境变量优先级高于 `.env` 文件
- 访问不存在的属性会抛 `AttributeError`,IDE 友好

## 模块概览

| 模块 | 说明 |
|---|---|
| `yayo_pypkg.core.logger` | 日志配置(get_logger / setup_logger) |
| `yayo_pypkg.core.config` | .env 加载 + 类型推断 |
| `yayo_pypkg.cron.scheduler` | 定时任务调度器(`[core]` extras) |
| `yayo_pypkg.path_utils` | 路径处理(项目根目录 / 目录创建) |
| `yayo_pypkg.datetime_utils` | 日期时间工具 |
| `yayo_pypkg.str_utils` | 字符串工具 |
| `yayo_pypkg.file_utils` | 文件读写工具 |
| `yayo_pypkg.list_utils` | 列表/集合工具 |
| `yayo_pypkg.json_utils` | JSON 工具(pydantic 懒加载,`[pydantic]` extras) |
| `yayo_pypkg.http_utils` | HTTP 客户端封装 |
| `yayo_pypkg.snowflake_utils` | 雪花 ID 生成器 |
| `yayo_pypkg.exceptions` | 自定义异常层级 |
| `yayo_pypkg.llm` | LLM / DeepSeek 流式服务(`[llm]` extras) |
| `yayo_pypkg.middleware` | FastAPI 中间件(`[api]` extras) |
| `yayo_pypkg.schemas` | Pydantic Schema 基类(`[pydantic]` extras) |
| `yayo_pypkg.db` | MySQL 连接池(`[api]` extras) |
| `yayo_pypkg.ocr` | MinerU OCR 客户端 |

## License

MIT
