pysvnlite
轻量、非交互的 Subversion 命令行封装和 XML 解析库,适合自动化脚本、资产历史查询和工作副本管理。
要求 Python >=3.9,并在 PATH 中提供原生 svn 客户端。库本身没有第三方运行时依赖,也不安装 svnpypi CLI。
python -m pip install pysvnlite
from pysvnlite import SVNRepo
repo = SVNRepo("https://svn.example.com/project/trunk", timeout=30)
for entry in repo.log(limit=10, verbose=True):
print(entry.revision, entry.author, entry.changed_paths)
能力与边界
info/log/list/status/blame等结构化读取,返回类型化模型。- 工作副本检出、更新、增删、属性、提交、冲突检查;URL
mkdir/delete支持提交信息。 - 历史 peg revision、二进制读取、原子文件下载。
- 可选超时,有界日志滚盘、增量 XML 与路径事件;通过
CAPABILITIES检查bounded_verbose_log_v1。 - 所有 SVN 调用添加
--non-interactive;认证、ACL、传输安全和凭据缓存由原生 SVN 管理。 - 不提供服务端、Web UI、依赖解析器或自动删除策略。
完整示例见 API 使用指南,平台限制见 Windows 路径说明。
从旧版 svnpypi 迁移
本库从 narutozb/svnpypi 的 v0.1.7(提交 ce6191be4122eb54bbfbbed16bad46413f222e62)拆出,保留 MIT 许可和作者信息。独立发行从 0.2.0 开始,from pysvnlite import SVNRepo 等现有导入保持不变。
不要对旧捆绑版本直接执行普通升级。 本机已验证:从 svnpypi 0.1.7 直接升级时,pip 先安装新依赖,再卸载旧包,会删除新库的同名文件并导致导入失败。pip check 仅检查元数据,不能证明文件完整。旧 svnpypi<=0.1.7 曾直接拥有 pysvnlite/ 文件;不要混装或在拆分后降级安装旧发行包。推荐新建虚拟环境;需要原地迁移时,先卸载旧发行包,再重新安装:
python -m pip uninstall -y svnpypi pysvnlite
python -m pip install "pysvnlite==0.2.0"
python -m pip check
仍需要包注册 CLI 时,最后安装 svnpypi>=0.2.0,由其依赖声明安装本库。维护人员应先发布本库,再发布依赖它的 svnpypi。
开发与发布
python -m pip install -e ".[dev,release]"
python -m ruff check src tests scripts
python -m mypy src scripts
python -m pytest -q
python scripts/release_pypi.py
测试仅写入临时 file:// SVN 仓库;缺少 svn 或 svnadmin 时集成测试跳过。CI 覆盖 Linux Python 3.9/3.12/3.14 与 Windows Python 3.12。Python 3.9 仅保留兼容性,生产使用仍受官方维护的运行时。
发布脚本默认不上传,检查 wheel/sdist 内容白名单、py.typed、Twine 元数据,并通过 python -I -S 从临时安装目录导入,避免本机环境掩盖漏包。AI 文件、测试、CI、发布脚本和 svnpypi 源码均不进入构建包;sdist 允许 Hatchling 为重建附带的 .gitignore。
正式上传必须具有干净工作区、完整检查和已原样推送的 annotated 标签:
git tag -a v0.2.0 -m "pysvnlite 0.2.0"
git push origin v0.2.0
python scripts/release_pypi.py --upload --repository pypi --confirm-version 0.2.0
首次发布建议先用独立的 TestPyPI 凭据验证:python scripts/release_pypi.py --upload --repository testpypi。正式 PyPI token 不能用于 TestPyPI。只在隐藏密码提示中输入 token,不写入源码、命令行或日志。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file pysvnlite-0.2.0.tar.gz.
File metadata
- Download URL: pysvnlite-0.2.0.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1dd562a30aefa8835ce868353835d2a4889e8b116e32618f0f82f5304d8ece1
|
|
| MD5 |
3db563ae7e0e298e307cdc95d248166c
|
|
| BLAKE2b-256 |
86a1f6879ed24c9b6ff4ff4534e4a6bbf6a10c0a0a8873bc4971c0bff3c7c360
|
File details
Details for the file pysvnlite-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pysvnlite-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9dbf950703c5ceabd4ff95d68ef320127c7b8b28b0aeaed23e8784492a4e384b
|
|
| MD5 |
e3d02482bdd61ed10af275f30f4f7061
|
|
| BLAKE2b-256 |
310572a802f367de8e00a3d30c778d70a7bbe21a2e8f75ef88971846182d5f77
|