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 = ""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 = ""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
실행합니다. 다음과 같이 _version.py
라는 패키지에 파일이 생성됩니다.
증분 가져오기에서 Version__version__ = Version("", 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
해당 패키지에 대한 업데이트를 수행합니다. 그 이후에 제공할 수 있는 명령에 따라 다음 버전이 결정됩니다.
--newversion=
- 프로젝트 버전을 완전히 지정된 버전(예: 1.2.3 또는 17.1.0dev1)으로 설정합니다.
--rc
- 현재 버전이 릴리스 후보가 아닌 경우 프로젝트 버전을
로 설정하고, 릴리스 후보인 경우 릴리스 후보 번호를 1만큼 높입니다.
--dev
개발 릴리스가 아닌 경우 프로젝트 개발 릴리스 번호를 0으로 설정하고 개발 릴리스인 경우 개발 릴리스 번호를 1만큼 높입니다.
--patch
- 릴리스의 패치 번호를 증가시킵니다. 이는 또한 릴리스 후보 번호를 재설정하고 --rc
동시에 전달하여 패치 번호를 증가시키고 릴리스 후보로 만듭니다.
--post
포스트 릴리스가 아닌 경우 프로젝트 포스트 릴리스 번호를 0으로 설정하고, 포스트 릴리스 번호인 경우 포스트 릴리스 번호를 1만큼 높입니다. 그러면 릴리스 후보 및 개발 릴리스 번호도 재설정됩니다.
인수를 제공하지 않으면 릴리스 후보 번호가 제거되어 "전체 릴리스"가 됩니다.
증분은 다음 "전체" 버전에 대한 대체 버전으로 "미정" 버전을 지원합니다. 최종 사용자에게 표시될 버전을 알 수 없는 경우(예: "소개됨" 또는 "지원 중단됨")에 사용할 수 있습니다. 증분은 다음과 같은 불확실한 버전을 지원합니다.
Version("
incremental update
실행하면 실제 버전으로 업데이트됩니다(대상 최종 버전이 17.1.0이라고 가정).
Version("
최종 버전이 만들어지면 다음과 같이 됩니다.
Version("