MS, Python 타입 서버 프로토콜 TSP 공개
원제: Type Server Protocol
왜 중요한가
Python 타입 분석 인프라를 표준 프로토콜로 추상화하면 Pylance 외 다른 도구도 동일한 타입 서버를 재사용할 수 있어 생태계 호환성이 넓어진다.
Microsoft가 Python 정적 분석 도구 Pylance의 저장소를 통해 'Type Server Protocol(TSP)' 문서를 공개했다. TSP는 JSON-RPC 기반 프로토콜로, 타입 서버가 Python 코드의 타입 분석 데이터를 제공하는 방식을 정의하며 현재 버전은 0.4.1이다.
Microsoft가 Pylance 공식 저장소(microsoft/pylance-release)에 Type Server Protocol(TSP) 사양 문서를 공개했다. TSP는 JSON-RPC 기반 프로토콜로, 타입 서버(type server)가 Python 코드의 분석 상태를 유지하면서 클라이언트 요청에 응답하는 방식을 규정한다.
프로토콜이 다루는 범위는 프로토콜 버전 조회, 스냅샷, Python 검색 경로, 임포트 해석, 그리고 타입 쿼리(계산된 타입·선언된 타입·예상 타입)다. 데이터 형식은 Language Server Protocol(LSP)의 `Position`, `Range` 등 기존 규약을 최대한 재활용하며, URI 표현 방식도 LSP와 동일하게 문자열로 처리한다. 모든 메서드에는 `typeServer/` 접두어가 붙는다.
프로토콜 명세는 세 파일로 구성된다. TypeScript 인터페이스와 요청 타입을 정의한 `typeServerProtocol.ts`, 기계 판독 가능한 모델 파일 `tsp.json`, JSON 스키마 파일 `tsp.schema.json`이다. 버전 관리는 시맨틱 버전을 따르되, 0.x 구간에서는 마이너 버전 변경이 하위 호환을 깨뜨릴 수 있다.
버전 이력을 보면 0.1.0에서 초기 프로토콜이 출발했고, 0.2.0에서 요청 타입·필드가 추가됐다. 0.3.0에서 복잡한 타입 형태로 전환됐으며, 0.4.0에서는 `Type` 유니온과 스텁 기반 타입 페이로드 구조로 바뀌었다. 최신 버전인 0.4.1에서는 다중 연결 협상(multi-connection negotiation)과 `typeServer/connection` 제어 요청이 추가됐다.