用于解析、验证和查询存储在可读和可审查文本/YAML文件中的发行/打包元数据的Python模块
项目描述
distroinfo是一个Python模块,用于解析、验证和查询存储在可读和可审查文本/YAML文件中的发行/打包元数据。
这是对rdoinfo解析器的正确通用(重新)实现,该解析器被证明非常适合以人性化的方式与发行元数据进行交互的任务。如果您认为代码审查是人性化的,那就是。
distroinfo是Software Factory项目的一部分
状态
distroinfo可以从Fedora/EPEL仓库获取,并且正在被集成。
rdopkg 和 DLRN 是首批采用者。
通过离线和在线测试确保了 rdoinfo 兼容性。
已启用 CI。
请参阅 distroinfo reviews。
请使用 github Issues 提出请求和报告错误。
安装
从源码安装
如果您想修改 distroinfo 或获取最新代码而不等待下一个版本发布,您可以直接使用 git 仓库
git clone https://github.com/softwarefactory-project/distroinfo cd distroinfo python setup.py develop --user
您可以通过在您的 $PATH 中正确放置 ~/.local/bin/distroinfo 来设置对 distroinfo RPM 的偏好。
或者您可以使用 virtualenv 来避免与 RPM 冲突
git clone https://github.com/softwarefactory-project/distroinfo cd distroinfo virtualenv --system-site-packages ~/distroinfo-venv source ~/distroinfo-venv/bin/activate python setup.py develop ln `which distroinfo` ~/bin/distroinfo-dev distroinfo-dev --version
所需的 python 模块列在 requirements.txt 中。
从 Fedora/EPEL 仓库(默认)安装
distroinfo 可用于 Fedora 27 及更高版本
dnf install python2-distroinfo
包括 Python 3 版本
dnf install python3-distroinfo
在 CentOS/RHEL 7 上,distroinfo 可从 EPEL 获得。
在 CentOS 7 上
yum install epel-release yum install python2-distroinfo
在 RHEL 7 上
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install python2-distroinfo
从 PyPI 安装
为了方便起见,distroinfo 可从 Cheese Shop 获得
pip install distroinfo
使用方法
您可以通过指定 remote_info 基础 URL 来从 URL 获取信息文件
from distroinfo.info import DistroInfo RDOINFO_RAW_URL = \ 'https://raw.githubusercontent.com/redhat-openstack/rdoinfo/master/' di = DistroInfo('rdo-full.yml', remote_info=RDOINFO_RAW_URL) info = di.get_info()
或者您可以使用 remote_git_info 从远程 git 仓库获取信息文件
from distroinfo.info import DistroInfo RDOINFO_GIT_URL = \ 'https://github.com/redhat-openstack/rdoinfo' di = DistroInfo('rdo-full.yml', remote_git_info=RDOINFO_GIT_URL) info = di.get_info()
或者您可以使用 local_info 从本地目录获取信息文件
from distroinfo.info import DistroInfo INFO_PATH = '/path/to/info' di = DistroInfo('rdo-full.yml', local_info=INFO_PATH) info = di.get_info()
对于远程获取器,信息文件/仓库被缓存于 ~/.distroinfo/cache。
您可以选择自行导航信息结构或使用 query 模块
from distroinfo import query # get a package info by strict package name nova = query.get_package(info, 'openstack-nova') # find a package by human reference (smart search) keystone = query.find_package(info, 'keystone')
或者,您可以使用 info_dicts=True 以项目/发布名称为索引的字典形式获取信息,以便于访问
info = di.get_info(info_dicts=True) nova = info['packages']['nova']
您还可以根据给定标准过滤匹配的软件包。以下查询将显示所有匹配 conf: client AND tags: antelope 的软件包。
- ::
# rexen 是应用过滤器的字典。 # pkg 是当前处理的软件包。 info = di.get_info() pkgs = info[‘packages’] rexen = {“conf”: “client”, “tags”: “antelope”}
finding = query.filter_pkgs(pkgs, rexen)
您还可以使用带有“~”字符的负过滤,它可以与其他过滤器结合,如 conf: client。
- ::
info = di.get_info() pkgs = info[‘packages’] rexen = {“tags”: “~newton”, “conf”: “client”} finding = query.filter_pkgs(pkgs, rexen)
使用此功能时,输出将包含不带 newton 标记但包含 conf:client 的软件包。
在适当文档到位之前,请参阅
rdoinfo 以了解 distroinfo 格式使用的示例
rdoinfo integration tests 以获取代码示例
dlrn.drivers.rdoinfo 以获取使用标签和 remote_git_info/local_info 的真实世界代码
distroinfo.info 以 RTFS
命令行界面
在 scripts/di.py 中提供了一个简单的 CLI,可用于测试基本 distroinfo 功能、性能分析、转储解析数据等。
将解析的 rdoinfo 转储到 YAML 和 JSON 文件的示例
$> ./scripts/di.py dump -y rdoinfo.yaml -j rdoinfo.json -f git \ 'https://github.com/redhat-openstack/rdoinfo' rdo-full.yml Dumping YAML to: rdoinfo.yaml Dumping JSON to: rdoinfo.json
运行 CLI 需要额外的 docopt 模块。
错误
请使用 github Issues 报告错误。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源代码分发
构建分发版
distroinfo-0.6.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 87610c8a8fcf7a57e96b262f726a4cae51ca1e018f8f14ffa6f987a0c6e054c5 |
|
MD5 | 8210da19cc71b260f6edff766dbdbd8f |
|
BLAKE2b-256 | f71cc1c8a36568b355a45e4fe485b345eeaf60ce99c0e99232aa74d4616c18a4 |
distroinfo-0.6.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 97ce0229204ec1617b33556687f9b64d76c512f75c04f649554e7fa2d8290e0b |
|
MD5 | c6030d9194c5b4145568808dca2455e8 |
|
BLAKE2b-256 | f72f1f1466b1a00f0e3b26f00054f22f91b8ee99db5af66ac73cb60eeb7de706 |