파이썬 타입 검사기, 규정 준수 얼마나 잘할까?
파이썬 타입 검사기(Type Checker)가 타입 명세(Typing Specification)를 얼마나 정확히 준수하는지 평가하는 글이 게시됨
mypy는 업계 표준이지만, 규정 준수율이 낮아 오류 발생 가능성(Error Occurrence)이 높다는 점이 지적됨
Pyright, Zuban 등은 높은 규정 준수율을 보이며, 향상된 개발 경험(Improved Developer Experience)을 제공할 것으로 기대됨
규정 준수 외에도 추론 품질(Inference Quality), 성능(Performance), IDE 통합(IDE Integration) 등 다양한 요소를 고려해야 함
타입 검사기 규정 준수(Conformance)의 중요성
본문에서는 타입 검사기의 규정 준수 여부가 개발 경험에 미치는 영향을 강조한다. 규정 준수율이 낮으면, 개발자는 타입 검사기의 제약(Limitations)으로 인해 코드 구조를 변경하거나, 불필요한 캐스팅(Casting)을 추가해야 할 수 있다. 특히, 라이브러리 사용 시 호환성 문제(Compatibility Issues)가 발생하여, 개발 생산성을 저해할 수 있다.
주요 타입 검사기 성능 비교
게시된 표에 따르면, Pyright는 97.8%의 높은 규정 준수율을 보이며, Zuban 역시 96.4%로 우수한 성능을 나타냈다. 반면, 업계 표준인 mypy는 58.3%의 낮은 규정 준수율을 기록하여, 오류 발생 빈도(Error Frequency)가 높을 수 있음을 시사한다. Pyrefly, ty, Zuban은 현재 베타 버전으로, 지속적인 개선이 이루어질 것으로 예상된다.
규정 준수가 측정하지 못하는 요소
규정 준수는 타입 검사기의 기능 완성도를 측정하는 데 유용하지만, 타입 추론(Type Inference), 타입 좁히기(Type Narrowing) 등 중요한 측면을 완전히 반영하지 못한다. 특히, 타입 검사기는 빈 컨테이너 추론(Empty Container Inference)과 같은 영역에서 서로 다른 동작을 보일 수 있다. 따라서, 개발자는 규정 준수 외에도 다양한 요소를 고려해야 한다.
타입 검사기 선택 시 고려 사항
타입 검사기 선택 시, 규정 준수 외에도 추론 품질, 성능, IDE 통합, 오류 메시지, 서드파티 패키지 지원 등을 고려해야 한다. 예를 들어, Django, Pydantic과 같은 패키지는 특별한 처리가 필요하며, 이는 타입 어노테이션(Type Annotation)으로 표현하기 어려울 수 있다. 따라서, 개발 환경에 맞는 타입 검사기를 선택하는 것이 중요하다.