Python MonkeyType으로 타입 주석 생성하기
오늘은 Python에서 타입 힌트에 필요한 주석을 자동으로 생성해주는 MonkeyType에 대하여 알아보려 합니다.
개요
타입을 부여해야 할 모듈에 타입 스텁 파일을 생성하거나, 타입 주석을 코드에 작성해주는 라이브러리입니다.
Github
https://github.com/Instagram/MonkeyType
라이선스
BSD 라이선스입니다.
설치
우선 virtualenv로 파이썬 환경을 분리해줍니다.
pip3 install virtualenv
virtualenv -mvenv env
env라는 이름의 가상 환경을 생성합니다.
source env/bin/activate
가상환경을 폴더에서 활성화합니다.
pip install MonkeyType
pip로 MonkeyType을 설치합니다.
실습
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
우선 타입 힌트가 적용되지 않은 모듈을 하나 만들어보려 합니다.
예시로 test_module이라고 합니다.
from test_module import add, sub, mul, div
if __name__ == '__main__':
a = add(2, 1)
b = sub(2, 1)
c = mul(2, 1)
d = div(2, 1)
print(a, b, c, d)
test_module이라고 지은 외부 파이썬 파일에서 모든 함수를 가져옵니다.
monkeytype run main.py
외부 파이썬 파일을 쓰는 메인 함수의 파이썬 파일을 대상으로 실행하면 monkeytype.sqlite3 파일이 생성되면서 콜 트레이스를 덤프합니다.
monkeytype stub test_module
test_module에 대하여 stub 명령을 입력하면 아래와 같이 출력됩니다.
def add(a: int, b: int) -> int: ...
def div(a: int, b: int) -> float: ...
def mul(a: int, b: int) -> int: ...
def sub(a: int, b: int) -> int: ...
변수와 함수에 타입 힌트가 적용됨을 알 수 있습니다.
monkeytype apply test_module
test_module에 대하여 apply 명령을 입력하면 아래와 같이 코드에도 적용됨을 알 수 있습니다
def add(a: int, b: int) -> int:
return a + b
def sub(a: int, b: int) -> int:
return a - b
def mul(a: int, b: int) -> int:
return a * b
def div(a: int, b: int) -> float:
return a / b
Written on April 3, 2019