Type Server Protocol - Python 타입 분석 데이터를 조회하는 JSON-RPC 프로토콜

1 week ago 13

Type Server Protocol(TSP) 은 워크스페이스의 타입 분석 상태를 유지하는 서버에 Python 검색 경로, import 해석, 타입 정보를 요청하는 JSON-RPC 프로토콜임 타입 질의는 코드 흐름에서 추론한 계산된 타입, 소스에 명시한 선언 타입, 주변 문맥이 요구하는 기대 타입을 구분함 분석 결과는 스냅샷에 종속되며, 문서나 설정 변경 등으로 기존 결과가 유효하지 않을 수 있으면 서버가 스냅샷을 갱신함 선택적 다중 연결 모드는 읽기 전용 질의를 추가 로컬 채널로 분산함. 상태 변경은 기본 연결에서만 처리하며, 단일 연결만으로도 올바르게 동작해야 함 LSP의 위치 규칙과 초기화 방식을 활용하지만 별도의 typeServer/ 메서드를 사용함. 0.x 버전에서는 마이너 버전 변경도 호환성을 깨뜨릴 수 있음 프로토콜 목적과 기준 정의 TSP는 Python 타입 분석 데이터를 조회하기 위한 프로토콜로, 서버가 워크스페이스의 분석 상태를 유지하고 버전, 스냅샷, 검색 경로, import 해석, 타입 질의에 응답함 LSP의 Position, Range 등 데이터 구조와 관례를 활용하며, URI는 문자열로 나타내고 메서드에는 typeServer/ 접두사를 사용함 정확한 인터페이스와 메시지 형식은 다음 파일을 기준으로 함 typeServerProtocol.ts는 TypeScript 인터페이스와 요청 타입을 정의함 tsp.json은 기계 판독 가능한 프로토콜 모델임 tsp.schema.json은 프로토콜 모델의 JSON 스키마임 버전과 호환성 클라이언트와 서버는 시맨틱 버전 문자열로 호환성을 확인함. 0.x에서는 마이너 버전 변경이 비호환 변경을 포함할 수 있으며, 패치 버전은 같은 마이너 버전 내에서 하위 호환성을 유지함 버전별 변경은 다음과 같음 0.1.0: 초기 프로토콜 버전임 0.2.0: 요청 타입과 필드를 추가함 0.3.0: 더 복잡한 타입 구조로 전환함 0.4.0: Type 유니온과 스텁 기반 타입 페이로드로 전환함 0.4.1: 다중 연결 협상과 typeServer/connection 제어 요청을 추가함 연결 모델과 시작 순서 클라이언트는 서버를 시작하거나 연결한 뒤, 서버가 지원하는 stdio 또는 Node IPC 등의 전송 방식으로 기본 JSON-RPC 연결을 구성함 stdio를 사용하면 stdout은 JSON-RPC 프로토콜 메시지 전용이어야 함 서버에는 지원하는 요청에 답할 수 있을 만큼의 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵