콘텐츠로 이동

ty - 빠른 Python 타입 체커 치트시트

ty - 빠른 Python 타입 체커 치트시트

ty는 Astral (Ruffuv의 팀)이 작성한 Rust의 매우 빠른 Python 타입 체커이자 언어 서버입니다. mypy는 큰 코드베이스에서 몇 분이 걸릴 수 있지만, ty는 거의 즉각적인 피드백을 대상으로 하므로 CI에서만이 아니라 매 저장 시마다 타입 체킹을 실행하는 것이 현실적입니다. 현대 Astral Python 도구체인을 완성합니다. 패키징을 위한 uv, lint/format을 위한 Ruff, 타입을 위한 ty.

ty는 mypy보다 최신이며 여전히 개선 중입니다. 하드 CI 게이트로 만들기 전에 코드베이스에 대해 검증하세요.

설치

방법명령
uv (권장)uv tool install ty
uvx (설치 없음)uvx ty check
pippip install ty
확인ty --version

코드 확인

명령설명
ty check현재 프로젝트 확인
ty check src/특정 경로 확인
ty check --watch파일 변경 시 재확인
ty check --output-format concise간결한 출력
ty check --error-on-warning경고를 오류로 처리
ty --help전체 옵션 목록

구성

ty는 pyproject.toml을 읽습니다.

[tool.ty]
# 확인할 경로
src = ["src", "tests"]

[tool.ty.environment]
python-version = "3.12"
# 종속성을 찾을 위치
python = ".venv"

[tool.ty.rules]
# 개별 진단 조정
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
섹션목적
[tool.ty]프로젝트 레이아웃 / 포함된 경로
[tool.ty.environment]Python 버전, venv, 검색 경로
[tool.ty.rules]각 규칙을 error, warn 또는 ignore으로 설정

진단 억제

형식효과
# ty: ignore라인의 모든 진단 억제
# ty: ignore[rule-name]특정 규칙 억제
# type: ignore또한 존중됨 (mypy 호환)

언어 서버 (편집기 통합)

편집기방법
VS CodeAstral ty 확장 설치
Neovimty server를 LSP로 구성
모든 LSP 클라이언트ty server 실행

언어 서버는 CLI와 동일한 속도로 인라인 타입 오류, 호버 타입, 정의로 이동을 제공합니다.

일반적인 진단

진단의미
invalid-argument-type인자가 매개변수 타입과 일치하지 않음
unresolved-attribute속성이 타입에 존재하지 않음
possibly-unbound-variable변수가 할당 전에 사용될 수 있음
invalid-return-type반환이 주석과 일치하지 않음
unresolved-import가져오기를 해석할 수 없음

Astral 도구체인

# 완전한 현대 Python 품질 게이트
uv sync                 # deps, locked and fast
uv run ruff format .    # format
uv run ruff check .     # lint
uv run ty check         # types
uv run pytest           # tests
도구대체
uvpip, pip-tools, virtualenv, pyenv, poetry
Ruffblack, flake8, isort, pyupgrade, + 더
tymypy (타입 체킹)

CI 통합

# 타입 오류에 대해 빌드 실패 처리
uvx ty check --error-on-warning

# 변경된 파일만 확인 (git 포함)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check

ty vs 다른 타입 체커

측면tymypyPyright
언어RustPythonTypeScript/Node
속도매우 빠름느림빠름
성숙도최신가장 성숙성숙
편집기 LSP내장플러그인을 통해내장 (Pylance)
최적 용도속도 + Astral 스택생태계 호환성VS Code 사용자

리소스