이는 서버리스 OpenSearch(AOSS)와 함께 사용하기 위한 요청 서명 유틸리티의 프로토타입 구현입니다. (현재) Cognito 사용자 ID를 사용하여 PDS Registry의 AOSS 인스턴스를 쿼리하기 위한 컬과 유사한 인터페이스를 제공하기 위한 것입니다.
향후 추가 기능이 구축될 수 있습니다.
Registry AOSS에 대해 승인된 Cognito 사용자의 개인 사용자/패스 자격 증명
파이썬 >=3.9
환경 변수(값은 개발자에게 문의)
내보내기 REQUEST_SIGNER_AWS_ACCOUNT='' 내보내기 REQUEST_SIGNER_AWS_REGION='' 내보내기 REQUEST_SIGNER_CLIENT_ID='' 내보내기 REQUEST_SIGNER_USER_POOL_ID='' 내보내기 REQUEST_SIGNER_IDENTITY_POOL_ID='' 내보내기 REQUEST_SIGNER_AOSS_ENDPOINT='' 내보내기 REQUEST_SIGNER_COGNITO_USER='' 내보내기 REQUEST_SIGNER_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 소프트웨어의 모든 사용자와 개발자는 당사의 행동 강령을 준수해야 합니다. 우리 커뮤니티의 기대치를 이해하려면 이 내용을 읽어보시기 바랍니다.
이 프로젝트를 개발하려면 즐겨 사용하는 텍스트 편집기나 PyCharm과 같이 Python을 지원하는 통합 개발 환경을 사용하세요.
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 구성을 모두 지원하려면 일회성 설정이 필요합니다. 방법을 알아보려면 비밀에 대한 위키 항목을 참조하세요.
이 패키지에 대한 환경을 격리하고 재현할 수 있으려면 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
파일을 업데이트해야 합니다.
모듈 이름
라이센스, 기본 아파치, 필요한 경우 업데이트
설명
다운로드 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 파일을 시작하십시오.
"""내 모듈입니다."""로깅 로거 가져오기 = 로깅.getLogger(__name__)
메시지를 기록하려면:
logger.info("my message")
main
루틴에는 다음이 포함됩니다.
logging.basicConfig(level=logging.INFO)
기본 로깅 시스템을 구성합니다.
템플릿 저장소에 포함된 dev
extras_require
black
, flake8
(및 일부 플러그인) 및 mypy
모두에 대한 기본 구성과 함께 설치합니다. 다음을 사용하여 이 모든 것(및 그 이상!)을 실행할 수 있습니다.
tox -e lint
코드를 읽을 수 있으려면 PEP8 스타일 가이드를 준수해야 합니다. 우리의 코드 스타일은 black 및 flake8을 통해 자동으로 적용됩니다. Linting 파이프라인 호출에 대한 자세한 내용은 도구 섹션을 참조하세요.
❗템플릿 사용자를 위한 중요 사항❗ 포함된 사전 커밋 구성 파일은 변경된 파일뿐만 아니라 전체 src
폴더에서 flake8
( mypy
와 함께)을 실행합니다. 기존 코드 기반을 이 템플릿으로 변환하는 경우 처리할 준비가 되지 않은 많은 오류가 발생할 수 있습니다.
대신 pre-commit
entry
줄을 수정하여 현재 변경 사항을 비교하는 경우에만 flake8
실행할 수 있습니다.
entry: git diff -u | flake8 --diff
또는 특정 필터링 기준과 일치하는 변경된 파일에서만 flake8
호출되도록 pre-commit
구성을 변경할 수 있습니다.
- repo: local hooks: - id: flake8 name: flake8 entry: flake8 files: ^src/|tests/ language: system
Python은 다양한 라이브러리를 제공합니다. PDS 범위에서 가장 최근에 사용하려면 다음을 사용해야 합니다.
도서관 | 용법 |
---|---|
구성 분석기 | 구성 파일 관리 및 구문 분석 |
인수 | 명령줄 인수 문서화 및 구문 분석 |
요청 | 웹 API와 상호작용 |
lxml | XML 파일 읽기/쓰기 |
JSON | JSON 파일 읽기/쓰기 |
피얌 | YAML 파일 읽기/쓰기 |
피스타치 | 템플릿에서 파일 생성 |
이들 중 일부는 Python 3에 내장되어 있습니다. 다른 것들은 requirements.txt
에 포함할 수 있는 오픈 소스 추가 기능입니다.
이 섹션에서는 패키지 테스트에 대해 설명합니다.
테스트 실행, Linting( mypy
, black
, flake8
등) 및 문서 빌드를 포함한 완전한 "빌드"는 다음을 통해 실행됩니다.
tox
프로젝트에는 단위 테스트, 기능, 검증, 승인 등의 테스트가 내장되어 있어야 합니다.
단위 테스트를 위해서는 Python 3에 내장된 단위 테스트 모듈을 확인하세요.
테스트 개체는 패키지 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 패키지는 GitHub Actions를 활용하여 자동화된 지속적인 통합 및 지속적인 전달을 수행하는 Roundup Action을 사용하여 자동으로 게시할 수 있습니다. 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 워크플로, stable-cicd
및 unstable-cicd
함께 제공됩니다. 불안정한 빌드는 main
에 푸시할 때 실행되며(± 특정 파일에 대한 변경 사항은 무시함) 안정적인 빌드는 release/<release version>
형식의 릴리스 브랜치를 푸시할 때 실행됩니다. 두 가지 모두 GitHub 작업 빌드 단계인 Roundup을 사용합니다. unstable-cicd
SNAPSHOT 릴리스를 생성하고 지속적으로 업데이트합니다. 정식 소프트웨어 릴리스를 수행하지 않은 경우 v0.0.0-SNAPSHOT
릴리스로 종료됩니다(자세한 내용은 NASA-PDS/roundup-action#56 참조).