跳转到主要内容

Python包查找库

项目描述

Shadwell - 一个Python包查找器

那不是漆黑暴风雨的夜晚。
本应是那样,但那只是你的天气。

-- "Good Omens",作者:特里·普拉切特和尼尔·盖曼

Shadwell允许您从一组“来源”(通常是包索引或本地目录)中查找Python包。

查找器

为了使用该库,您需要创建一个Finder对象,然后使用它来获取需求的候选者,如下所示

sources = [
    # A list of package sources, we'll come back to this
]
finder = Finder(sources)
results = finder.find(requirement)

结果按“最佳优先”顺序返回,因此只需要最佳匹配的调用者可以取回第一个结果并忽略其余部分。

在创建查找器时,您可以提供以下任一参数,以配置其行为

  • compatibility_tags:这是一组二进制兼容性标签,用于确定一个轮是否与目标平台兼容。它应该是一个packaging.tags.Tag对象的列表。通常情况下,这一项会被省略,在这种情况下,默认使用packaging.tags.sys_tags(),这是当前Python解释器支持的集合。
  • allow_prerelease:如果这是True,查找器将返回预发布版本。否则,它将忽略预发布版本(这是默认行为)。
  • python_version:表示目标Python发布的packaging.version.Version对象。它用于根据其Requires-Python元数据过滤候选者。通常,默认情况下使用当前解释器。
  • wheel_policy:这是一个函数,用于确定对于包,我们应该如何在轮和源分发之间进行选择。使用包名调用,它应该返回以下WheelPolicy值之一:ALLOW(可以使用轮)、REQUIRE(仅允许轮)、PROHIBIT(不能使用轮,仅允许sdist)或PREFER(在优先选择较旧的轮版本而不是较新的仅源版本的情况下选择)。
  • allow_yanked:此选项仅影响所有选定的候选者都被撤回的情况。如果有任何未撤回的候选者,无论此选项的值如何,都会省略撤回的候选者。如果只有撤回的候选者可用,则此选项确定是否返回它们而不是返回空列表(默认值)。这里的意图是允许调用者在PEP 592中实现规则的灵活性。

候选者

查找器返回的对象是Candidate对象。确切的类取决于来源,但它们必须具有以下属性

  • name:项目名称(一个字符串)。
  • version:项目版本(packaging.version.Version
  • requires_python:此候选者可以工作的Python版本(packaging.specifiers.SpecifierSet
  • is_wheel:这是一个轮还是sdist。
  • tags:此轮的兼容性标签(对于sdist忽略)。(Set[packaging.tags.Tag])
  • is_yanked:此文件是否被撤回?

来源

一个source是任何接受项目名称作为参数的Python可调用对象,并为指定项目生成候选者对象。特别是要注意,源不需要负责进行任何类型的过滤。

其他可能性

  1. 而不是让查找器返回一个平面的候选者列表,也许返回一个(版本,按顺序排列的候选者)列表?这样,调用者可以更容易地选择每个版本的最佳候选者。然而,“优先轮”可能将版本的候选者分成两部分(一批轮,另一批源),这可能会对调用者来说更难...

项目详情


下载文件

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

源分发

shadwell-0.1.tar.gz (8.7 kB 查看散列)

上传

构建分发

shadwell-0.1-py3-none-any.whl (7.2 kB 查看散列)

上传 Python 3

支持者