astral-sh/ruff
Ruff 0.17.0, 코드 서명과 새로운 규칙 기본값 적용
원제 astral-sh/ruff 0.17.0
0.17.0
Key Point
파이썬 기본 버전 변경과 기본 규칙 비활성화로 기존 프로젝트의 린트 결과가 달라질 수 있으며, conda-forge 설치 방식의 사용 방법이 변경되므로 ruff 사용자의 즉각적인 대응이 필요하다.
핵심 요약
- macOS와 Windows 릴리스의 실행 파일이 코드 서명되었다. macOS는 Apple Developer ID 인증서로 서명·공증되었고, Windows는 Azure Artifact Signing으로 Authenticode 타임스탬프 서명을 받아 바이너리 무결성 검증과 퍼블리셔 기반 허용 목록을 지원한다.
- Python 기본 버전이 변경되었다. 버전 미설정 시 3.10에서 3.11로, 문법 검사 시 3.14에서 3.15로 올라갔다.
- 기본 활성화 규칙이 변경되었다. flake8-datetimez의 7개 규칙(DTZ001, DTZ005, DTZ006, DTZ007, DTZ011, DTZ012, DTZ901)은 더 이상 기본 활성화되지 않으며, F406(undefined-local-with-nested-import-star-usage)은 새로 기본 활성화된다.
- JUnit 출력 형식이 업데이트되었다. quick-junit을 0.8.0으로 올려 요소의 disabled 속성을 skipped로 변경하고 루트 요소에 skipped 속성을 추가했다.
- datetime 모듈의 관례적 별칭으로 dt가 추가되었으며, 언더스코어 접두사 유니코드 이름(예: _次)을 더미 변수로 인식한다.
- Unicode 17 데이터를 사용하도록 업데이트되어 식별자 정규화와 명명 문자 이스케이프에 적용된다.
- CLI에서 기본값으로 안전하지 않은 고정(unsafe fixes)과 수동 검토 필요 제안을 표시하도록 변경되었으나, 실제 적용에는 명시적 옵트인이 필요하다.
- conda-forge 빌드가 Python 의존성을 제거했다. 대신 linux-riscv64, win-arm64, linux-ppc64le 플랫폼 지원이 추가되고 셸 자동완성이 포함되었으나, python -m ruff와 import ruff는 더 이상 작동하지 않으며 PATH에서 직접 실행해야 한다.
- 레거시 언어 서버 ruff-lsp 지원이 제거되었다. Ruff VS Code 확장은 이제 항상 네이티브 언어 서버를 사용하며, ruff.nativeServer 설정은 더 이상 사용되지 않는다.
- 3개 규칙이 안정화되었다. lazy-import-mismatch(TID254), lazy-import-immediately-resolved(TID255), os-path-commonprefix(RUF071)이 더 이상 미리보기 상태가 아니다.
- 포매터, unsorted-imports(I001), line-too-long(E501), doc-line-too-long(W505)이 줄 길이 계산에서 후행 pragma 주석을 일관되게 무시하도록 안정화되어 기존 import 재포매팅을 야기할 수 있다.
- flake8-bugbear의 B005 규칙이 메서드 이름과 더 정확한 범위를 보고하도록 개선되었고, FURB152는 안전하지 않음으로 표시되어 의심 범주로 이동했으며, RUF067은 strict 모드에서 docstring을 허용하도록 변경되었다.
릴리스 노트 보기 ↗github.com