Skip to main content

检查 Python 的运行版本是否兼容和测试的库。提醒用户检查库的更新。

项目描述

支持的 Python 版本 pypi版本 最后一次提交 覆盖范围 下载

兼容性是一个简单的工具,旨在供包作者使用。它做了五件事:

  • 检查是否支持正在运行的 Python 解释器版本,即等于或高于最低版本,并且不在不兼容版本列表中。RuntimeError如果解释器版本被标记为不兼容,则引发异常。
  • 如果正在运行的解释器版本高于测试中使用的最高版本,则记录警告。
  • 记录包含包名称、版本和发布日期的信息消息。
  • 如果自发布以来已过了定义的天数,则记录一条信息消息,要求用户检查更新。(出于隐私原因,不检查新版本是否实际可用。)
  • 检查操作系统组(即 Linux、MacOS 或 Windows)是否完全支持、部分支持或标记为不兼容。部分支持记录信息消息,而不兼容会产生异常。

准备好的信息有英语和德语版本。

对于这些任务,它不需要 Python 标准库之外的任何依赖项。该代码具有类型提示(PEP 484)。

安装

sudo pip3 install compatibility

用法

重要的是,您不要compatibility在包的__init__.py文件中调用,而是在类的构造函数 ( def __init__()) 中调用。如果您开始签入__init__.py文件,那么它将在您导入包后运行。如果用户已经logging. 如果不是这种情况,用户将看到所有消息,包括DEBUG关卡上的消息。如果检查是在构造函数中完成的,这不是问题。

例如,盐渍包的构造函数的相关部分:

# [...]
from datetime import date
import logging
# [...]

import compatibility
# [...]


class Salted:
    """Main class. Creates the other Objects, starts workers,
       collects results and starts the report of results. """

    VERSION = '0.6.1'

    def __init__(self,
                 [...]) -> None:

        compatibility.Check(
            package_name='salted',
            package_version=self.VERSION,
            release_date=date(2021, 1, 17),
            python_version_support={
                'min_version': '3.8',
                'incompatible_versions': ['3.7'],
                'max_tested_version': '3.9'},
            nag_over_update={
                    'nag_days_after_release': 30,
                    'nag_in_hundred': 50},
            language_messages='en',
            system_support={
                'full': {'Linux', 'MacOS', 'Windows'}
            })

salted 包在 3.7 中存在实际问题,不得使用此版本运行。所以这些设置会抛出一个RuntimeError以防有人尝试。在该特定版本中加盐的是一个相对较新的软件包,它将收到频繁的更新。因此,在发布后一个月开始,如果用户激活了日志记录,这将让用户每两次都在寻找更新。

参数

  • package_name(必填):您的包裹的名称。
  • package_version(必需):您的包的版本号作为字符串。
  • release_date(required): 需要一个datetime对象(如date(2021,1,1)),或一个精确格式的字符串YYYY-MM-DD
  • python_version_support(可选):需要具有以下三个键的字典:
    • min_version: 带有支持的最旧版本号的字符串(如'3.6')。
    • incompatible_versionsRuntimeError:不兼容版本的列表,如果它们尝试运行您的包,则会引发异常。
    • max_tested_version:您成功测试代码的最新版本的解释器。
  • nag_over_update(可选):需要具有以下三个键的字典:
    • nag_days_after_releaseint:在提醒用户检查更新之前等待此天数 ( )。
    • nag_in_hundred: 是否对可能的更新进行唠叨是随机的,但这会以形式设置概率,即每百次启动消息被记录的次数 (int)。因此,100 意味着每次。
  • language_messages(可选):由此记录的消息的语言(en英语或de德语)。默认为英文日志消息。
  • system_support(可选):允许您说明您的代码与不同操作系统组之间的兼容性级别。这是有目的地在非常高的水平上完成的:有效的输入只有“Linux”、“MacOS”和“Windows”,而不是特定的版本和发行版。字典允许三个键,每个键都有一个集合作为值:
    • full:在生产级别测试的一组操作系统。
    • partial:应该工作的系统集,但没有像完全支持的系统那样经过严格测试。在此处找到运行的系统会记录警告。
    • incompatible:您知道它们将无法正确运行代码的一组系统。如果此集中的操作系统尝试运行代码,则会产生RuntimeError异常。

版本字符串

对于兼容性检查,版本字符串的三个元素被识别:

  • 主要版本
  • 次要版本
  • 发布级别(alpha、beta、候选或最终版本)

如果您提供所有三个元素(例如'3.10.alpha'),则只会匹配这个非常具体的版本。如果您只提供前两个(在这种情况下'3.10'),则此版本的所有发布级别都将匹配。因此,假设您的代码在 Python 3.5.beta 中存在问题,并且您将该确切的字符串列为不兼容的版本。如果您在 3.5.alpha 下运行脚本,则不会发生任何事情。如果您通过使用'3.5'运行带有 3.5.alpha(或任何其他版本的 3.5 级别)的脚本的字符串列出它,则会引发RuntimeError异常。

但是,min_versionmax_tested_version忽略发布级别部分。

避免使用不兼容的 Python 版本运行你的包

setup.py您的包文件中,您可以使用python_requires参数来告知pip解释器的不兼容版本。这应该会阻止在不兼容的系统上进行安装。但是,用户可以通过设置 flag 来规避这种情况--python-version。更有可能是系统升级,它安装了与系统包管理器不兼容的版本。

如果在初始化compatibility包时定义了不兼容的版本,则会添加另一层控制。即使您的用户最终使用了不兼容的解释器,RuntimeError一旦用户尝试运行您的包,也会触发异常。

下载文件

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

源分布

兼容性-1.0.1.tar.gz (11.2 kB 查看哈希

已上传 source

内置分布

兼容性-1.0.1-py3-none-any.whl (13.7 kB 查看哈希

已上传 py3