Incremental은 미래를 지원하는 CalVer 버전 관리자입니다.
API 문서는 여기에서 찾을 수 있습니다. 설명 문서는 다음과 같습니다.
내용물
작동 이론
빠른 시작
설정 도구 사용
해츨링 사용하기
setup.py 사용
프로젝트 초기화
런타임 통합
증분 버전
업데이트 중
불확실한 버전
버전 번호의 형식은 YY.MM.PATCH입니다.
프로젝트 이름이 "Shrubbery"인 경우 해당 코드는 shrubbery/ 또는 src/shrubbery/ 에 있습니다.
증분은 프로젝트의 버전 번호를 {src/}shrubbery/_version.py 에 저장합니다.
버전을 업데이트하려면 incremental update Shrubbery 실행하고 --rc 및/또는 --patch 적절하게 전달합니다(아래 업데이트 참조).
버전을 변경하면 "Shrubbery NEXT"와 같이 코드베이스의 불확실한 버전도 업데이트되므로 문서에서 향후 릴리스를 참조할 수 있습니다. 이것이 바로 Incremental이 미래를 지원하는 방식입니다.
pyproject.toml 에 증분을 추가합니다.
[build-system]requires = ["setuptools","incremental>=24.7.2", # ← 빌드 종속성으로 증분 추가]build-backend = "setuptools.build_meta"[project]name = "<projectname>"dynamic = ["version"] # ← 버전 표시 동적 의존성 = ["incremental>=24.7.2", # ← 런타임 시 증분에 의존]# ...[tool.incremental] # ← Incremental의 setuptools 플러그인 활성화
[tool.incremental] 테이블이 비어 있어도 괜찮지만 반드시 존재해야 합니다.
[project] version = 항목과 [tool.setuptools.dynamic] version = 항목을 제거합니다.
다음으로 프로젝트를 초기화합니다.
Hatchling을 사용하여 프로젝트를 패키징하는 경우 pyproject.toml 변경하여 Incremental의 Hatchling 플러그인을 활성화하세요.
[build-system]requires = ["hatchling","incremental>=24.7.2", # ← 빌드 종속성으로 증분 추가]build-backend = "hatchling.build"[project]name = "<projectname>"dynamic = ["version"] # ← 버전 표시 동적 의존성 = ["incremental>=24.7.2", # ← 런타임 시 증분에 의존]# ...[tool.hatch.version]source = "incremental" # ← Incremental의 Hatchling 플러그인 활성화
증분은 선택적 [tool.incremental] 테이블에서 평소와 같이 구성할 수 있습니다.
hatch version 명령은 증분 관리 버전을 보고합니다. 버전을 변경하려면 incremental update 명령을 사용하십시오. ( hatch version 으로 설정하는 것은 지원되지 않습니다.)
다음으로 프로젝트를 초기화합니다.
setup.py 사용 pyproject.toml 대신 setup.py 에서 증분을 사용할 수 있습니다. 다른 버전 관리 인수를 제거하여 setup() 호출에 다음을 추가하세요.
setup(use_incremental=True,setup_requires=['incremental'],install_requires=['incremental'], # 다른 설치 종속성과 함께... }
그런 다음 프로젝트를 초기화합니다.
pipx install incremental 사용하여 로컬 환경에 Incremental을 설치합니다. 그런 다음 incremental update <projectname> --create 실행합니다. 다음과 같이 _version.py 라는 패키지에 파일이 생성됩니다.
증분 가져오기에서 Version__version__ = Version("<projectname>", 24, 1, 0)__all__ = ["__version__"]이후 프로젝트 설치에서는 버전 관리를 위해 증분을 사용합니다.
패키지 API의 _version.py 에서 incremental.Version 을 노출할 수 있습니다. 이렇게 하려면 루트 패키지의 __init__.py 에 추가하세요.
._version 가져오기 __version__에서
메모
설치된 패키지 버전을 검색할 수 있는 Python 3.6의 importlib.metadata.version() 도입 이후 __version__ 속성 제공은 유행에서 벗어났습니다.
이 개체를 공개적으로 노출하지 않거나 패키지 내에서 사용하지 않으면 런타임 시 Incremental에 의존할 필요가 없습니다. 프로젝트의 dependencies 배열(또는 setup.py , install_requires )에서 이를 제거할 수 있습니다.
incremental.Version 은 특정 프로젝트의 버전을 나타내는 클래스입니다. 이는 다음 요소로 구성됩니다(인스턴스화 중에 제공됨).
package (필수), 이 Version 나타내는 패키지의 이름입니다.
major , minor , micro (모두 필수), 프로젝트 Version 의 XYZ입니다.
release_candidate (선택 사항), 이 Version 이 릴리스 후보("사전 릴리스"라고도 함)임을 표시하려면 0 이상으로 설정합니다.
post (선택 사항), 이 Version 포스트 릴리스로 표시하려면 0 이상으로 설정합니다.
dev (선택 사항), 이 Version 개발 릴리스로 표시하려면 0 이상으로 설정합니다.
전체 버전이 포함된 str 반환하는 .public() 메서드를 사용하여 PEP-440 호환 버전 문자열을 추출할 수 있습니다. 이는 사용자에게 제공하거나 공개적으로 사용해야 하는 버전입니다. 출력 예는 "13.2.0" , "17.1.2dev1" 또는 "18.8.0rc2" 입니다.
Version 으로 repr() 호출하면 Python 소스 코드 표현이 제공되고, Version 에서 str() 호출하면 '[Incremental, version 16.10.1]' 과 같은 문자열이 생성됩니다.
Incremental에는 incremental 을 사용하는 프로젝트 버전인 Incremental을 자동으로 업데이트하는 도구가 포함되어 있습니다. _version.py 파일을 업데이트하고 불확실한 버전에서 현재 버전으로 증분 버전의 일부 사용을 자동으로 업데이트합니다. PyPI에서 click 필요합니다.
incremental update <projectname> 해당 패키지에 대한 업데이트를 수행합니다. 그 이후에 제공할 수 있는 명령에 따라 다음 버전이 결정됩니다.
--newversion=<version> - 프로젝트 버전을 완전히 지정된 버전(예: 1.2.3 또는 17.1.0dev1)으로 설정합니다.
--rc - 현재 버전이 릴리스 후보가 아닌 경우 프로젝트 버전을 <year-2000>.<month>.0rc1 로 설정하고, 릴리스 후보인 경우 릴리스 후보 번호를 1만큼 높입니다.
--dev 개발 릴리스가 아닌 경우 프로젝트 개발 릴리스 번호를 0으로 설정하고 개발 릴리스인 경우 개발 릴리스 번호를 1만큼 높입니다.
--patch - 릴리스의 패치 번호를 증가시킵니다. 이는 또한 릴리스 후보 번호를 재설정하고 --rc 동시에 전달하여 패치 번호를 증가시키고 릴리스 후보로 만듭니다.
--post 포스트 릴리스가 아닌 경우 프로젝트 포스트 릴리스 번호를 0으로 설정하고, 포스트 릴리스 번호인 경우 포스트 릴리스 번호를 1만큼 높입니다. 그러면 릴리스 후보 및 개발 릴리스 번호도 재설정됩니다.
인수를 제공하지 않으면 릴리스 후보 번호가 제거되어 "전체 릴리스"가 됩니다.
증분은 다음 "전체" 버전에 대한 대체 버전으로 "미정" 버전을 지원합니다. 최종 사용자에게 표시될 버전을 알 수 없는 경우(예: "소개됨" 또는 "지원 중단됨")에 사용할 수 있습니다. 증분은 다음과 같은 불확실한 버전을 지원합니다.
Version("<projectname>", "NEXT", 0, 0)
<projectname> NEXT
incremental update <projectname> --rc 실행하면 실제 버전으로 업데이트됩니다(대상 최종 버전이 17.1.0이라고 가정).
Version("<projectname>", 17, 1, 0, release_candidate=1)
<projectname> 17.1.0rc1
최종 버전이 만들어지면 다음과 같이 됩니다.
Version("<projectname>", 17, 1, 0)
<projectname> 17.1.0