Chronaxis用户手册English
本页目录

chronaxis._version

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""取得当前这份软件的发行版本,不查询其他安装副本或业务输入。23源码检出从自身项目的pyproject.toml读取;构建包使用构建时自动生成的版本模块。4只依赖标准库且不写文件,缺失或损坏的版本资料明确报错,不回退为另一版本。5"""67from pathlib import Path8import tomllib91011def software_version() -> str:12    """返回当前源码或安装包版本;版本资料缺失、项目不符或版本为空时抛RuntimeError。1314    参数: 无。返回: 非空版本字符串。读取最多一份本地项目文件或本包生成模块;15    不读取全局distribution元数据,不依赖调用者工作目录,不修改任何文件。16    """17    package = Path(__file__).resolve().parent18    root = package.parent.parent19    # 只有本文件确在该项目的src/chronaxis下,才把其pyproject视为源码版本来源。20    project_file = root / 'pyproject.toml'21    if package == root / 'src' / 'chronaxis' and project_file.is_file():22        try:23            with project_file.open('rb') as handle:24                project = tomllib.load(handle)['project']25            if project['name'] != 'chronaxis':26                raise ValueError('项目名称不是chronaxis')27            version = project['version']28        except (OSError, KeyError, TypeError, ValueError) as error:29            raise RuntimeError('无法从当前Chronaxis源码的pyproject.toml读取版本') from error30    else:31        # 构建器写入的模块随wheel安装;不向仓库路径或其他已安装包寻找备用版本。32        try:33            from ._build_version import VERSION34        except ImportError as error:35            raise RuntimeError('当前Chronaxis缺少对应项目版本或构建版本信息,请使用完整源码或安装包') from error36        version = VERSION37    if type(version) is not str or not version or version != version.strip():38        raise RuntimeError('当前Chronaxis版本信息必须是非空且无首尾空白的文本')39    return version40
Chronaxis 用户手册 · 离线阅读