- 패키지와 실행 환경은
uv를 우선한다. - 타입 검사기는
ty를 우선한다. - 테스트는
pytest를 기본 후보로 둔다. - 린트/포맷은 프로젝트가 정한 도구를 따르되, 새 프로젝트는
ruff를 기본 후보로 둔다.
- 경계 타입은
dataclass,TypedDict, Pydantic 모델 중 프로젝트 패턴에 맞게 명시한다. - 동적 딕셔너리를 내부 도메인 전체에 퍼뜨리지 않는다.
- 파일 경로는
pathlib.Path를 우선한다. - 전역 mutable state를 피한다.
- I/O, 파싱, 정책 판단, 순수 계산을 분리한다.
- 예외를 삼키지 않는다. 복구하거나, 맥락을 붙여 다시 던진다.
- 정책 판단과 파싱은 순수 함수 테스트로 고정한다.
- 파일/네트워크/프로세스 호출은 fixture와 임시 디렉토리로 격리한다.
- 버그 수정에는 실패 입력을 그대로 남긴 회귀 테스트를 추가한다.
uv run pytest
uv run ty check
uv run ruff check
uv run ruff format --check프로젝트가 ty를 아직 도입하지 않았으면 새 의존성을 추가하기 전에 사용자 확인을 받는다.