Skip to content

mino-park7/python-project-template

Repository files navigation

Python Project Template

이 프로젝트는 Python 프로젝트를 시작할 때 사용할 수 있는 템플릿입니다. C++ 바인딩을 포함한 Python 패키지 개발을 위한 모든 기본 설정이 포함되어 있습니다.

주요 기능

  • 📦 패키지 관리: uv를 사용한 빠르고 효율적인 패키지 관리
  • 🎯 코드 품질 관리:
    • Ruff를 사용한 린팅 및 포맷팅
    • mypy를 사용한 타입 체크
  • 🔗 C++ 바인딩: pybind11을 사용한 C++ 코드 바인딩
  • 🚀 CI/CD: GitHub Actions를 통한 자동화된 테스트 및 배포
    • 자동 테스트 실행
    • 릴리즈 자동화
    • pre-commit 검사

시작하기

1. 템플릿 사용하기

  1. 이 저장소를 템플릿으로 사용하여 새 저장소를 생성합니다.

  2. 프로젝트를 클론합니다:

    git clone https://github.com/hyperaccel/python-project-template.git <project-name>
    cd <project-name>
  3. 개인화 스크립트를 실행합니다:

    # uv 설치
    curl -LsSf https://astral.sh/uv/install.sh | sh
    uv sync --group setup --no-install-project
    python scripts/personalize.py
    • GitHub 조직/사용자 이름
    • 저장소 이름
    • 패키지 이름 을 입력하여 프로젝트를 개인화합니다.

2. 개발 환경 설정

  1. Python 3.10 이상 설치

  2. uv 설치:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  3. 의존성 설치 및 활성화:

    apt install -y build-essential cmake pybind11-dev
    uv sync
    source .venv/bin/activate
  4. 의존성 추가:

    uv add <package-name>

3. 개발 워크플로우

  1. 코드 작성

    • src/ 디렉토리에 Python 코드 작성
    • csrc/ 디렉토리에 C++ 코드 작성
    • tests/ 디렉토리에 테스트 코드 작성
  2. 코드 품질 관리

 # 린팅
 ruff check .

 # 포맷팅
 ruff format .

 # 타입 체크
 mypy .

 # pre-commit 설치
 pre-commit install
 # pre-commit 실행
 pre-commit run --all-files
  1. 테스트 실행

    pytest

프로젝트 구조

.
├── my_project/          # Python 패키지 소스 코드
├── csrc/               # C++ 소스 코드
├── include/            # C++ 헤더 파일
├── tests/              # 테스트 코드
├── scripts/            # 유틸리티 스크립트
├── examples/           # 예제 코드
├── .github/workflows/  # GitHub Actions 워크플로우
├── pyproject.toml      # 프로젝트 설정
├── setup.py           # 빌드 설정
└── CMakeLists.txt     # C++ 빌드 설정

GitHub Actions 워크플로우

  • CI-test.yaml: 테스트 자동화
  • pre-commit.yaml: pre-commit 검사
  • prepare-release.yaml: 릴리즈 준비
  • release.yaml: 릴리즈 배포

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors