smartutils-py


Namesmartutils-py JSON
Version 0.0.4 PyPI version JSON
download
home_pagehttps://github.com/wuruimiao/smartutils
Summary一个面向中大型项目的Python基础工具库,涵盖配置管理、日志、上下文、ID生成、数据处理、设计模式、定时、异常处理等基础功能。
upload_time2025-07-17 05:39:13
maintainerNone
docs_urlNone
authorwuruimiao
requires_python<4.0,>=3.10
licenseMIT
keywords utils python 基础工具 日志 配置 id 设计模式 定时
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # smartutils

`smartutils` 是一个面向 Python 的通用工具库,集成了配置管理、上下文、ID生成、数据处理、设计模式、文件操作、日志、定时器、异常处理等常用功能,适用于中大型项目的基础设施搭建和快速开发。

## 主要功能模块

- **配置管理**:支持 YAML 配置加载、工厂模式、配置键管理。
- **上下文管理**:基于 contextvars,支持多种上下文变量注册与管理。
- **ID 生成**:支持多种分布式唯一 ID 生成方案。
- **数据处理**:包括类型校验、哈希环、URL、CSV、中文数字等工具。
- **设计模式**:内置单例、工厂、弃用等常用设计模式实现。
- **文件操作**:文件读写、压缩、路径、锁、类型判断等。
- **日志系统**:基于 loguru,支持多级别日志与自定义扩展。
- **定时与计时**:Timer 类和 timeit 装饰器,支持同步/异步计时。
- **异常处理**:业务异常、系统异常、异常映射与工厂。
- **系统工具**:进程管理、平台信息、cgroup 资源管理等。
- **应用层支持**:插件、适配器、请求上下文、FastAPI 响应模型等。

## 安装依赖

项目使用 [Poetry](https://python-poetry.org/) 管理依赖,核心依赖如下:

- Python >= 3.8
- PyYAML
- loguru
- contextvars
- python-dotenv
- orjson

可选依赖(数据库、缓存、Web 框架等)详见 `pyproject.toml`。

安装命令:

```bash
poetry install
```

## 快速开始

```python
from smartutils.init import init

# 初始化 smartutils,加载配置
await init("config/config.yaml")

# 使用时间工具
from smartutils import time
now = time.get_now_str()

# 使用定时器
from smartutils import timer

@timer.timeit("任务耗时:")
def my_task():
    # ... 业务逻辑 ...
    pass

my_task()
```

## 测试

项目内置丰富的单元测试,运行如下:

```bash
pytest -s --cov=smartutils --cov-report=html tests tests_real
```

## 贡献

欢迎提交 issue 和 PR,完善文档和功能!

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/wuruimiao/smartutils",
    "name": "smartutils-py",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "utils, python, \u57fa\u7840\u5de5\u5177, \u65e5\u5fd7, \u914d\u7f6e, ID, \u8bbe\u8ba1\u6a21\u5f0f, \u5b9a\u65f6",
    "author": "wuruimiao",
    "author_email": "dev.wuruimiao@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/9f/6d/51f4148d7dfb52ab8b762461464c1a0b7b971d75dfe9b6d8e2ce78cd599b/smartutils_py-0.0.4.tar.gz",
    "platform": null,
    "description": "# smartutils\n\n`smartutils` \u662f\u4e00\u4e2a\u9762\u5411 Python \u7684\u901a\u7528\u5de5\u5177\u5e93\uff0c\u96c6\u6210\u4e86\u914d\u7f6e\u7ba1\u7406\u3001\u4e0a\u4e0b\u6587\u3001ID\u751f\u6210\u3001\u6570\u636e\u5904\u7406\u3001\u8bbe\u8ba1\u6a21\u5f0f\u3001\u6587\u4ef6\u64cd\u4f5c\u3001\u65e5\u5fd7\u3001\u5b9a\u65f6\u5668\u3001\u5f02\u5e38\u5904\u7406\u7b49\u5e38\u7528\u529f\u80fd\uff0c\u9002\u7528\u4e8e\u4e2d\u5927\u578b\u9879\u76ee\u7684\u57fa\u7840\u8bbe\u65bd\u642d\u5efa\u548c\u5feb\u901f\u5f00\u53d1\u3002\n\n## \u4e3b\u8981\u529f\u80fd\u6a21\u5757\n\n- **\u914d\u7f6e\u7ba1\u7406**\uff1a\u652f\u6301 YAML \u914d\u7f6e\u52a0\u8f7d\u3001\u5de5\u5382\u6a21\u5f0f\u3001\u914d\u7f6e\u952e\u7ba1\u7406\u3002\n- **\u4e0a\u4e0b\u6587\u7ba1\u7406**\uff1a\u57fa\u4e8e contextvars\uff0c\u652f\u6301\u591a\u79cd\u4e0a\u4e0b\u6587\u53d8\u91cf\u6ce8\u518c\u4e0e\u7ba1\u7406\u3002\n- **ID \u751f\u6210**\uff1a\u652f\u6301\u591a\u79cd\u5206\u5e03\u5f0f\u552f\u4e00 ID \u751f\u6210\u65b9\u6848\u3002\n- **\u6570\u636e\u5904\u7406**\uff1a\u5305\u62ec\u7c7b\u578b\u6821\u9a8c\u3001\u54c8\u5e0c\u73af\u3001URL\u3001CSV\u3001\u4e2d\u6587\u6570\u5b57\u7b49\u5de5\u5177\u3002\n- **\u8bbe\u8ba1\u6a21\u5f0f**\uff1a\u5185\u7f6e\u5355\u4f8b\u3001\u5de5\u5382\u3001\u5f03\u7528\u7b49\u5e38\u7528\u8bbe\u8ba1\u6a21\u5f0f\u5b9e\u73b0\u3002\n- **\u6587\u4ef6\u64cd\u4f5c**\uff1a\u6587\u4ef6\u8bfb\u5199\u3001\u538b\u7f29\u3001\u8def\u5f84\u3001\u9501\u3001\u7c7b\u578b\u5224\u65ad\u7b49\u3002\n- **\u65e5\u5fd7\u7cfb\u7edf**\uff1a\u57fa\u4e8e loguru\uff0c\u652f\u6301\u591a\u7ea7\u522b\u65e5\u5fd7\u4e0e\u81ea\u5b9a\u4e49\u6269\u5c55\u3002\n- **\u5b9a\u65f6\u4e0e\u8ba1\u65f6**\uff1aTimer \u7c7b\u548c timeit \u88c5\u9970\u5668\uff0c\u652f\u6301\u540c\u6b65/\u5f02\u6b65\u8ba1\u65f6\u3002\n- **\u5f02\u5e38\u5904\u7406**\uff1a\u4e1a\u52a1\u5f02\u5e38\u3001\u7cfb\u7edf\u5f02\u5e38\u3001\u5f02\u5e38\u6620\u5c04\u4e0e\u5de5\u5382\u3002\n- **\u7cfb\u7edf\u5de5\u5177**\uff1a\u8fdb\u7a0b\u7ba1\u7406\u3001\u5e73\u53f0\u4fe1\u606f\u3001cgroup \u8d44\u6e90\u7ba1\u7406\u7b49\u3002\n- **\u5e94\u7528\u5c42\u652f\u6301**\uff1a\u63d2\u4ef6\u3001\u9002\u914d\u5668\u3001\u8bf7\u6c42\u4e0a\u4e0b\u6587\u3001FastAPI \u54cd\u5e94\u6a21\u578b\u7b49\u3002\n\n## \u5b89\u88c5\u4f9d\u8d56\n\n\u9879\u76ee\u4f7f\u7528 [Poetry](https://python-poetry.org/) \u7ba1\u7406\u4f9d\u8d56\uff0c\u6838\u5fc3\u4f9d\u8d56\u5982\u4e0b\uff1a\n\n- Python >= 3.8\n- PyYAML\n- loguru\n- contextvars\n- python-dotenv\n- orjson\n\n\u53ef\u9009\u4f9d\u8d56\uff08\u6570\u636e\u5e93\u3001\u7f13\u5b58\u3001Web \u6846\u67b6\u7b49\uff09\u8be6\u89c1 `pyproject.toml`\u3002\n\n\u5b89\u88c5\u547d\u4ee4\uff1a\n\n```bash\npoetry install\n```\n\n## \u5feb\u901f\u5f00\u59cb\n\n```python\nfrom smartutils.init import init\n\n# \u521d\u59cb\u5316 smartutils\uff0c\u52a0\u8f7d\u914d\u7f6e\nawait init(\"config/config.yaml\")\n\n# \u4f7f\u7528\u65f6\u95f4\u5de5\u5177\nfrom smartutils import time\nnow = time.get_now_str()\n\n# \u4f7f\u7528\u5b9a\u65f6\u5668\nfrom smartutils import timer\n\n@timer.timeit(\"\u4efb\u52a1\u8017\u65f6\uff1a\")\ndef my_task():\n    # ... \u4e1a\u52a1\u903b\u8f91 ...\n    pass\n\nmy_task()\n```\n\n## \u6d4b\u8bd5\n\n\u9879\u76ee\u5185\u7f6e\u4e30\u5bcc\u7684\u5355\u5143\u6d4b\u8bd5\uff0c\u8fd0\u884c\u5982\u4e0b\uff1a\n\n```bash\npytest -s --cov=smartutils --cov-report=html tests tests_real\n```\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4 issue \u548c PR\uff0c\u5b8c\u5584\u6587\u6863\u548c\u529f\u80fd\uff01\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u4e00\u4e2a\u9762\u5411\u4e2d\u5927\u578b\u9879\u76ee\u7684Python\u57fa\u7840\u5de5\u5177\u5e93\uff0c\u6db5\u76d6\u914d\u7f6e\u7ba1\u7406\u3001\u65e5\u5fd7\u3001\u4e0a\u4e0b\u6587\u3001ID\u751f\u6210\u3001\u6570\u636e\u5904\u7406\u3001\u8bbe\u8ba1\u6a21\u5f0f\u3001\u5b9a\u65f6\u3001\u5f02\u5e38\u5904\u7406\u7b49\u57fa\u7840\u529f\u80fd\u3002",
    "version": "0.0.4",
    "project_urls": {
        "Homepage": "https://github.com/wuruimiao/smartutils",
        "Repository": "https://github.com/wuruimiao/smartutils"
    },
    "split_keywords": [
        "utils",
        " python",
        " \u57fa\u7840\u5de5\u5177",
        " \u65e5\u5fd7",
        " \u914d\u7f6e",
        " id",
        " \u8bbe\u8ba1\u6a21\u5f0f",
        " \u5b9a\u65f6"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c0a682557a7ab0b201debf1ac2a6d12b048414afdb0e1ed94b87af33d0be309",
                "md5": "c4dc6aaa04c64b1504937021cb321ede",
                "sha256": "6cb46eed6c3568b7530309a2e4c4d877c9a59af6e43ae3a90db5f72d80e5c1e4"
            },
            "downloads": -1,
            "filename": "smartutils_py-0.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c4dc6aaa04c64b1504937021cb321ede",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 117734,
            "upload_time": "2025-07-17T05:39:11",
            "upload_time_iso_8601": "2025-07-17T05:39:11.290425Z",
            "url": "https://files.pythonhosted.org/packages/6c/0a/682557a7ab0b201debf1ac2a6d12b048414afdb0e1ed94b87af33d0be309/smartutils_py-0.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f6d51f4148d7dfb52ab8b762461464c1a0b7b971d75dfe9b6d8e2ce78cd599b",
                "md5": "e2e1783808b1378a537199b7402da633",
                "sha256": "e97d566a999a43fe9ef3c869051b77be0d6d82bbb6e511a65cf6cd0d7cdd9553"
            },
            "downloads": -1,
            "filename": "smartutils_py-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "e2e1783808b1378a537199b7402da633",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 68045,
            "upload_time": "2025-07-17T05:39:13",
            "upload_time_iso_8601": "2025-07-17T05:39:13.176217Z",
            "url": "https://files.pythonhosted.org/packages/9f/6d/51f4148d7dfb52ab8b762461464c1a0b7b971d75dfe9b6d8e2ce78cd599b/smartutils_py-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-17 05:39:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wuruimiao",
    "github_project": "smartutils",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "smartutils-py"
}
        
Elapsed time: 2.16387s