Pydantic 이란?
Data validation, settings management 라이브러리
Type Hint를 런타임에서 강제해 안전하게 데이터 핸들링
파이썬 기본 타입(String, int, …) + List, Dict, Tuple에 대한 Validation 지원
머신러닝 feature data validation으로 활용 가능
인풋 데이터가 아래 조건을 만족해야 한다고 가정하자
url: 올바른 url을 입력 받음
rate: 1~10 사이의 정수를 입력 받음
target_dir: 올바른 폴더 이름을 입력 받음

의미 없는 코드가 많아짐
복잡한 검증 로직

인스턴스 생성 시점에 validation 수행이 쉬움
여전히 validation 로직을 직접 작성해야 함

훨씬 간결해진 코드
주로 쓰이는 타입 (HTTP url, DB url, enum 등)에 대한 validation이 이미 만들어져 있음
런타임에서 Type Hint에 따라 Validation Error 발생
Custom Type에 대한 Validation도 쉽게 사용 가능
에러가 날 경우 어디서 에러가 발생했는지 location, type, message 등 알림
Config을 체계적으로 관리할 방법 제공
기존 다른 라이브러리들은 어떻게 Config를 설정하고 있을까?
설정을 상수로 코드에 저장 ⇒ Twelve-Factor 위반
Twelve-Factor는 설정을 코드에서 엄격히 분리할 것을 요구
하드코딩 자제하고 config.yaml 같은 파일에 저장할 것
.ini, .yaml 파일에 config 설정
변경사항이 생길 때 유연하게 코드 변경 어려움
결국은 하드코딩 하는 형태
flask-style config.py
config 클래스에서 yaml, ini 파일을 불러와 python class 필드로 주입
config를 상속한 클래스에서는 config 클래스 정보를 오버라이딩해서 사용
validation 또는 오버라이딩을 하려면 코드량이 늘어남
pydantic base settings
Pydantic의 BaseSettings를 상속한 클래스에서 Type Hint로 주입된 설정 데이터를 검증할 수 있음
yaml, ini 파일을 추가적으로 만들지 않고, .env 파일들을 환경별로 만들어 두거나 실행 환경에서 유연하게 오버라이딩
※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※