跳转到主要内容

检查级联构建中的标记版本和覆盖版本

项目描述

https://travis-ci.org/plone/plone.versioncheck.svg?branch=master https://coveralls.io/repos/github/plone/plone.versioncheck/badge.svg?branch=master

plone.versioncheck

功能

  1. 在遍历级联的 extends 时检查buildouts ``[versions]`` 部分

    • 命令行脚本收集继承的版本限制,记住版本限制的来源。

    • 它显示结果,以便人类可以检查限制和覆盖是否正确。

    • 输出带有颜色;这有助于识别有更新版本可用的包。

    • 按需生成JSON格式的机器可读输出。

  2. 检查Python包索引(PyPI)的新版本。

    • 检测是否存在更新的主要版本、次要版本或错误修复版本(或预发布版本)。

  3. Buildout扩展 记录当前的版本状态和 需求

    • 版本状态和需求被写入文件,

    • 文件中的版本将被命令行工具消耗,
      • 检测孤立版本限制,

      • 它显示哪个包作为依赖项拉入了另一个包。

它与语义和仅与语法正确的版本号配合工作得最好!

使用方法

使用buildout安装

添加一个部分来安装它作为脚本,并将其添加为buildodut的扩展

[buildout]
...
extensions =
    plone.versioncheck

parts =
    ...
    ploneversioncheck
    ...

...

[ploneversioncheck]
recipe = zc.recipe.egg
eggs = plone.versioncheck

...

正常运行buildout。

现在在buildout目录中生成了一个文件 .plone.versioncheck.tracked.json

此文件将由 bin/versioncheck 使用以确定最终使用了哪些包。

再次运行buildout以重新生成此文件。

命令行

usage: versioncheck [-h] [-p] [-n] [-N] [-r] [-d] [-i] [-e EXCLUDE_CFG] [-m]
                    [--no-cache] [-b] [-o [OUTPUT]] [--no-colors]
                    [--debug-limit DEBUG_LIMIT]
                    [buildout]

Fetch information about pinned versions and its overrides in simple and complex/cascaded buildouts.

positional arguments:
  buildout              path to buildout.cfg or other *.cfg file

optional arguments:
  -h, --help            show this help message and exit
  -p, --pypi            check PyPI for newer versions
  -n, --newer           display only packages with newer version than active
  -N, --newer-orphaned  display orphaned packages only when newer versions
                        available
  -r, --required-by     show information about requirements (only if tracking
                        file is available)
  -d, --show-release-dates
                        show information about release dates (only for package
                        lookup from PyPI)
  -i, --ignore-tracking
                        ignore tracking file (if present)
  -e EXCLUDE_CFG, --exclude-cfg EXCLUDE_CFG
                        exclude in listing when cfg-filename pattern matches
                        (fnmatch) the given expression
  -m, --machine         show as machine readable output (json)
  --no-cache            do not use a cache for PyPI
  -b, --browser         show as html for webbrowser
  -o [OUTPUT], --output [OUTPUT]
                        safe output to output-file
  --no-colors           do not show colors
  --debug-limit DEBUG_LIMIT
                        Limit the number of PyPI versions fetched for
                        debugging

States and color codes:
  [A]ctive (white)
  [D]evelop (green)
  [O]rphaned (magenta)
  [I]nherited (older or same versions are gray, newer are yellow)
  [U]pdate of final release on PyPI available (cyan)
  [P]rerelease update on PyPI available (blue)
  [X] unpinned (red)
  [r] Requirement (gray)
  [a] Annotation (gray)

Color of package name helps to indicate overall state of a package.

创建的文件

如果使用 --pypi 选项使用了脚本,将创建一个目录 .plone.versioncheck.cache。它包含了对PyPI或外部buildout配置文件的请求的缓存。要清除缓存,请删除目录。缓存库使用PyPI响应的过期标题,因此即使使用缓存,它也会开始获取新的记录。

如果使用了扩展,将创建一个文件 .plone.versioncheck.tracked.json。它包含上次buildout运行的信息。

输出说明

状态和颜色的图例

[D]evelopment Egg

开发Egg通常处于活动状态。描述显示位置。颜色:绿色

[A]ctive Pin

固定版本。包已使用且最近,一切似乎正常。颜色:白色

[I]nherited Pin

未使用的限制。如果比活动版本旧,限制颜色为灰色;如果比活动版本新,则为黄色。

[O]rphaned

如果跟踪,则显示在给定的配置中是否使用了该包。对此信息要小心!即在一个开发buildout文件中,使用的包与在实时或持续集成buildout中使用的包不同!颜色:洋红色

[X] Unpinnend

跟踪,但在 [versions] 部分中未找到任何限制。颜色:红色

[U]pdate final release

在PyPI上有一个更新的最终版本可用(主要版本、次要版本或错误修复)。描述显示在哪个级别。颜色:青色

[P]rerelease update

在PyPI上有一个更新的预发布版本可用(主要版本、次要版本或错误修复)。描述显示在哪个级别。只有当没有最终发布更新可用时。颜色:蓝色

[r] Required by

如果跟踪并提供了 --required-by 选项,则显示需要此包的包。对于当前活动/使用版本有效。请注意,这基于声明的需求,未涵盖缺少或隐含的需求。

[a] Annotation

可以注释选择某个版本的原因。这些信息是从一个部分中解析出来的,部分名为 [versionannotations]。在这个部分中,键是软件包的名称,值是要显示的文本注释。值可以使用缩进来跨越多行(如常规操作)。

版本顺序

版本的顺序是 buildout 解析顺序(在 extends 链/树中是如何被解析的)。之后,显示 PyPI 的发布版本(主版本、次版本、预版本,然后是预发布版本)。

例如,给定每个 my.pkg 的一个版本已被声明

  1. buildout.cfgmy.pkg=3.0.3

  1. buildout.cfg 扩展 foo.cfg,并设置 my.pkg=3.0.1

  2. buildout.cfg 扩展 bar.cfg,并设置 my.pkg=2.0

  1. foo cfg 扩展 baz.cfg,并设置 my.pkg=3.1

  1. 在 PyPI 中找到了更新的版本

  1. 主版本 my.pkg=4.0

  2. 次版本 my.pkg=3.2

  3. 主版本 预发布 my.pkg=5.1b2

输出看起来是这样的

my.pkg
    3.0.3............... A buildout.cfg
    2.0 ................ I bar.cfg
    3.0.1 .............. I foo.cfg
    3.1 ................ I baz.cfg
    4.0 ................ U Major
    3.2 ................ U Minor
    5.1b2............... P Majorpre

示例

这里没有颜色,在 buildout.coredev 上运行

$ ./bin/versioncheck -p buildout.cfg

accesscontrol
    3.0.12 .... A versions.cfg
    2.13.13 ... I http://dist.plone.org/versions/zope-2-13-23-versions.cfg
acquisition
    4.2.2 ..... A versions.cfg
    2.13.9 .... I http://dist.plone.org/versions/zope-2-13-23-versions.cfg
alabaster
    0.7.7 ..... X unpinned
archetypes.multilingual
    3.0.1 ..... A versions.cfg
archetypes.referencebrowserwidget
    2.5.6 ..... A versions.cfg
archetypes.schemaextender
    2.1.5 ..... A versions.cfg
argcomplete
    1.0.0 ..... A tests.cfg
argh
    0.26.1 .... A tests.cfg
argparse
    (unset) ... A versions.cfg
    1.1 ....... I http://dist.plone.org/versions/zopetoolkit-1-0-8-ztk-versions.cfg
    Can not check legacy version number.  U Error
autopep8
    1.2.1 ..... A tests.cfg

[... skipped a bunch ...]

coverage
    3.7.1 ..... A tests.cfg
    3.5.2 ..... I http://dist.plone.org/versions/zopetoolkit-1-0-8-ztk-versions.cfg
    4.0.3 ..... U Major
    4.1b1 ..... P Majorpre
cssmin
    0.2.0 ..... A versions.cfg
cssselect
    0.9.1 ..... A versions.cfg
datetime
    3.0.3 ..... A versions.cfg
    2.12.8 .... I http://dist.plone.org/versions/zope-2-13-23-versions.cfg
    4.0.1 ..... U Major
decorator
    4.0.6 ..... A versions.cfg

[... skipped a bunch ...]

plone.app.textfield
    1.2.6 ..... A versions.cfg
plone.app.theming
    1.2.17.dev0  D /home/workspacejensens/coredev5/src/plone.app.theming/src
    1.2.16 .... I versions.cfg
plone.app.tiles
    2.1.0 ..... A versions.cfg
    2.2.0 ..... U Minor

[... skipped a bunch ...]

源代码和贡献

https://travis-ci.org/plone/plone.versioncheck.svg?branch=master

如果您想帮助开发(改进、更新、修复错误等)plone.versioncheck,这是一个很好的想法!

请遵循贡献指南

plone.versioncheck 的维护者是 Jens Klein 和 Plone 贡献者。我们感谢任何贡献,如果需要在 PyPI 上发布版本,请联系我们其中的任何人(最好是打开一个问题)。

开发

系统中必须存在指向 Python >=2.7.x 的 pythonvirtualenvpip,并可在系统路径中找到。克隆项目。然后

$ bootstrap.sh

对于非 Unix 系统,请阅读 bootstrap.py 的内容,并手动执行适用于您操作系统的步骤。

许可证

该项目在 GPLv2 许可下发布。

变更日志

1.8.1 (2023-05-08)

错误修复

  • 在更多位置捕获空版本并忽略无效版本。当软件包被显式取消锁定时需要此操作,例如 Zope =。 [maurits]

1.8.0 (2023-04-15)

  • 忽略无效版本。当检查具有 PyPI 上无效版本的软件包时,对于 setuptools 66 及更高版本需要此操作。修复了问题 52。[maurits]

1.7.0 (2019-03-08)

  • 特性:为 cfg 文件提供排除模式匹配。[jensens]

  • 使用纯黑色作为代码风格。[jensens]

  • 在 Python 3.7 上进行测试。[jensens]

  • 修复 PyPI URL 并在出现问题时添加 URL 的输出。[jensens]

1.6.10 (2018-08-20)

  • 修复了 find_relative 中的另一个错误。[jensens]

1.6.9 (2018-08-20)

  • 修复了上次发布中引入的 find_relative 中的错误。[jensens]

1.6.8 (2018-08-14)

错误修复

  • 更好地处理以相对路径为入口的情况,例如 project/foo/dev.cfg。[jensens]

  • 如果文件不扩展任何其他文件,则返回语句只返回一个参数,而调用者期望两个参数。[gforcada]

1.6.7 (2018-03-26)

错误修复

  • 修复:不要信任 setuptools 内部结构。现在可以与新版本的 setuptools 一起使用。[jensens]

1.6.6 (2018-01-26)

  • 修复:具有相同名称的继承扩展现在会显示为相同的。现在,如果可能,显示相对于基于目录的扩展,否则显示完整路径。[jensens]

  • 修复:相对 URL 中的扩展已经损坏。[jensens]

1.6.5 (2017-07-03)

错误修复

  • 相对路径现在应该可以正常工作,已在子目录中进行了测试。[loechel]

1.6.4 (2017-05-08)

  • 修复:默认版本部分名称 versions 未被尊重。[jensens]

1.6.3 (2017-05-05)

  • 修复 #17:缺少需求。[jensens]

  • 优化:减少在获取发布日期时对PyPI的负载。[jensens]

  • 特性:将HTML输出的包和版本字段改为链接,以便您可以打开每个包的PyPI页面。[loechel]

1.6.2 (2017-04-12)

  • 修复:版本注解和buildout解析器的stdout消息中的回归。[loechel]

  • 添加更多测试。[loechel]

1.6.1 (2017-04-07)

  • 修复:#36 新的buildout解析器不与buildout.coredev兼容。[loechel]

1.6.0 (2017-04-07)

  • 修复:格式化器中空状态导致的IndexError: string index out of range错误。[thet]

  • 开发:为包添加基本测试。[loechel]

  • 修复:将parser.py修改为使用zc.buildout中的函数来获取版本和版本注解部分名称。[loechel]

  • 特性:添加从PyPI提取日期信息的功能,以分析包的年龄。[loechel]

  • 特性:添加新的CLI选项以显示输出文件和发布日期。[loechel]

1.5.1 (2017-01-23)

  • 修复版本比较。[loechel]

1.5.0 (2016-10-15)

  • 开发:使用代码分析进行质量保证(并修复pep8等的问题)[jensens]

  • 修复:清单(jinja文件缺失)。[jensens]

  • 特性:实现#25:标注使用的版本。[jensens]

1.4 (2016-09-30)

  • 特性:新选项‘-N’:隐藏无更新的孤立包,这降低了孤立包被有意使用时的噪音。[jensens]

1.3 (2016-05-19)

  • 开发:添加.editorconfig文件以遵循Plone API维护代码约定[loechel]

  • 特性:添加对Python 3的支持[loechel]

  • 修复:各种文档错误。[jean]

1.2.1 (2016-01-26)

  • 特性:缓存通过网络获取的buildout cfg文件。[jensens]

  • 特性:现在缓存来自PyPI的响应。[jensens]

1.1.2 (2016-01-21)

  • 修复:buildout extends chain的解析顺序错误。还记录了解析顺序,并在自己的buildodut中包含了一个小示例。[jensens]

  • 修复:格式化器在required by之后打印了太多的换行符。[jensens]

  • 修复:如果没有跟踪文件,则不会抱怨缺少跟踪文件。如果没有跟踪文件,则buildout根本不使用buildout扩展。[maurits]

  • 修复#13:添加缺少的zc.buildout依赖项。[maurits]

1.1.1 (2016-01-20)

  • 修复:如果没有跟踪文件,则孤儿检测失败。[jensens]

  • 修复:如果没有跟踪文件,则引发异常。[jensens]

  • 修复:未明确设置要求颜色的颜色。[jensens]

1.1 (2016-01-19)

  • 增强:显示要求[jensens]

  • 增强:机器可读输出(json)[jensens]

  • 增强:将纯处理信息输出写入sys.stderr [jensens]

  • 修复#5 - 要求setuptools>=12 [jensens]

  • 修复#7 - 未找到从“lazy”1.0到1.2的可用更新。[jensens]

  • 增强:重新考虑颜色并记录它们,修复#2和#3。[jensens]

  • 增强:显示输出并显示跟踪信息[jensens]

  • 特性:将buildout扩展添加为可选的track要求,如果它确实被使用的话[jensens]

1.0 (2016-01-13)

  • 初始工作。[jensens]

项目详情


下载文件

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

源分布

plone.versioncheck-1.8.1.tar.gz (30.5 kB 查看哈希值)

上传时间

构建分发

plone.versioncheck-1.8.1-py2.py3-none-any.whl (21.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者