Metadata-Version: 2.4
Name: vbp-bid-common
Version: 0.1.8
Summary: Common async Redis and MongoDB clients for VBP bid services.
Author: VBP Bid Copilot Team
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/vbp-bid-copilot/vbp-bid-common
Project-URL: Repository, https://github.com/vbp-bid-copilot/vbp-bid-common
Project-URL: Issues, https://github.com/vbp-bid-copilot/vbp-bid-common/issues
Keywords: vbp,bid,redis,mongodb,asyncio
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: motor>=3.7.1
Requires-Dist: pymongo>=4.8.0
Requires-Dist: redis>=7.4.0
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: twine>=6.0.0; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: ruff>=0.8.0; extra == "dev"
Dynamic: license-file

# vbp-bid-common

`vbp-bid-common` 是 VBP Bid Copilot 的公共基础包，当前提供异步 Redis 与 MongoDB 客户端封装，便于多个服务复用同一套缓存、队列、分布式锁和基础 CRUD 能力。

## 安装

```bash
pip install vbp-bid-common
```

本地开发时可在仓库根目录执行：

```bash
pip install -e ./vbp-bid-common[dev]
```

## 使用示例

```python
from vbp_bid_common import get_mongodb_client, get_redis_client


async def main() -> None:
    redis_client = get_redis_client()
    await redis_client.set("demo:key", "value", ex=60)
    value = await redis_client.get("demo:key")

    mongo_client = get_mongodb_client(default_collection="demo")
    inserted_id = await mongo_client.insert_one({"value": value})
    doc = await mongo_client.find_one({"_id": inserted_id})
```

也可以按模块导入：

```python
from vbp_bid_common.services.mongodb import MongoDBClient
from vbp_bid_common.services.redis import RedisClient
```

## 环境变量

Redis 客户端支持以下环境变量：

- `REDIS_HOST`，默认 `127.0.0.1`
- `REDIS_PORT`，默认 `6379`
- `REDIS_DB`，默认 `0`
- `REDIS_USERNAME`
- `REDIS_PASSWORD`
- `REDIS_DECODE_RESPONSES`，默认 `true`
- `REDIS_MAX_CONNECTIONS`，默认 `100`
- `REDIS_CONNECTION_POOL_TIMEOUT`，默认 `10`
- `REDIS_SOCKET_TIMEOUT`
- `REDIS_SOCKET_CONNECT_TIMEOUT`

MongoDB 客户端支持以下环境变量：

- `MONGODB_URI`，默认 `mongodb://127.0.0.1:27017`
- `MONGODB_DATABASE`，默认 `test-technical`
- `MONGODB_COLLECTION_NAME`
- `MONGODB_MAX_POOL_SIZE`
- `MONGODB_MIN_POOL_SIZE`
- `MONGODB_SERVER_SELECTION_TIMEOUT_MS`

## 发布到 PyPI

首次发布前需要注册并配置 PyPI API Token：

```bash
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
python -m twine upload dist/*
```

发布测试包可先使用 TestPyPI：

```bash
python -m twine upload --repository testpypi dist/*
```

每次发布前请更新 `pyproject.toml` 中的 `version`，并确认 `README.md`、`LICENSE` 与依赖声明已同步。

## 开源协议

本项目使用 Apache License 2.0。详见 `LICENSE`。
