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可调用对象,并为指定项目生成候选者对象。特别是要注意,源不需要负责进行任何类型的过滤。
其他可能性
- 而不是让查找器返回一个平面的候选者列表,也许返回一个(版本,按顺序排列的候选者)列表?这样,调用者可以更容易地选择每个版本的最佳候选者。然而,“优先轮”可能将版本的候选者分成两部分(一批轮,另一批源),这可能会对调用者来说更难...
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
shadwell-0.1.tar.gz (8.7 kB 查看散列)
构建分发
shadwell-0.1-py3-none-any.whl (7.2 kB 查看散列)