TypeChecking 경고

seokj·2023년 1월 12일
0

파이썬은 다이나믹 타이핑 언어이기 때문에 런타임시간에 자료형이 결정된다. 그래서 코드편집기에서 정적 타이핑 언어처럼 코딩하는 도중에 변수가 어떤 타입이 될지 미리 평가할 수 없기 때문에 자동완성을 사용할 수 없거나 하이라이팅이 안되는 경우가 종종 있다. VsCode의 TypeChecking 옵션을 켜면 미리 자료형을 평가할 수 있는 대신 덕타이핑이 없어져 여러 군데에 타입이 안 맞다는 경고 줄이 그일 수 있다.


PyTorch는 torch아래 backends라는 하위 모듈이 있지만 import torch만으로는 torch.backends에 접근할 수 없다는 메시지가 나온다. 이는 torch가 py.typed라이브러리이기 때문이다. py.typed라이브러리일 경우 명시적으로 하위 모듈 중 어떤 모듈을 사용할 건지 직접 import해야 인식한다. 즉 import torch.backendsfrom torch import backends로 import해야한다.

같은 원리가 sklearn의 model_selection에도 적용된다.


opencv-python을 import cv2로 가져오면 property가 모두 Unknown으로 나오는 현상이 있다. cv2가 type checking을 제대로 지원하지 않아 생기는 문제이다. type checking을 cv2에만 제외하는 설정인 --extension-pkg-whitelist=cv2Preference SettingsPylint Args에 추가하여 해결한다.


sklearn.model_selection.train_test_split함수는 list[Unknown | list[Unknown]형을 반환한다. 따라서 type checking이 제대로 되지 않는다. cv2.resize함수는 Mat형을 반환하는데 자동으로 numpy.array형으로 형변환되기 때문에 실행할 때는 상관없지만 type checking은 이상하게 되는 문제가 발생한다.


다양한 문제가 있는 것으로 보아 type checking은 안 하는 것이 현명한 것 같다.


참고자료
https://github.com/microsoft/pyright/issues/2232#issuecomment-907299720

profile
안녕하세요

0개의 댓글