這是與無伺服器 OpenSearch (AOSS) 一起使用的請求簽署公用程式的原型實作。 它(目前)旨在提供一個類似curl的介面,用於使用Cognito使用者身分查詢PDS註冊表的AOSS實例。
未來可能會建立額外的功能。
獲得註冊 AOSS 授權的 Cognito 使用者的個人使用者/通行證
Python >=3.9
環境變數(請聯絡開發人員以取得值)
匯出 REQUEST_SIGNER_AWS_ACCOUNT='' 匯出 REQUEST_SIGNER_AWS_REGION='' 匯出 REQUEST_SIGNER_CLIENT_ID='' 匯出 REQUEST_SIGNER_USER_POOL_ID='' 匯出 REQUEST_SIGNER_IDENTITY_POOL_USER_PO. TO_USER='' 匯出 REQUEST_SIGN ER_COGNITO_PASSWORD=''
克隆儲存庫
git clone https://github.com/NASA-PDS/registry-client.git cd registry-client
建立虛擬環境
python -m venv venv source ./venv/bin/activate
將工具安裝到虛擬環境中
pip install --editable .[dev]
直接運行該工具
registry-client --help
NASA-PDS 軟體的所有使用者和開發人員都應遵守我們的行為準則。請閱讀本文以確保您了解我們社區的期望。
要開發此項目,請使用您最喜歡的文字編輯器或支援 Python 的整合開發環境,例如 PyCharm。
有關如何為 NASA-PDS 程式碼庫做出貢獻的信息,請查看我們的貢獻指南。
以可編輯模式安裝,並具有額外的開發人員依賴項到您選擇的虛擬環境中:
pip install --editable '.[dev]'
為儲存庫中的任何機密(電子郵件地址、密碼、API 金鑰等)制定基準:
detect-secrets scan . --all-files --disable-plugin AbsolutePathDetectorExperimental --exclude-files '.secrets..*' --exclude-files '.git.*' --exclude-files '.mypy_cache' --exclude-files '.pytest_cache' --exclude-files '.tox' --exclude-files '.venv' --exclude-files 'venv' --exclude-files 'dist' --exclude-files 'build' --exclude-files '.*.egg-info' > .secrets.baseline
檢查機密以確定哪些是允許的,哪些是誤報:
detect-secrets audit .secrets.baseline
請刪除任何不應被公眾看到的秘密。然後您可以將基線文件新增至提交:
git add .secrets.baseline
然後,配置pre-commit
掛鉤:
pre-commit install pre-commit install -t pre-push pre-commit install -t prepare-commit-msg pre-commit install -t commit-msg
然後,這些掛鉤將檢查任何可能包含秘密的未來提交。他們還檢查代碼格式、PEP8 合規性、類型提示等。
?注意:需要一次性設定才能支援detect-secrets
和全域 Git 配置。請參閱有關 Secrets 的 wiki 條目以了解操作方法。
為了隔離並能夠重新產生此套件的環境,您應該使用 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
下的子目錄中。
您應該使用以下內容更新setup.cfg
檔案:
你的模組的名稱
許可證,預設 apache,如果需要更新
描述
下載 url,當你在 github 上發布包時,請在此處添加 url
關鍵字
分類器
install_requires,加入你的套件的依賴項
extras_require,加入你的套件的開發依賴
Entry_points,當您的套件可以在命令列中呼叫時,這有助於部署指向包中腳本的命令列入口點
有關打包詳細信息,請參閱 https://packaging.python.org/tutorials/packaging-projects/ 作為參考。
使用ConfigParser套件來管理設定很方便。它允許用戶在其環境中的特定檔案中覆蓋預設配置。請參閱 https://pymotw.com/2/ConfigParser/
例如:
candidates = ['my_pds_module.ini', 'my_pds_module.ini.default'] found = parser.read(candidates)
您不應該使用print()
來記錄有關程式碼執行的資訊。根據程式碼運行的位置,這些資訊可能會重定向到特定的日誌檔案。
要實現這一點,請使用以下命令啟動每個 Python 檔案:
"""我的模組。"""importlogginglogger =logging.getLogger(__name__)
要記錄訊息:
logger.info("my message")
在您的main
例程中,包括:
logging.basicConfig(level=logging.INFO)
配置基本的日誌系統。
範本儲存庫中包含的dev
extras_require
安裝black
、 flake8
(以及一些外掛程式)和mypy
以及所有這些的預設配置。您可以使用以下命令運行所有這些(以及更多!):
tox -e lint
為了使您的程式碼具有可讀性,您應該遵守 PEP8 風格指南。我們的程式碼風格在 via black 和 flake8 中自動強制執行。有關呼叫 linting 管道的信息,請參閱工具部分。
❗範本使用者的重要注意事項❗ 包含的預提交設定檔在整個src
資料夾中執行flake8
(以及mypy
),而不僅僅是在變更的檔案上。如果您要將預先存在的程式碼庫轉換為此模板,可能會導致許多您無法處理的錯誤。
您可以透過修改pre-commit
entry
行來僅對目前所做變更的差異執行flake8
:
entry: git diff -u | flake8 --diff
或者您可以變更pre-commit
配置,以便僅在符合特定篩選條件的已變更檔案上呼叫flake8
:
- repo: local hooks: - id: flake8 name: flake8 entry: flake8 files: ^src/|tests/ language: system
Python 提供了種類繁多的函式庫。在 PDS 範圍內,對於目前的用法,我們應該使用:
圖書館 | 用法 |
---|---|
配置解析器 | 管理和解析設定檔 |
arg解析 | 命令列參數文檔和解析 |
要求 | 與 Web API 交互 |
lxml | 讀/寫 XML 文件 |
json | 讀/寫 JSON 文件 |
皮亞姆爾 | 讀/寫 YAML 文件 |
pystache | 從模板生成文件 |
其中一些內建於 Python 3 中;其他是開源插件,您可以將其包含在您的requirements.txt
中。
本節介紹對您的包的測試。
完整的“建置”,包括測試執行、linting( mypy
、 black
、 flake8
等)和文件建置是透過以下方式執行的:
tox
您的專案應該有內建的單元測試、功能測試、驗證測試、驗收測試等。
對於單元測試,請查看 Python 3 中內建的 unittest 模組。
測試對象應該位於包test
模組中,或者最好位於反映項目包結構的項目“tests”目錄中。
我們的單元測試是透過命令啟動的:
pytest
如果您希望測試在進行變更時自動執行,請使用下列命令在監視模式下啟動pytest
:
ptw
人們應該使用behave package
並將測試結果推送到「testrail」。
請參閱 https://github.com/NASA-PDS/pds-doi-service#behavioral-testing-for-integration--testing 中的範例
您的專案應該使用 Sphinx 來建立其文件。 PDS 的文件範本已配置為預設建置的一部分。您可以使用以下方式建立專案文件:
python setup.py build_sphinx
您可以存取相對於專案根目錄的以下目錄中的建置檔案:
build/sphinx/html/
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 工作流程, stable-cicd
和unstable-cicd
。不穩定的建置在任何對main
的推播上運行(±忽略對特定檔案的變更),而穩定的建置在推送形式為release/<release version>
的發布分支時運行。這兩者都利用了我們的 GitHub 操作建置步驟 Roundup。 unstable-cicd
將產生(並不斷更新)快照版本。如果您尚未發布正式的軟體版本,您最終將獲得v0.0.0-SNAPSHOT
版本(有關詳細信息,請參閱 NASA-PDS/roundup-action#56)。