Skip to main content

通过 scm 标签管理您的版本的祝福包

项目描述

setuptools_sky处理在 scm 元数据中管理您的 python 包版本,而不是将它们声明为版本参数或在 scm 托管文件中。

它还处理支持的 scm 的文件查找器。

Setup.py 用法

要使用 setuptools_sky 只需像这样修改项目的 setup.py 文件:

  1. 添加'setuptools_sky'setup_requires参数

  2. 添加use_scm_version参数并将其设置为True

    例如:

    from setuptools import setup
    setup(
        ...,
        use_scm_version=True,
        setup_requires=['setuptools_sky'],
        ...,
    )

    get_version()的参数(见下文)可以作为字典传递给use_scm_version。例如:

    from setuptools import setup
    setup(
        ...,
        use_scm_version = {"root": "..", "relative_to": __file__},
        setup_requires=['setuptools_sky'],
        ...,
    )
  3. 通过以下方式访问包中的版本号pkg_resources

    例如(PEP-0396):

    from pkg_resources import get_distribution, DistributionNotFound
    try:
        __version__ = get_distribution(__name__).version
    except DistributionNotFound:
        # package is not installed
        pass

程序化使用

为了从比项目根目录更深的代码中使用setuptools_sky ,您可以使用:

from setuptools_sky import get_version
version = get_version(root='..', relative_to=__file__)

有关如何在 setup.py 中使用它,请参阅上面的setup.py 用法。

狮身人面像的用法

不鼓励使用 sphinx 本身的 setuptools_sky ,而是在可编辑/实际安装后使用pkg_resources :

from pkg_resources import get_distribution
release = get_distribution('myproject').version
# for example take major/minor
version = '.'.join(release.split('.')[:2])

根本原因是,像 readthedocs 这样的服务有时会出于充分的理由更改工作目录,并且使用已安装的元数据可以防止在那里使用不必要的易失性数据。

值得注意的插件

setuptools_sky_git_archive为从属于 标记版本的 git 档案中获取版本提供了部分支持。不将其包含在 setuptools-scm 本身的唯一原因是 git/github 不支持足够的元数据用于未标记/后续提交,这会妨碍用户体验的一致性。

默认版本控制方案

在标准配置中 setuptools_sky 看看 3 件事:

  1. 最新标签(带有版本号)

  2. 到此标签的距离(例如,自最新标签以来的修订数)

  3. workdir 状态(例如,自最新标签以来未提交的更改)

并大致使用以下逻辑来呈现版本:

no distance and clean

{tag}

distance and clean

{next_version}.dev{distance}+{scm letter}{revision hash}

no distance and not clean

{tag}+dYYYMMMDD

distance and not clean

{next_version}.dev{distance}+{scm letter}{revision hash}.dYYYMMMDD

下一个版本是通过将标签的最后一个数字分量加1来计算的。

对于 git 项目,该版本依赖于git describe ,因此您会看到{revision hash}前面附加了一个g

语义版本控制 (SemVer)

由于默认行为,必须始终包含补丁版本(1.2.3中的3),否则自动猜测会增加 semver 的错误部分(例如,标签2.0导致 2.1.devX而不是2.0.1。开发者)。所以请确保相应地标记。

用于获取版本号的内置机制

  1. scm 本身 (git/hg)

  2. .hg_archival文件(水银档案)

  3. PKG-信息

配置参数

为了配置use_scm_version的工作方式,您可以提供带有选项的映射,而不是简单的布尔值。

当前支持的配置键是:

cwd 用于查找 scm 根的相对路径,默认为.

版本方案

配置本地版本号的构造方式。入口点名称或可调用对象

本地方案

配置版本的本地组件如何构造入口点名称或可调用对象

写到

声明一个文本文件或 python 文件,它被包含当前版本的文件替换。它的理想或在包中创建一个 version.py 文件

write_to_template

一个新式格式字符串,它以当前版本作为version格式化的关键字参数

相对

可以从中解析根目录的文件。通常由不在存储库根目录中的脚本或模块调用,以通过提供__file__将 setuptools_sky 定向到存储库根目录。

解析

一个将用于代替发现的 scm 来解析版本的函数,请谨慎使用,这是一个专家函数,您应该非常熟悉 setuptools_sky 内部结构才能使用它

要在其他 Python 代码中使用 setuptools_sky,您可以使用 get_version函数:

from setuptools_sky import get_version
my_version = get_version()

它可以选择接受use_scm_version参数的键作为关键字参数。

环境变量

setuptools_sky_PRETEND_VERSION

当定义并且不为空时,它用作版本号的主要来源,在这种情况下它将是一个未解析的字符串

扩展 setuptools_sky

setuptools_sky 附带了一些基于 setuptools 入口点的钩子来扩展其默认功能。

添加新的 SCM

setuptools_sky 为添加新的 SCM 提供了 2 个入口点

setuptools_sky.parse_scm

用于解析当前工作目录元数据的函数,使用 SCM 的控制目录/文件的名称作为入口点的名称。例如,对于 git 的内置入口点,入口点被命名.git和引用 'setuptools_sky.git:parse'

返回值必须是setuptools.version.ScmVersion函数创建的实例setuptools_sky.version:meta

setuptools_sky.files_command

一个字符串包含一个 shell 命令,它打印当前工作目录中的所有 SCM 托管文件,或者一个可调用的,给定路径名将返回该列表。

然后使用您的 SCM 控制目录的名称作为入口点的名称。

版本号构造

setuptools_sky.version_scheme

配置在给定实例的情况下如何构造版本号, setuptools.version.ScmVersion并应返回表示版本的字符串。

可用的实现:

猜测下一个开发

自动猜测下一个开发版本(默认)

发布后

生成发布后版本(添加postN

setuptools_sky.local_scheme

配置在给定实例的情况下如何呈现版本的本地部分, setuptools.version.ScmVersion并应返回表示本地版本的字符串。

可用的实现:

节点和日期

在 dev 版本上添加节点,在脏 workdir 上添加日期(默认)

脏标签

+dirty如果当前工作目录有更改,则添加

在 setup.py 中导入

支持setup.py将可调用对象传递给 use_scm_version 的用法。

在该可调用文件中,setuptools_sky 可用于导入。可调用对象必须返回配置。

def myversion():
    from setuptools_sky.version import dirty_tag
    def clean_scheme(version):
        return dirty_tag(version) if version.dirty else '+clean'

    return {'local_scheme': clean_scheme}

行为守则

在 setuptools_sky 项目的代码库、问题跟踪器、聊天室和邮件列表中进行交互的每个人都应遵守 PyPA 行为准则

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

setuptools_sky-0.1.7.ta​​r.gz (16.2 kB 查看哈希

已上传 source