忽略此包
项目描述
注册清扫器
此包为注册文档提供补充元数据生成,这对于注册-api正确运行和常见用户查询是必需的。执行是幂等的,应定期安排。
组件
修复工具包
修复工具包清扫器对目标属性子集应用幂等转换,例如确保所有预期具有类似数组值的属性实际上都是数组(而不是单元素数组在收割过程中被压扁成字符串)。文档的处理基于其ops:Provenance/ops:registry_sweepers_repairkit_version
元数据值相对于清扫代码库是否是最新的。
来源
来源清扫器为每个版本替代的产品生成与替代其版本的产品链接的元数据。后续者的值存储在ops:Provenance/ops:superseded_by
属性中。对于任何产品的最新版本,此属性不会被设置。所有文档都会被处理,但基于它们的ops:Provenance/ops:registry_sweepers_provenance_version
元数据值相对于清扫代码库是否是最新的,对数据库写入进行了优化。
血统
祖先清理器为每个产品生成成员元数据,即哪些包 lidvids 和哪些集合 lidvids 引用了特定产品。这些值将分别存储在属性 ops:Provenance/ops:parent_bundle_identifier
和 ops:Provenance/ops:parent_collection_identifier
中。所有包/集合都会被处理以填充查找表,但基于它们相对于清理器代码库的 ops:Provenance/ops:registry_sweepers_provenance_version
元数据值是否最新,进行数据库写入优化,并且如果它们被标记为最新,则完全跳过注册表-ref 中的集合非聚合引用页面。
接受环境变量以调整性能,主要是以增加运行时间为代价减少峰值内存使用。
开发者快速入门
先决条件
依赖项
- 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 域的“连接”选项卡中找到的连接别名。
在克隆存储库并将存储库根设置为当前工作目录后,使用 pip install -e .
安装包。
可以使用 python ./docker/sweepers_driver.py
运行组件套件的包装脚本。
或者,可以使用 docker image build --file ./docker/Dockerfile .
从其 Dockerfile 构建 registry-sweepers,并以容器形式运行,在运行容器时提供相同的环境变量。
性能
粗略基准测试
在针对具有 ~1.1M 产品、无跨集群远程和(仅)~1k 多版本产品的生产 OpenSearch 实例运行时,从本地开发机器上,首次运行的时间为 ~20min,之后为 ~12min。这似乎表明 OpenSearch 优化了无操作更新调用,尽管注册表清理器每次运行都会从头开始重新处理元数据,但仍然显著提高了速度。
压倒性的瓶颈操作是祖先中的 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 的维基条目 了解如何操作。
打包
为了隔离并能够重新生成此包的环境,您应使用 Python 虚拟环境。为此,请运行
python -m venv venv
然后仅使用 venv/bin/python
、venv/bin/pip
等。
如果您已安装 tox
并希望它为您创建环境并安装依赖项,请运行
tox --devenv <name you'd like for env> -e dev
开发依赖项在 setup.cfg
中的 dev
extras_require
中指定;它们如下安装到虚拟环境中
pip install --editable '.[dev]'
所有源代码都在 src
下的子目录中。
测试
本节描述了您包的测试。
通过以下方式执行包括测试执行、代码风格检查(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自动发布,该Action利用GitHub Actions执行自动持续集成和持续交付。默认工作流程包括Roundup,位于.github/workflows/unstable-cicd.yaml
文件中。(此处“不稳定”表示临时发布。)
手动发布
创建包
python setup.py bdist_wheel
将其作为GitHub发布发布。
在PyPI上发布(您需要一个PyPI账户并配置$HOME/.pypirc
)
pip install twine
twine upload dist/*
或在测试PyPI上发布(您需要一个测试PyPI账户并配置$HOME/.pypirc
)
pip install twine
twine upload --repository testpypi dist/*
CI/CD
模板存储库包含我们两个“标准”CI/CD工作流程,即stable-cicd
和unstable-cicd
。不稳定的构建在任何对main
的推送(±忽略对特定文件的更改)上运行,而稳定的构建在推送形式为release/<发布版本>
的发布分支上运行。这两个都使用了我们的GitHub动作构建步骤,即Roundup。不稳定的CI/CD将生成(并持续更新)一个快照发布。如果您尚未进行正式的软件发布,您将得到一个v0.0.0-SNAPSHOT
发布(有关详细信息,请参阅NASA-PDS/roundup-action#56)。