跳转到主要内容

用于解析、验证和查询存储在可读和可审查文本/YAML文件中的发行/打包元数据的Python模块

项目描述

distroinfo是一个Python模块,用于解析、验证和查询存储在可读和可审查文本/YAML文件中的发行/打包元数据。

这是对rdoinfo解析器的正确通用(重新)实现,该解析器被证明非常适合以人性化的方式与发行元数据进行交互的任务。如果您认为代码审查是人性化的,那就是。

distroinfoSoftware 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 的软件包。

在适当文档到位之前,请参阅

命令行界面

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 (239.3 kB 查看哈希值)

上传时间 源代码

构建分发版

distroinfo-0.6.2-py3-none-any.whl (20.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页