Skip to content

Feat: Added support for handling login flow on the KRX (Korea Exchange) website

Latest

Choose a tag to compare

@seohyunjun seohyunjun released this 04 May 09:58
· 6 commits to master since this release
fb0d9b3

Release Notes (v1.2.0 ~ v1.2.8)

이번 릴리스에서는 KRX 로그인 정책 변경에 대응하는 세션 관리 시스템을 새롭게 도입하였으며, 시장 OHLCV 조회 API 추가, ETF 구조 업데이트, pandas/numpy 호환성 개선 등 다양한 기능 강화와 안정화 작업을 진행했습니다.

🛠 주요 변경 사항 (Core Improvements)

  • KRX 로그인 / 세션 관리 시스템 도입
    • pykrx/website/comm/auth.py 신규 추가 — KRXSession 클래스를 통해 JSESSIONID 쿠키를 관리하고 세션 만료(1시간)를 추적
    • 만료 5분 전 자동 재로그인 로직으로 장시간 실행 시에도 인증 상태 유지
    • 환경 변수(KRX_ID, KRX_PW)를 통한 자격 증명 주입을 지원하여 CI/CD 환경과 통합 가능
    • webio.py 요청 레이어와의 연동으로 기존 코드 변경 없이 인증 세션 자동 적용
  • 빌드 시스템 안정화
    • setuptools_scm의 local_scheme 및 version_scheme 설정 최적화로 PyPI 배포 시 로컬 버전 접미사 제거
    • _version.py 파일을 버전 관리(git)에서 제외하여 빌드 아티팩트가 소스 트리에 혼입되는 문제 해결
  • 테스트 인프라 최적화
    • VCR 카세트 파일 용량을 360MB → 31MB로 대폭 축소하여 저장소 클론 및 CI 캐시 효율 개선

✨ 신규 기능 및 버그 수정 (Features & Fixes)

  • 신규 API: 시장 OHLCV 조회
    • get_market_ohlcv() 함수 추가 — 날짜 범위를 지정하여 전체 시장의 OHLCV 데이터를 한 번에 조회 가능
    • stock_api.py, market/core.py, market/wrap.py 신규 구현 및 통합 테스트 추가 (@seohyunjun)
  • ETF 포트폴리오 예탁 파일 구조 업데이트
    • KRX의 ETF 포트폴리오 예탁 파일 응답에 추가된 신규 컬럼을 반영하여 etx/wrap.py 파싱 로직 업데이트 (@seohyunjun)
  • 버그 수정: resample_ohlcv 리샘플링 주파수
    • pandas 2.2.0에서 월말(M) / 연말(A) deprecated 주파수가 제거됨에 따라 ME / YE로 교체 (@mr-yoo)
  • 의존성 업데이트: numpy 2.0 지원
    • pyproject.toml의 numpy 의존성 하한을 2.0으로 상향하여 최신 numpy와의 호환성 확보 (@seohyunjun)
  • 기타 유지보수 (Maintenance)
    • 버그 리포트, 기능 요청, 질문용 GitHub 이슈 템플릿 3종 추가로 기여 편의성 향상
    • FUNDING.yml 추가 및 README에 스폰서 뱃지 표시
    • README에 KRX API 로그인에 필요한 환경 변수(KRX_ID, KRX_PW) 설정 방법 문서화
    • 카세트 파일 일부 재생성으로 테스트 안정성 보완

👨‍💻 Contributors

이번 릴리스에 기여해 주신 분들께 감사드립니다:

  • @seohyunjun: KRX 세션 관리 시스템, 시장 OHLCV API, ETF 구조 업데이트, numpy 호환성
  • @mr-yoo: 빌드 시스템 개선, 테스트 인프라 최적화, pandas 2.2.0 호환성 수정