Scientific Python Developer Guide를 기반으로 새로운 Python 프로젝트를위한 복사기/Cookiecutter 템플릿. 파이썬 패키지의 다른 템플릿과 다른 점은 무엇입니까?
github.com URL (기본값)을 타겟팅하는 경우 GitHub 작업을 지원하고 실험적인 Gitlab CI 지원을 추가합니다.sp-repo-review 제공합니다. 모든 점검이 가교되었습니다. Scientific-Python Development Guide를 먼저 읽고 프로젝트에 사용했는지 확인하십시오. 이것은 최소한의 예제 나 튜토리얼이 아닙니다 . CookieCutter를 사용하여 새 프로젝트를 시작하거나 기존 프로젝트의 개별 파일을 복사하는 데 유용한 툴링 모음입니다 ( {{cookiecutter.project_name}}/ ).
세대 동안 패키지의 다음 백엔드 중에서 선택할 수 있습니다.
현재 최선의 선택은 아마도 순수한 Python 프로젝트의 해치 일 것입니다. Scikit-Build (예 : Scikit-Build-Core + Pybind11 선택)는 이진 프로젝트입니다.
copier 및 copier-templates-extensions 설치하십시오. PIPX 사용은 다음과 같습니다.
pipx install copier
pipx inject copier copier-templates-extensions이제 프로젝트를 생성하려면 복사기를 실행하십시오.
copier copy gh:scientific-python/cookie < pkg > --trust ( <pkg> 는 새 프로젝트를 배치하는 경로입니다. 복사기가 오래된 경우 --trust 대신 --UNSAFE 사용하십시오)
답변 검증으로 더 좋은 CLI 경험을 얻게됩니다. 또한 .copier-answers.yml 파일을 얻을 수 있으므로 향후 업데이트를 수행 할 수 있습니다.
참고 :
--vcs-ref=HEAD추가하여 마지막 태그 버전 대신 최신 버전을 얻으십시오. 헤드는 항상 테스트를 통과합니다 (그리고 CookieCutter가 사용하는 것).
Brew를 사용하는 경우 brew install cookiecutter . 그렇지 않으면 pipx install cookiecutter (또는 아래 명령으로 pipx run 하고 설치를 건너 뛰십시오). 그런 다음 실행 :
cookiecutter gh:scientific-python/cookieCookieCutter 2.2.3+를 사용하는 경우 복사기와 같은 옵션에 대한 좋은 설명을 얻을 수 있습니다!
CookieCutter 프로젝트에 기능 업데이트를 추가하는 Cruft를 사용할 수도 있습니다. pipx install cruft 설치하거나 아래 명령으로 pipx run 선출하고 설치를 건너 뛰십시오). 그런 다음 실행 :
cruft create gh:scientific-python/cookie 키 설정 파일 인 pyproject.toml 및 setup.cfg 및 setup.py (pybind11 예)를 확인하십시오. README.md 업데이트하십시오. 또한 docs/ 에 문서를 업데이트하고 추가하십시오.
몇 가지 예제 종속성과 3.9의 최소 Python 버전이 있으며, 실제로 필요한/원하는대로 자유롭게 변경하십시오. 작은 타이핑 예제가있는 기본 백 포트 구조도 있습니다.
[docs] 추가[test] 추가NOX로 로컬로 테스트 할 수 있습니다.
# See all commands
nox -l
# Run a specific check
nox -s "lint(scikit-build)"
# Run a noxfile command on the project noxfile
nox -s "nox(hatch)" -- docs 로컬로 nox 없는 경우 pipx run nox 와 같은 PIPX를 사용할 수 있습니다.
Hypermodern-Python은 각 기능에 대한 훌륭한 문서 및 사용 된 동일한 도구와 같은 많은 유사점으로 체크 아웃 할 가치가있는 또 다른 프로젝트입니다. 약간 다른 기능 세트가 있으며 GitHub 액션에 중점을두고 있습니다. 대부분의 가이드는 GHA를 사용하지 않으려면 다른 CI 시스템에 상당히 쉽게 조정할 수 있습니다. 또한 백엔드 선택 대신시의 사용을 강요하고 편집 된 프로젝트를 지원하지 않습니다. 현재 모든 개발 종속성을 공유 환경에 버려서 시간이 길고 갈등 가능성이 높아집니다. 또한 사용하려는 방식을 사전 커밋을 사용하지 않습니다. 또한 약간의 사용자 정의 코드가 있습니다.
많은 가이드, Cookiecutter 및 Repo-Review가 Scikit-Hep의 일환으로 시작되었습니다. 이 프로젝트는 2023 Scientific-Python Developers Summit에서 NSLS-II 가이드와 합병, 일반화 및 결합되었습니다.
sp-repo-review Repo-Review를 위해 Scientific-Python/Cookie의 Scientific-Python Development Guide를 기반으로 한 점검을 제공합니다.
이 도구는 저장소 스타일을 확인할 수 있습니다. 이렇게 사용하십시오 :
pipx run ' sp-repo-review[cli] ' < path to repository >결과 목록이 생성됩니다. 녹색 확인 표시는이 규칙을 따르고 있음을 의미합니다. Red X는 규칙이 그렇지 않다는 것을 의미합니다. 노란색 경고 표시는 이전 필수 점검이 실패하여 수표가 건너 웠음을 의미합니다. 일부 수표는 실패 할 것입니다. 괜찮습니다. 목표는 임의의 수표를 준수하지 않고 가능한 모든 문제를주의를 기울이는 것입니다. 결국 검사를 무시한대로 표시하는 방법이있을 수 있습니다.
예를 들어, GH101 모든 작업 파일에 좋은 name: 필드를 가질 것으로 기대합니다. CI에서 볼 수있는 파일 기반 이름에 만족하는 경우,이 점검을 무시하면 자유롭게 무시해야합니다 (순간에 시각적으로 무시하면 무시 된 검사를 지정하는 방법이 결국 추가 될 것입니다).
모든 수표는 과학-파이썬 개발 가이드에서 적어도 어떤 식 으로든 언급됩니다. 먼저 읽어야합니다 - 당신이 그들을 따르려고하지 않으면 일부 수표가 작동하지 않을 수 있습니다. 예를 들어, 가이드 라인은 pytest 구성을 pyproject.toml 에 배치하도록 지정합니다. 다른 곳에 배치하면 모든 Pytest 수표가 건너 뜁니다.
이것은 원래 과학적 파이썬으로 이동하기 전에 Scikit-Hep을 위해 개발되었습니다.
GitHub 작업을 사용할 수도 있습니다.
- uses : scientific-python/cookie@<version>또는 사전 커밋 :
- repo : https://github.com/scientific-python/cookie
rev : <version>
hooks :
- id : sp-repo-review validate-pyproject 와 같은 플러그인을 추가하기 위해 additional_dependencies 사용하는 경우 CLI 요구 사항이 포함되도록 "repo-review[cli]" 도 포함해야합니다.
PY001 : pyproject.toml이 있습니다PY002 : readme. (md | rst) 파일이 있습니다PY003 : 라이센스* 파일이 있습니다PY004 : 문서 폴더가 있습니다PY005 : 테스트 폴더가 있습니다PY006 : 사전 커밋 구성이 있습니다PY007 : 쉬운 작업 러너 (Nox, Tox, Pixi 등)를 지원합니다.PP002 : 적절한 빌드 시스템 테이블이 있습니다PP003 : 휠을 빌드 데프로 나열하지 않습니다PP004 : 상단 캡 파이썬이 필요하지 않습니다PP301 : pyproject에 pytest가 있습니다PP302 : 최소 Pytest를 최소 6으로 설정합니다.PP303 : 테스트 경로를 설정합니다PP304 : pytest에서 로그 레벨을 설정합니다PP305 : xfail_strict를 지정합니다PP306 : 엄격한 구성을 지정합니다PP307 : 엄격한 마커를 지정합니다PP308 : 유용한 pytest 요약을 지정합니다PP309 : 지정된 필터 경고RTD100 : readthedocs를 사용합니다 (pyproject config)RTD101 : RTD 버전 번호를 2로 설정해야합니다.RTD102 : RTD 빌드 이미지를 설정해야합니다.RTD103 : RTD Python 버전을 설정해야합니다.GH100 : GitHub 조치 구성이 있습니다GH101 : 좋은 이름이 있습니다GH102 : 반복 된 PR에 대한 자동 캔셀GH103 : 수동 디스패치 트리거가있는 하나 이상의 워크 플로GH104 : 업로드 아티팩트에 고유 한 이름을 사용하십시오GH200 : 의존적으로 유지 관리GH210 : Dependabot을 사용하여 GitHub 작업 버전을 유지 관리합니다GH211 : 주요 버전으로 코어 작업을 고정하지 마십시오.GH212 : GHA 업데이트 그룹화가 필요합니다MY100 : mypy (pyproject config) 사용MY101 : Mypy Strict ModeMY102 : mypy show_error_codes가 더 이상 사용되지 않습니다MY103 : Mypy는 도달 할 수없는 경고MY104 : Mypy는 코드를 무시할 수 있습니다MY105 : Mypy는 중복을 활성화합니다MY106 : Mypy는 Truthy-Bool을 활성화합니다PC100 : 사전 커밋 훅이 있습니다PC110 : 검은 색 또는 Ruff-Format을 사용합니다PC111 : Blacken-Docs를 사용합니다PC140 : 유형 검사기를 사용합니다PC160 : 맞춤법 검사기를 사용합니다PC170 : Pygrep 후크를 사용합니다 (첫 번째 존재하는 경우에만 필요)PC180 : Markdown Formatter를 사용합니다PC190 : Ruff를 사용합니다PC191 : 수정이 활성화 된 경우 Ruff Show 수정PC901 : 사용자 정의 사전 커밋 CI 메시지RF001 : Ruff 구성이 있습니다RF002 : 대상 버전을 설정해야합니다RF003 : SRC 디렉토리를 더 이상 지정할 필요가 없습니다 (0.6+)RF101 : 버그 부비트를 선택해야합니다RF102 : ISORT를 선택해야합니다RF103 : Pyupgrade를 선택해야합니다RF201 : 더 이상 사용되지 않은 구성 설정을 사용하지 마십시오RF202 : 사용 (신규) 보풀 구성 섹션