| <colbgcolor=#c3c38f,#c3c38f><colcolor=#10110a,#10110a> Pyright | |
| | |
| 개발 | Microsoft |
| 출시일 | 2019년 03월 22일[1] |
| 유형 | 정적 타입 분석기 |
| 사용 언어 | TypeScript |
| 공식 웹사이트 | |
1. 개요
#!syntax sh
# pyright 설치 (pip)
pip install pyright
# nodejs 바이너리를 함께 설치(권장사항)
pip install "pyright[nodejs]"
pyright는 Microsoft에서 개발한 Python 코드용 정적 타입 검사기다. 코드 실행 없이 타입을 분석하여 오류를 미리 찾아내고 코드의 안정성을 높이는 데 도움을 준다. PEP484를 포함하여 타입 힌트 관련 PEP를 지원하며, 빠른 분석 속도를 자랑한다. pyright는 CLI로 사용되거나, Visual Studio Code의 pylance[2]와 같이 IDE에 통합되어 사용된다.
2. 특성
- 속도: 대규모 소스에서도 빠른 분석 속도를 제공한다. TypeScript 기반으로 작성되어 병렬 처리 등을 효율적으로 활용한다.
- 개인화된 설정: 다양한 검사 규칙을 제공하며, pyrightconfig.json 파일 또는 pyproject.toml의 tool.pyright 섹션을 통해 프로젝트별로 설정할 수 있다.
- 표준 타입 시스템 지원: Generics, Protocols, Overloads, Type Guards, TypedDict, Literal 등 Python의 현대적인 타입 시스템 기능 대부분 지원한다.
- 타입 추론: 타입 힌트가 명시되지 않은 코드에 대해서도 일정 수준의 타입 추론을 수행하여 잠재적인 오류를 찾아낸다.
3. 사용 방법
pyright는 주로 다음 두 가지 방식으로 사용된다.3.1. CLI
다음 명령어를 실행하여 타입 검사를 수행할 수 있다.#!syntax sh
pyright
작업 디렉터리 내의 모든 Python 파일을 분석한다. 특정 파일이나 디렉터리를 대상으로 실행할 수도 있다.
#!syntax sh
# 특정 파일 검사
pyright src/script.py
# 특정 디렉터리 검사
pyright src/
3.2. IDE
pyright는 Language Server Protocol을 지원하여 IDE와 쉽게 통합될 수 있다. 가장 잘 알려진 예는 Microsoft가 개발한 Visual Studio Code의 pylance 확장이다.다른 IDE나 편집기[3]에서도 LSP 플러그인을 통해 실시간 타입 검사, 자동 완성 등의 기능을 활용할 수 있다.
4. 여담
- Python으로 작성된 Mypy보다 빠른 분석 속도를 보인다.
- pyright의 유지관리자와 의견충돌로 인해 basedpyright라는 포크 프로젝트가 생겼다. pylance의 주요 기능[4]이 포함되었으며, pylance를 사용할 수 없는 VSCodium 등에서 주로 사용된다.
- 유지관리자가 타입 힌트와 관련된 PEP토론에 자주 참여하며, 신규 PEP에 대한 지원이 상당히 빠르다.
[1] github 릴리즈 기준[2] Microsoft에서 Visual Studio Code 전용으로 개발한 플러그인. pyright에서 부족하다 여겨지는 기능을 보완한 것으로, pyright에는 의도적으로 개발하지 않는 기능들이다.[3] Neovim, Sublime Text 등[4] syntax highlighting, auto import 등