跳转到主要内容

一组工具脚本,用于转换/增强PDS注册表元数据,以支持附加功能。

项目描述

注册表清理器

此软件包提供注册表文档的补充元数据生成,这对于注册表API正确运行和常见用户查询是必需的。执行是幂等的,应定期安排执行。

组件

修复套件

修复套件清理器将对属性的目标子集应用幂等转换,例如确保所有预期具有类似数组值的属性实际上都是数组(而不是在采集过程中将单元素数组扁平化为字符串)。文档的处理基于其ops:Provenance/ops:registry_sweepers_repairkit_version与清理器代码库的相关性是否最新。

来源

来源清理器为每个版本替代产品生成元数据,即与替代它的版本化产品建立联系。继任者的值存储在ops:Provenance/ops:superseded_by属性中。对于任何产品的最新版本,该属性将不会被设置。

血统

血统清理器为每个产品生成成员资格元数据,即哪个捆绑lidvid和哪个集合lidvid引用了给定的产品。这些值将分别存储在属性ops:Provenance/ops:parent_bundle_identifierops:Provenance/ops:parent_collection_identifier中。

接受环境变量以调整性能,主要是在增加运行时间的同时减少峰值内存使用。

开发者快速入门

先决条件

依赖项

  • Python >=3.9

环境变量

PROV_CREDENTIALS={"admin": "admin"}  // OpenSearch username/password
PROV_ENDPOINT=https://localhost:9200  // OpenSearch host url and port
LOGLEVEL - an integer log level or anycase string matching a python log level like `INFO` (optional - defaults to `INFO`))
DEV_MODE=1  // disables host verification

使用 --legacy-sync 选项时,还需要配置可访问所有节点 OpensSearch 域的跨集群搜索节点列表

CCS_CONN=naif-prod-ccs,rms-prod,sbnumd-prod-ccs,geo-prod-ccs,atm-prod-ccs,sbnpsi-prod-ccs,ppi-prod-ccs,img-prod-ccs

请使用 AWS 上工程节点 OpenSearch 域的“连接”选项卡中找到的连接别名。

https://us-west-2.console.aws.amazon.com/aos/home?region=us-west-2#opensearch/domains/en-prod?tabId=ccs

在克隆存储库并将存储库根目录设置为当前工作目录后,使用 pip install -e . 安装包。

可以使用 python ./docker/sweepers_driver.py 运行组件套件的包装脚本。

或者,可以从其 Dockerfile 构建 registry-sweepers,使用 docker image build --file ./docker/Dockerfile . 并作为容器运行,运行容器时提供相同的环境变量。

性能

初步基准测试

针对具有 ~1.1M 个产品、没有跨集群远程和(只有)~1k 个多版本产品的生产 OpenSearch 实例进行运行时,从本地开发机器上,第一次运行时间为 ~20 分钟,后续运行时间为 ~12 分钟。显然,OpenSearch 优化了无操作更新调用,尽管 registry-sweepers 每次运行都会从头开始重新处理元数据,但速度显著提高。

压倒性的瓶颈操作是 ancestry 中的 O(docs_count) 数据库写入。

行为准则

NASA-PDS 软件的所有用户和开发人员都应遵守我们的 行为准则。请阅读此内容以确保您了解我们社区的要求。

开发

要开发此项目,请使用您喜欢的文本编辑器或支持 Python 的集成开发环境,例如 PyCharm

贡献

有关如何为 NASA-PDS 代码库做出贡献的信息,请参阅我们的 贡献指南

安装

以可编辑模式将额外开发依赖项安装到您选择的虚拟环境中

pip install --editable '.[dev]'

配置 pre-commit 钩子

pre-commit install
pre-commit install -t pre-push
pre-commit install -t prepare-commit-msg
pre-commit install -t commit-msg

这些钩子检查代码格式,并中止包含密码或 API 密钥等机密信息的提交。然而,需要在您的全局 Git 配置中执行一次设置。有关如何进行设置的说明,请参阅 Git Secrets 的 wiki 条目

打包

要隔离并能够重新生成此包的环境,您应使用 Python 虚拟环境。为此,请运行

python -m venv venv

然后仅使用 venv/bin/pythonvenv/bin/pip 等。

如果您已安装 tox 并希望它为您创建环境并安装依赖项,请运行

tox --devenv <name you'd like for env> -e dev

开发依赖项在 setup.cfg 中的 dev extras_require 中指定;它们将按以下方式安装到虚拟环境中

pip install --editable '.[dev]'

所有源代码都位于 src 下的子目录中。

测试

本节描述了您的包的测试。

通过以下方式执行包括测试执行、linting(《mypy》、“black”、“flake8”等)和文档构建在内的完整“构建”

tox

单元测试

您的项目应包含内置的单元测试、功能测试、验证测试、验收测试等。

对于单元测试,请查看内置在 Python 3 中的 unittest 模块。

测试对象应位于 test 包的模块中,或者最好在项目 'tests' 目录中,该目录反映了项目的包结构。

我们的单元测试使用以下命令启动:

pytest

如果您希望您的测试在您进行更改时自动运行,请以监视模式启动 pytest

ptw

构建

pip install wheel
python setup.py sdist bdist_wheel

发布

NASA PDS 包可以使用 Roundup Action 自动发布,该工具利用 GitHub Actions 执行自动化持续集成和持续交付。在 .github/workflows/unstable-cicd.yaml 文件中提供了一个包含 Roundup 的默认工作流程。(这里的“不稳定”表示临时发布。)

手动发布

创建包

python setup.py bdist_wheel

将其作为 Github 发布。

在 PyPI 上发布(您需要一个 PyPI 账户并配置 $HOME/.pypirc

pip install twine
twine upload dist/*

或者在 Test PyPI 上发布(您需要一个 Test PyPI 账户并配置 $HOME/.pypirc

pip install twine
twine upload --repository testpypi dist/*

CI/CD

模板存储库附带我们两个“标准”CI/CD 工作流程,即 stable-cicdunstable-cicd。不稳定的构建在向 main 推送时运行(± 忽略对特定文件的更改)且稳定的构建在推送形如 release/<发布版本> 的发布分支时运行。这两个都使用了我们的 GitHub Actions 构建步骤,Roundup。不稳定的 unstable-cicd 将生成(并不断更新)快照发布。如果您还没有进行正式的软件发布,您将得到一个 v0.0.0-SNAPSHOT 发布(有关详细信息,请参阅 NASA-PDS/roundup-action#56)。

项目详情


下载文件

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

源分发

此发布没有可用的源分发文件。请参阅 生成分发存档的教程

构建分发

pds.registry_sweepers-1.2.1-py3-none-any.whl (44.3 kB 查看哈希值)

上传时间 Python 3

由以下机构支持