主要观点:介绍了一种用于 Django 相关包的版本系统“DjangoVer”,其将包的版本号与支持的最新 Django 版本相绑定,以解决版本编号难题。同时对比了 Django 的版本方案与 SemVer,强调 Django 不遵循 SemVer 且主要版本号不表示 API 兼容性,DjangoVer 也不试图在版本号中提供 API 稳定性/兼容性信息。
关键信息:
- Django 版本方案:每约 8 个月发布一个特性版本(如 5.1),每月发布一个 bug 修复版本(如 5.1.3 等),版本号格式为
MAJOR.FEATURE.BUGFIX,特性版本号为 2 的是长期支持(LTS)版本。 - DjangoVer 定义:Django 相关包的版本号形式为
DJANGO_MAJOR.DJANGO_FEATURE.PACKAGE_VERSION,DJANGO_MAJOR和DJANGO_FEATURE表示支持的最新 Django 特性版本系列,PACKAGE_VERSION随包的发布而递增,同时需用 Python 包分类器指示完整的 Django 支持范围。 - 选择 DjangoVer 的原因:认为 SemVer 不能有效编码兼容性等复杂概念,而 DjangoVer 能在版本号中编码“是否有人维护”和“能否与 Django 安装一起使用”等信息。
- DjangoVer 在实践中的应用:作者自己的 Django 相关包已采用 DjangoVer,PyPI 上也有其他类似包,建议维护 Django 相关包的人考虑采用 DjangoVer。
重要细节:
- Django 从 2.0 开始采用当前版本方案,下一个 LTS 版本是 5.2,预计 2025 年 4 月发布,之后 8 个月是 Django 6.0。
- DjangoVer 包在添加新特性或修复 bug 时递增版本号的第三位,当支持新的 Django 版本时更新前两位。
- 示例说明新包开始支持 5.1 时版本为 5.1.0,支持 5.2 时变为 5.2.0 等,且要在包元数据中包含相应的 Django 分类器。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。