Skip to main content

uv_easy

uv를 더 쉽게 사용하기 위한 파이썬 패키지입니다. 버전 관리, 빌드, 배포 과정을 자동화하여 개발 워크플로우를 개선합니다.

🚀 주요 기능

  • 프로젝트 초기화: CLI 프로젝트 구조 자동 생성 (click/argparse 지원)
  • 자동 버전 관리: Git 커밋 분석을 통한 Semantic Versioning 자동 증가
  • Git 태그 자동화: 버전 증가 시 자동으로 Git 태그 생성 및 푸시
  • 태그 버전 동기화: 저장소의 최신 태그 버전과 pyproject.toml 버전을 비교/동기화
  • Changelog 자동 생성: git-cliff를 통한 자동 changelog 생성
  • 빌드 자동화: 빌드 잔여물 정리 및 패키지 빌드
  • PyPI/TestPyPI 배포: twine을 통한 안전한 패키지 업로드
  • GitHub Actions 통합: 자동 배포를 위한 workflow 생성
  • JSON 출력: CI/CD 친화적인 구조화된 출력

📦 설치

# 프로젝트 디렉토리에서
uv sync

🛠️ 사용법

프로젝트 초기화

새로운 CLI 프로젝트 생성

# click 사용 (기본값)
uv_easy startproject my_cli

# argparse 사용
uv_easy startproject my_cli --use argparse

이 명령어는 다음을 자동으로 생성합니다:

  • <패키지명>/__init__.py - 패키지 초기화 파일
  • <패키지명>/__main__.py - 메인 진입점
  • <패키지명>/cli.py - CLI 구현 (click 또는 argparse)
  • pyproject.toml에 스크립트 자동 추가
  • 기본 version 명령어 포함

생성된 프로젝트 사용 예시:

# 의존성 설치
uv sync

# 버전 확인
my_cli version

# uv_easy로 버전 관리
uv_easy version up --patch

버전 관리

현재 버전 확인

uv_easy version show

수동 버전 증가

# 패치 버전 증가 (0.1.0 → 0.1.1)
uv_easy version up --patch

# 마이너 버전 증가 (0.1.0 → 0.2.0)
uv_easy version up --minor

# 메이저 버전 증가 (0.1.0 → 1.0.0)
uv_easy version up --major

자동 버전 증가 (Semantic Versioning)

# Git 커밋을 분석하여 자동으로 버전 증가
uv_easy version up --auto

# Git 태그를 푸시하지 않음
uv_easy version up --auto --no-push

태그 버전과 동기화

# 저장소의 최신 태그 버전과 pyproject.toml의 버전을 비교
# 두 버전이 다르면 pyproject.toml을 태그의 최신 버전으로 수정합니다
uv_easy version sync

저장소 태그(예: v0.2.55)의 최신 버전과 pyproject.toml의 version을 비교합니다.

  • 두 버전이 같으면 아무것도 변경하지 않습니다.
  • 다르면 pyproject.toml의 버전을 태그의 최신 버전으로 맞춥니다.

빌드

기본 빌드 (패치 버전 증가 후 빌드)

uv_easy build

버전 증가 없이 빌드만

uv_easy build --no-version-up

특정 버전 증가 후 빌드

# 마이너 버전 증가 후 빌드
uv_easy build --minor

# 메이저 버전 증가 후 빌드
uv_easy build --major

# 자동 버전 증가 후 빌드
uv_easy build --auto

빌드 후 자동 설치

uv_easy build --install

Changelog 생성

# 현재 버전에 대한 changelog 생성
uv_easy changelog

# 특정 태그에 대한 changelog 생성
uv_easy changelog --tag v0.2.1

# 다른 파일명으로 출력
uv_easy changelog --output HISTORY.md

PyPI/TestPyPI 배포

PyPI 배포 준비 (URLs 설정)

uv_easy ready_pypi

PyPI 업로드

uv_easy publish

TestPyPI 업로드

uv_easy publish --test

JSON 출력 (CI/CD용)

uv_easy publish --json

GitHub Actions 설정

기본 workflow 생성

uv_easy init workflow

TestPyPI용 workflow 생성

uv_easy init workflow --test

GitHub Release 자동화 포함

uv_easy init workflow --release

git-cliff 설정 파일 생성

uv_easy init cliff-config

🔄 전체 워크플로우

개발 중 패치 릴리즈

# 버그 수정 후
uv_easy build --patch --install

새로운 기능 추가

# 기능 추가 후
uv_easy build --minor --install

메이저 업데이트

# 호환성을 깨는 변경 후
uv_easy build --major --install

자동 Semantic Versioning

# 커밋 메시지에 따라 자동 버전 증가
uv_easy build --auto --install

완전 자동화된 릴리즈

# 1. 버전 증가, Git 태그, 빌드, 설치를 한 번에
uv_easy build --auto --install

# 2. Changelog 생성
uv_easy changelog

# 3. PyPI 배포
uv_easy publish

📋 명령어 옵션

uv_easy version up

  • --major: 메이저 버전을 증가시킵니다
  • --minor: 마이너 버전을 증가시킵니다
  • --patch: 패치 버전을 증가시킵니다
  • --auto: Git 커밋을 분석하여 자동으로 버전을 증가시킵니다
  • --no-push: Git 태그를 푸시하지 않습니다

uv_easy version show

  • 현재 pyproject.toml의 버전을 표시합니다 (옵션 없음)

uv_easy version sync

  • 저장소의 최신 태그 버전과 pyproject.toml의 버전을 비교하고, 다르면 태그 버전으로 수정합니다 (옵션 없음)

uv_easy build

  • --no-version-up: 버전을 증가시키지 않고 빌드만 실행합니다
  • --major: 메이저 버전을 증가시킨 후 빌드합니다
  • --minor: 마이너 버전을 증가시킨 후 빌드합니다
  • --patch: 패치 버전을 증가시킨 후 빌드합니다
  • --auto: Git 커밋을 분석하여 자동으로 버전을 증가시킨 후 빌드합니다
  • --install: 빌드 후 현재 환경에 패키지를 설치합니다
  • --no-push: Git 태그를 푸시하지 않습니다

uv_easy changelog

  • --tag: 특정 태그에 대한 changelog 생성
  • --output, -o: 출력 파일명 지정 (기본: CHANGELOG.md)

uv_easy publish

  • --test: TestPyPI에 업로드합니다
  • --json: JSON 형태로 결과를 출력합니다

uv_easy startproject

  • <package_name>: 생성할 패키지 이름 (필수)
  • --use: 사용할 CLI 라이브러리 (click 또는 argparse, 기본값: click)

uv_easy init workflow

  • --test: TestPyPI용 workflow 생성
  • --release: GitHub Release 자동화 포함

🎯 Semantic Versioning 자동 감지

--auto 옵션을 사용하면 Git 커밋 메시지를 분석하여 자동으로 버전을 증가시킵니다:

  • feat: → minor bump
  • fix: → patch bump
  • breaking change 또는 ! 포함 → major bump
  • 기타 → patch bump

📊 JSON 출력 예시

{
  "version": "0.2.1",
  "repository": "pypi",
  "artifacts": [
    "dist/uv_easy-0.2.1.tar.gz",
    "dist/uv_easy-0.2.1-py3-none-any.whl"
  ]
}

🔧 요구사항

  • Python 3.9 이상
  • uv
  • pyproject.toml 파일이 있는 프로젝트
  • Git 저장소

📄 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.

Metadata

Release files for uv-easy 0.2.57

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uv-easy 0.2.57
File Size Uploaded Provenance Actions
uv_easy-0.2.57.tar.gz 45.0 kB Without provenance Details for uv_easy-0.2.57.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for uv-easy 0.2.57
File Interpreter ABI Platform Actions
uv_easy-0.2.57-py3-none-any.whl Python 3 none any Details for uv_easy-0.2.57-py3-none-any.whl

Total release size: 65.2 kB

Release files / uv_easy-0.2.57.tar.gz

Download URL uv_easy-0.2.57.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
adea5cc1adbc23b41c888c915c44091f1aeb3a9ec4620da8228dd411bcb05827
BLAKE2b-256 checksum
How to use checksums
c1c107eb45bec0e266fc50fc54dd37b04a82220829c4e6f0010bec7edb7b6215
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / uv_easy-0.2.57-py3-none-any.whl

Download URL uv_easy-0.2.57-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e53a53977ad727139c5faf264275b89eb7f089bbdb5a08da74a294a37f72bb39
BLAKE2b-256 checksum
How to use checksums
8174d5ef9f773ec8a9ece5ea6db943819c2e22863256777d31d47e0ae1f1b9ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Security for uv-easy 0.2.57

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page