变更日志 ======== 本文档记录了 pyutils 项目的所有重要变更。 格式基于 `Keep a Changelog `_, 并且本项目遵循 `语义化版本 `_。 [未发布] - TBD -------------- 新增 ~~~~ * 完整的 uv 包管理器支持 * 现代化的开发工具链(Ruff、MyPy、pre-commit) * GitHub Actions CI/CD 流水线 * 性能基准测试框架 * 完整的 Sphinx 文档系统 * Makefile 简化开发命令 * 代码质量增强建议文档 改进 ~~~~ * 更新 README.rst 包含详细的 uv 使用指南 * 优化 pyproject.toml 配置 * 增强测试覆盖率配置 * 改进类型注解支持 修复 ~~~~ * 修复异步测试支持问题 * 清理重复的依赖配置 * 修复 ``json_stringify`` 函数的格式问题,移除不必要的空格压缩 * 修复 ``url_encode`` 函数的编码行为,使其与标准 ``quote`` 函数一致 * 修复 ``is_hex`` 函数对 ``0x`` 前缀的错误处理 * 修复 ``is_empty`` 函数对 ``frozenset`` 类型的支持 * 修复 GitHub Actions 依赖更新工作流的权限问题 [1.0.0] - 2024-01-XX -------------------- 新增 ~~~~ * **array 模块**: 数组和列表操作工具 * ``chunk()``: 将数组分割成指定大小的块 * ``unique()``: 数组去重 * ``shuffle()``: 随机打乱数组 * ``diff()``: 计算数组差集 * ``flatten()``: 扁平化嵌套数组 * ``compact()``: 移除数组中的假值 * **string 模块**: 字符串处理和格式化工具 * ``camel_case()``: 转换为驼峰命名 * ``snake_case()``: 转换为下划线命名 * ``kebab_case()``: 转换为短横线命名 * ``slugify()``: 生成 URL 友好的字符串 * ``fuzzy_match()``: 模糊字符串匹配 * ``generate_uuid()``: 生成 UUID * ``truncate()``: 截断字符串 * ``pad_start()`` / ``pad_end()``: 字符串填充 * **math 模块**: 数学计算和统计函数 * ``clamp()``: 数值限制 * ``lerp()``: 线性插值 * ``normalize()``: 数值归一化 * ``deg_to_rad()`` / ``rad_to_deg()``: 角度转换 * ``is_prime()``: 质数检查 * ``gcd()`` / ``lcm()``: 最大公约数和最小公倍数 * ``factorial()``: 阶乘计算 * **object 模块**: 对象操作和反射工具 * ``deep_copy()``: 深拷贝对象 * ``merge()``: 对象合并 * ``get_nested()``: 获取嵌套属性 * ``set_nested()``: 设置嵌套属性 * ``is_dict()`` / ``is_list()`` / ``is_string()``: 类型检查 * ``pick()`` / ``omit()``: 对象属性选择和排除 * **function 模块**: 函数式编程工具 * ``compose()``: 函数组合 * ``partial()``: 偏函数应用 * ``memoize()``: 函数缓存装饰器 * ``debounce()``: 防抖装饰器 * ``throttle()``: 节流装饰器 * ``retry()``: 重试装饰器 * **async_utils 模块**: 异步编程辅助工具 * ``gather_with_concurrency()``: 限制并发数的任务执行 * ``timeout()``: 异步超时控制 * ``retry_async()``: 异步重试 * ``run_in_executor()``: 在线程池中运行同步函数 * **bytes 模块**: 字节操作工具 * ``to_hex()``: 转换为十六进制字符串 * ``from_hex()``: 从十六进制字符串转换 * ``encode_base64()`` / ``decode_base64()``: Base64 编解码 * ``compress()`` / ``decompress()``: 数据压缩 * **cache_utils 模块**: 缓存工具 * ``LRUCache``: LRU 缓存实现 * ``TTLCache``: 带过期时间的缓存 * ``cache_result()``: 结果缓存装饰器 * **data_utils 模块**: 数据处理工具 * ``flatten_dict()``: 扁平化字典 * ``unflatten_dict()``: 反扁平化字典 * ``group_by()``: 数据分组 * ``sort_by()``: 多字段排序 * ``filter_by()``: 条件过滤 * **file_utils 模块**: 文件操作工具 * ``ensure_dir()``: 确保目录存在 * ``copy_file()`` / ``move_file()``: 文件复制和移动 * ``get_file_size()``: 获取文件大小 * ``get_file_hash()``: 计算文件哈希 * ``read_json()`` / ``write_json()``: JSON 文件操作 * **network_utils 模块**: 网络工具 * ``is_valid_ip()``: IP 地址验证 * ``is_valid_url()``: URL 验证 * ``get_domain()``: 提取域名 * ``download_file()``: 文件下载 * **system_utils 模块**: 系统工具 * ``get_platform()``: 获取平台信息 * ``get_memory_usage()``: 获取内存使用情况 * ``run_command()``: 执行系统命令 * ``get_env_var()``: 获取环境变量 * **time_utils 模块**: 时间工具 * ``format_duration()``: 格式化时间间隔 * ``parse_duration()``: 解析时间间隔 * ``get_timestamp()``: 获取时间戳 * ``sleep_until()``: 睡眠到指定时间 * **validation_utils 模块**: 数据验证工具 * ``is_email()``: 邮箱验证 * ``is_phone()``: 电话号码验证 * ``is_credit_card()``: 信用卡号验证 * ``validate_schema()``: JSON Schema 验证 技术改进 ~~~~~~~~ * 完整的类型注解支持 * 高覆盖率的测试套件(90%+) * 性能优化和基准测试 * 详细的文档和示例 * 模块化设计,支持按需导入 [0.1.0] - 2023-XX-XX -------------------- 新增 ~~~~ * 项目初始化 * 基础项目结构 * 初始的工具函数集合 版本说明 -------- 版本号格式 ~~~~~~~~~~ 我们使用语义化版本号 ``MAJOR.MINOR.PATCH``: * **MAJOR**: 不兼容的 API 变更 * **MINOR**: 向后兼容的功能新增 * **PATCH**: 向后兼容的问题修复 变更类型 ~~~~~~~~ * **新增**: 新功能 * **改进**: 对现有功能的改进 * **修复**: 问题修复 * **移除**: 移除的功能 * **弃用**: 即将移除的功能 * **安全**: 安全相关的修复 迁移指南 -------- 从 0.x 到 1.0 ~~~~~~~~~~~~~~ 1.0 版本是一个重大更新,包含了许多破坏性变更: * **模块重组**: 函数按功能重新组织到不同模块 * **API 变更**: 一些函数的参数和返回值有变化 * **类型注解**: 添加了完整的类型注解 * **性能优化**: 重写了部分算法以提高性能 详细的迁移指南请参考 `迁移文档 `_。 贡献者 ------ 感谢所有为 pyutils 项目做出贡献的开发者! * 项目维护者和核心贡献者 * 社区贡献者 * 问题报告者 * 文档改进者 完整的贡献者列表请查看 `AUTHORS.rst <../AUTHORS.rst>`_。