Metadata-Version: 2.4
Name: yz-dubbo
Version: 0.1.4
Summary: 有赞 Dubbo SDK - 支持 Dubbo RPC 调用
Author-email: YouzanTech <tech@youzan.com>
License: MIT
Project-URL: Homepage, https://github.com/youzan/yz-dubbo
Project-URL: Documentation, https://github.com/youzan/yz-dubbo/blob/main/README.md
Project-URL: Repository, https://github.com/youzan/yz-dubbo.git
Project-URL: Issues, https://github.com/youzan/yz-dubbo/issues
Keywords: dubbo,rpc,youzan
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
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.8
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.24.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"

# YZ-Dubbo

有赞 Dubbo SDK - 基于 Tether 网关的 Dubbo RPC 调用封装

## 功能特性

- 🚀 **简单易用**: 提供简洁的函数式 API
- ⏱️ **超时控制**: 支持自定义超时时间,默认3秒

## 安装

```bash
pip install yz-dubbo
```

## 快速开始

### 基础调用

```python
from yz_dubbo import invoke

# 调用 Dubbo 服务
result = invoke(
    service_name="com.youzan.service.UserService",
    method_name="getUserInfo",
    args=[{"userId": 123}]
)

print(result)  # 直接返回响应数据
```

### 自定义 Headers

```python
result = invoke(
    service_name="com.youzan.service.OrderService",
    method_name="createOrder",
    args=[{"productId": 456, "quantity": 1}],
    headers={
        "X-Request-Id": "req-123",
        "X-Tenant-Id": "tenant-456"
    }
)
```

### 设置超时时间

```python
result = invoke(
    service_name="com.youzan.service.PaymentService",
    method_name="pay",
    args=[payment_data],
    timeout=10000  # 10秒超时
)
```

## 错误处理

### 错误码对照表

| 错误码 | 说明 | 错误信息 |
|--------|------|----------|
| `10000001` | 网络超时 | NETWORK_TIMEOUT |
| `10000002` | 网络错误 | NETWORK_ERROR |
| `10000003` | 参数不能为空 | PARAMS_EMPTY_ERROR |
| `10000004` | 服务接口错误 | SERVICE_INTERFACE_ERROR |

### 异常处理示例

```python
from yz_dubbo import invoke, YzDubboException, YzDubboErrorCode

try:
    result = invoke(
        service_name="com.youzan.service.UserService",
        method_name="getUser",
        args=[{"userId": 123}]
    )
    print(f"成功: {result}")

except YzDubboException as e:
    print(f"错误码: {e.code}")
    print(f"错误信息: {e.message}")
    print(f"上下文: {e.context}")

    # 根据错误码处理
    if e.code == YzDubboErrorCode.NETWORK_TIMEOUT.code:
        print("请求超时,请稍后重试")
    elif e.code == YzDubboErrorCode.NETWORK_ERROR.code:
        print("网络错误")
    else:
        print("其他错误")
```

## 许可证

MIT License

## 联系方式

- 项目地址: `/packages/yz_dubbo`
- 测试目录: `/tests/yz_dubbo`

---

**YZ-Dubbo - 让 Dubbo 调用更简单** 🚀
