20년 된 Python 라이브러리 재작성하기
akismet Python 라이브러리는 2005년부터 Akismet 스팸 필터링 API 클라이언트로 사용되어 왔으며, 최근 완전한 리팩토링을 거쳐 최신 Python 환경에 맞게 재설계되었습니다.
비동기(async/await) 지원과 Akismet API의 세 가지 스팸 판정 상태(정상, 스팸, 명백한 스팸)를 반영하기 위해 기존의 클래스 기반 설계를 유지하되, 동기와 비동기 클라이언트를 분리하여 각각 SyncClient와 AsyncClient 클래스로 구현하였습니다.
내부 HTTP 요청은 httpx 라이브러리로 처리하며, 사용자 지정 HTTP 클라이언트 주입을 지원해 프록시 설정이나 테스트용 모킹이 용이하도록 설계되었습니다.
또한, 테스트 편의성을 위해 MockTransport 기반의 테스트 클라이언트를 제공하고, pytest 플러그인을 통해 간편한 의존성 주입과 다양한 테스트 시나리오 구성이 가능하도록 하였습니다.
이러한 개선으로 기존 환경 변수 기반 설정과 호환성을 유지하면서도, 현대적인 Python 개발 패턴과 API 사용성을 크게 향상시킨 점이 실용적 가치로 꼽힙니다.