OK Kit
Project description
okit
自用 Python 工具集,作为 UV Tool 扩展分发。
规范:
- 按照类型划分工具目录,每个工具的名称是唯一标识符
快速开始
安装
uv tool install okit
使用
# 查看帮助
okit --help
# 查看具体命令帮助
okit COMMAND --help
# 打开补全(支持 bash/zsh/fish)
okit completion enable
# 关闭补全
okit completion disable
开发
搭建环境
git clone https://github.com/fjzhangZzzzzz/okit.git
cd okit
# 修改代码
# 本地构建 okit
uv build .
# 本地安装 okit
uv tool install -e . --reinstall
# 发布到 TestPyPI
uv publish --index testpypi --token YOUR_TEST_TOKEN
# 发布到 PyPI
uv publish --token YOUR_PYPI_TOKEN
# 从 TestPyPI 安装(需指定索引)
uv tool install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple okit==1.0.1b6
# 从正式 PyPI 安装
uv tool install okit
架构设计
源码目录结构
okit/
├── cli/ # 命令行入口
├── utils/ # 通用工具函数
├── fs/ # 文件系统相关工具
├── net/ # 网络相关工具
└── __init__.py
命令行入口中会自动扫描已知工具分类目录下脚本,自动导入并注册 cli 命令。
对于工具脚本,示例如下:
# okit/net/http_client.py
import click
@click.command()
def cli():
"""HTTP 客户端工具"""
click.echo("Hello from http_client!")
关于工具脚本的日志输出:
from okit.utils.log import logger, console
def some_func():
# 普通日志输出
logger.info("开始同步")
logger.error("同步失败")
# 富文本输出
console.print("[green]同步成功[/green]")
console.print("[bold red]严重错误[/bold red]")
版本号规约
版本号核心
采用语义化版本,符合 PEP 440,遵循格式 [主版本号]!.[次版本号].[修订号][扩展标识符]
- 主版本号(Major):重大变更(如 API 不兼容更新),递增时重置次版本和修订号。
- 次版本号(Minor):向后兼容的功能性更新,递增时重置修订号。
- 修订号(Micro):向后兼容的 Bug 修复或小改动。
扩展标识符(可选)
- 开发版,格式示例
1.0.0.dev1 - Alpha 预发布,格式示例
1.0.0a1,内部测试 - Beta 预发布,格式示例
1.0.0b2,公开测试 - RC 预发布,格式示例
1.0.0rc3,候选发布 - 正式版,格式示例
1.0.0,正式发布,稳定可用 - 后发布版,格式示例
1.0.0.post1,修正补丁
自动化发布流程
推荐的分支与发布流程如下:
- 开发分支:从 main 分支拉出开发分支(如 v1.1.0-dev),在该分支上进行开发和测试。
- 测试发布:在开发分支上,手动触发 workflow,每次会自动生成开发版本号(如 v1.1.0-devN,N 为 github workflow 构建号),写入
src/okit/__init__.py,并发布到 TestPyPI。此过程不会 commit 版本号变更。 - 预发布分支(可选),开发验证通过后可基于开发分支拉出预发布分支(如 v1.1.0-alpha),具体需要几轮预发布视功能复杂度和测试周期决定,该阶段的发布与测试发布一致,自动生成的版本号对应关系为:
- Alpha 预发布分支名
v1.1.0-alpha,对应预发布版本号v1.1.0aN - Beta 预发布分支名
v1.1.0-beta,对应预发布版本号v1.1.0bN
- Alpha 预发布分支名
- 功能测试:通过 pip 指定 testpypi 索引安装测试包,进行功能验证。
- 正式发布:测试通过后,将开发分支合并回 main 分支,并在 main 分支最新 commit 上打正式 tag(如 v1.1.0)。workflow 会自动检查并同步
src/okit/__init__.py版本号为 tag,若不一致则自动 commit 并 push,然后发布到 PyPI。 - 注意事项:
- 发布内容为 tag 或触发分支指向的 commit 代码。
- 开发分支发布会自动发布到 TestPyPI,正式 tag 自动发布到 PyPI。
- 请始终在 main 分支最新 commit 上打正式 tag,确保发布内容为最新。
- 不允许在 main 分支上手动触发 workflow,即使这样操作也会使 workflow 失败。
自动化发布无需手动操作,只需管理好分支与 tag,GitHub Actions 会自动完成发布。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
okit-1.1.2.tar.gz
(65.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
okit-1.1.2-py3-none-any.whl
(18.1 kB
view details)
File details
Details for the file okit-1.1.2.tar.gz.
File metadata
- Download URL: okit-1.1.2.tar.gz
- Upload date:
- Size: 65.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21c7d41b37b20c444ac83d74b67fe2c1ca8b4828f9e2eed279cf6b8a91e28428
|
|
| MD5 |
c7b7dd5c170cf98df701c2a74c689b81
|
|
| BLAKE2b-256 |
bf4f9b7ad9e99003d965ff2277218209d39b8c88a58f59d7d403d41f1d8a2729
|
File details
Details for the file okit-1.1.2-py3-none-any.whl.
File metadata
- Download URL: okit-1.1.2-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55b774aa4c3ddfc1ac6f81bd3cf5ca9fed69da95fbea8a00d71cdcffa085b586
|
|
| MD5 |
69ee69155595bd1275d3c15aca3c8ffa
|
|
| BLAKE2b-256 |
9f563fe3e731d6202abd289a48134f1f544e6b245aa9dd3da5a540504cdf113b
|