PEP 8과 Google Python Style Guide를 기반으로 하며, 모든 규칙은 Ruff로 자동 강제됩니다.
도구 체인
구분 | 도구 |
패키지 / 워크스페이스 | uv |
Lint · Format · Import 정렬 | Ruff (단일 도구) |
테스트 | pytest |
로컬 게이트 | pre-commit |
자주 쓰는 명령:
uv run ruff check . # 린트 (--fix 로 자동 수정)
uv run ruff format . # 포맷
uv run pytest -q # 테스트
Bash
복사
•
모든 lint·format·import 규칙은 pyproject.toml의 [tool.ruff]에 정의하며, 이 파일이 단일 진실 소스입니다.
•
black·flake8·isort를 개별 도입하지 않고 Ruff 하나로 통합합니다.
네이밍 가이드라인
타입 | 네이밍 | Example |
패키지 | snake_case | lower_with_under |
모듈 | snake_case | lower_with_under |
클래스 | PascalCase | CapWords |
예외(Exception) | PascalCase | CapWords |
함수 | snake_case | lower_with_under() |
상수 | UPPER_CASE | CAPS_WITH_UNDER |
변수 | snake_case | lower_with_under |
메서드 | snake_case | lower_with_under() |
함수/메서드 매개변수 | snake_case | lower_with_under |
문자열은 쌍따옴표를 사용합니다. (Ruff formatter 기본값과 일치)
피해야 하는 이름
•
아래 특별한 경우를 제외한 단일 글자 이름은 피합니다.
◦
counters·iterators (예: i, j, k, v)
◦
try/except에서 예외 식별자 e
문자열 포매팅
•
문자열 포매팅에는 f-string을 사용합니다.
◦
% 연산자, str.format, f-string 중 f-string이 가장 빠릅니다.
◦
표현식을 직접 평가해 문자열에 삽입하므로 별도 파싱·변환이 없습니다.
name = "Project0"
print(f"Project : {name}")
# 출력: "Project : Project0"
Python
복사
타입 어노테이션
•
확정적으로 사용되는 매개변수·반환값 타입은 반드시 명시합니다.
•
반환값이 없으면 -> None을 명시합니다.
Import 정렬
•
Ruff(isort 규칙)가 표준 라이브러리 → 서드파티 → 로컬 순으로 그룹을 나누고, 그룹 사이에 빈 줄 1개를 둡니다.
•
정렬은 uv run ruff check --fix 또는 pre-commit 훅에서 자동 수행됩니다.
