Metadata-Version: 2.5
Name: pystonic
Version: 2.0.4
Summary: Python 应用基石
Author-email: BytemanD <byteman.e@outlook.com>
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: distro>=1.9.0
Requires-Dist: httpx>=0.28.1
Requires-Dist: humanize>=4.15.0
Requires-Dist: loguru>=0.7.3
Requires-Dist: pluggy>=1.5.0
Requires-Dist: pydantic-settings[toml]>=2.9.1
Requires-Dist: pymysql>=1.2.0
Requires-Dist: python-dateutil>=2.9.0.post0
Requires-Dist: retry>=0.9.2
Requires-Dist: setproctitle>=1.3.7
Requires-Dist: termcolor>=3.3.0
Requires-Dist: toml>=0.10.2
Provides-Extra: agent
Requires-Dist: langchain-chroma>=1.1.0; extra == 'agent'
Requires-Dist: langchain-community>=0.4.2; extra == 'agent'
Requires-Dist: langchain-mcp-adapters>=0.3.2; extra == 'agent'
Requires-Dist: langchain-openai>=1.7.3; extra == 'agent'
Requires-Dist: langchain>=1.4.7; extra == 'agent'
Requires-Dist: langgraph-checkpoint-mysql[asyncmy]>=3.0.0; extra == 'agent'
Requires-Dist: langgraph-checkpoint-sqlite>=3.1.2; extra == 'agent'
Provides-Extra: apscheduler
Requires-Dist: apscheduler>=3.11.3; extra == 'apscheduler'
Provides-Extra: asgi
Requires-Dist: fastapi>=0.162.0; extra == 'asgi'
Requires-Dist: uvicorn>=0.52.1; extra == 'asgi'
Provides-Extra: chroma
Requires-Dist: langchain-chroma>=1.1.0; extra == 'chroma'
Requires-Dist: langchain-core>=1.7.0; extra == 'chroma'
Requires-Dist: langchain-text-splitters>=1.1.3; extra == 'chroma'
Provides-Extra: dev
Requires-Dist: bandit>=1.9.4; extra == 'dev'
Requires-Dist: pytest-cov>=7.1.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.15.1; extra == 'dev'
Requires-Dist: pytest>=9.0.2; extra == 'dev'
Requires-Dist: ruff>=0.17.2; extra == 'dev'
Provides-Extra: infra
Requires-Dist: boto3>=1.43.117; extra == 'infra'
Requires-Dist: docker>=7.2.0; extra == 'infra'
Requires-Dist: gitpython>=3.1.46; extra == 'infra'
Requires-Dist: portalocker>=4.4.1; extra == 'infra'
Requires-Dist: psutil>=7.2.2; extra == 'infra'
Requires-Dist: redis>=8.1.0; extra == 'infra'
Provides-Extra: mcp
Requires-Dist: fastmcp==3.4.2; extra == 'mcp'
Requires-Dist: nacos-maintainer-sdk-python==0.1.2; extra == 'mcp'
Requires-Dist: nacos-sdk-python==2.0.9; extra == 'mcp'
Provides-Extra: milvus
Requires-Dist: chroma>=0.2.0; extra == 'milvus'
Requires-Dist: pymilvus[model]>=3.0.2; extra == 'milvus'
Provides-Extra: orm
Requires-Dist: sqlmodel>=0.0.38; extra == 'orm'
Provides-Extra: pretty
Requires-Dist: prettytable>=3.17.0; extra == 'pretty'
Requires-Dist: rich>=14.3.3; extra == 'pretty'
Description-Content-Type: text/markdown

# pystonic

Python 应用基石

## 安装

```bash
pip install pystonic
```

## 功能特性

### 日志系统

基于 [loguru](https://loguru.readthedocs.io/) 的日志配置，支持：
- 自定义日志格式
- 文件/控制台输出
- 上下文变量

```python
from pystonic.log import setup_logger, LogConfig

config = LogConfig(level="INFO")
setup_logger(config)
```

### 配置管理

基于 [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) 的配置管理，支持：
- `.env` 文件加载
- 环境变量映射
- 嵌套配置

```python
from pystonic.conf import BaseAppConfig

class AppConfig(BaseAppConfig):
    app_name: str = "my-app"

config = AppConfig.setup()
```

### HTTP 客户端

基于 [httpx](https://www.python-httpx.org/) 的 HTTP 客户端封装：

```python
from pystonic.utils.httpclient import default_client

client = default_client(base_url="https://api.example.com")
response = client.get("/users")
```

### 核心模块

| 模块 | 说明 |
|------|------|
| `fileutil` | 文件操作工具 |
| `strutil` | 字符串工具（IP 验证、布尔转换） |
| `input` | 用户交互输入 |
| `system` | 系统信息（CPU、磁盘、网络等） |
| `textutil` | 文本处理工具 |
| `funcutil` | 函数工具 |
| `pkg` | 包管理工具 |
| `code` | 代码质量检查（格式化、测试） |


## 开发

```bash
# 安装依赖
uv sync --all-extras

# 运行测试
pytest

# 代码检查
ruff check .
```

### 代码质量工具

使用内置的代码质量检查工具：

```python
from pystonic.tools.code import check_code

# 运行格式化和 lint 检查
check_code()

# 运行测试
check_code(test=True)

# 运行测试并查看覆盖率
check_code(test=True, cover=True)
```

或者使用命令行：

```bash
python -m pystonic.cmd.pystonic code check
python -m pystonic.cmd.pystonic code check --test
python -m pystonic.cmd.pystonic code check --test --cover
```

## 发布

```bash
uv build --clear
uv publish -v --index testpypi -t <your token>
```


## 参考

### uv

```bash
# windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```

[UV 安装](https://uv.doczh.com/getting-started/installation/#__tabbed_1_1)
