Optimization convention-python
Python 코드 작성 중 PEP8, 타입 힌트, 네이밍 규칙, Docstring 규칙이 필요할 때. 검증이 아닌 참조용 — 검증은 check-python-style 사용. "Python 코딩 규칙", "PEP 8 스타일", "타입 힌트 어떻게?", "Docstring 작성법" 요청 시.
install
source · Clone the upstream repo
git clone https://github.com/sunLeee/optimization
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sunLeee/optimization "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/reference/python" ~/.claude/skills/sunleee-optimization-convention-python && rm -rf "$T"
manifest:
.claude/skills/reference/python/SKILL.mdsource content
convention-python
팀 Python 코딩 컨벤션. 검증은
/quality/check/python-style 사용.
Supersedes
python-patterns(외부 skill, 88자 Black 기준) — 팀 기준은 79자.
네이밍 규칙
| 대상 | 규칙 | 예시 |
|---|---|---|
| 변수/함수 | | , |
| class | | |
| 상수 | | |
| 모듈/파일 | | |
상황 1: class 이름을
dataProcessor로 작성 → DataProcessor로 수정
상황 2: 상수를 maxRetry = 3으로 정의 → MAX_RETRY = 3으로 수정
줄 길이: 79자 (팀 표준)
[tool.ruff] line-length = 79
- ruff pre-commit hook이 79자 초과 시 commit 차단
- 탭 없음, 스페이스 4개 들여쓰기
Type Hint (필수)
모든 function 파라미터 + 반환값에 type hint 필수.
mypy --strict 통과 기준.
# CORRECT def load_data(file_path: str, encoding: str = "utf-8") -> pd.DataFrame: ... # VIOLATION (금지) def load_data(file_path, encoding="utf-8"): ...
Google Style Docstring (한국어, 73자 이하, Logics 섹션 필수)
def load_zone_data(zone_id: int) -> pd.DataFrame: """zone_id에 해당하는 데이터를 로드한다. Args: zone_id: 분석 대상 zone의 고유 식별자. Returns: zone 데이터가 담긴 DataFrame. Raises: FileNotFoundError: 데이터 파일이 없을 때. Logics: 1. config에서 파일 경로를 가져온다. 2. CSV를 읽어 DataFrame으로 반환한다. """
규칙:
- docstring은 한국어 작성
- 한 줄 설명: 73자 이하
섹션 필수Logics- 모든 public 모듈/함수/class에 작성
Import 순서
표준 라이브러리 → 서드파티 → 로컬. 절대 경로. 상대 import, sys.path 조작 금지.
import os import pandas as pd from utils.prompt_loader import PromptLoader # 절대 경로
Pandas 최적화 (AW-011 Rob Pike Rule)
금지 → vectorized 연산iterrows()- Query는 ANSI SQL (DB engine 독립성)
# VIOLATION for idx, row in df.iterrows(): result = row["value"] * 2 # CORRECT result = df["value"] * 2
Gotchas (실패 포인트)
- 79자 vs 88자: VSCode 기본 Black은 88자 →
에서.vscode/settings.json"editor.rulers": [79] - Logics 섹션: mypy 통과해도 Logics 없으면 pre-commit에서 탐지
- 한국어 docstring: 영문+한국어 혼용 금지, 한국어 통일
- pandas chained assignment:
또는.loc
사용.copy()
관련 CLAUDE.md 규칙
| 규칙 | 위치 | 내용 |
|---|---|---|
| @AW-010 | team-operations.md | pre-commit ruff + mypy 실제 강제 |
| @AW-011 | team-operations.md | pandas vectorization — Rob Pike |
| 코드 스타일 | CLAUDE.md § 코드 스타일 | 79자, type hint, Google docstring |
참조
— 규칙 준수 검증/quality/check/python-style
— 79자 채택 이유docs/adr/ADR-004-line-length-79.md- team-operations.md § AW-010