You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HTTP request retry logic for transient network failures: Added request_with_retry wrapper with 2 retries and exponential backoff for 5xx status codes and ConnectionError. Applied to BaseExchangeTrader, BaseDataProvider, and UpbitTrader cancel request.
Extract base classes to eliminate code duplication in traders and data providers: Added BaseExchangeTrader with shared logic (timer, callbacks, credentials, HTTP helpers, send_request, cancel_all_requests) and BaseDataProvider with shared HTTP GET + error handling. Refactored UpbitTrader/BithumbTrader (-38% / -34% LOC) and 3 DataProviders (-16~19% LOC).
Introduce TraderFactory to replace hardcoded is_bithumb exchange selection: Replaced boolean is_bithumb flag with exchange code pattern (UPB, BTH) using TraderFactory, consistent with existing StrategyFactory and DataProviderFactory. Backward compatible with legacy numeric trader arguments (0, 1).
Remove hardcoded API credential fallbacks and add validation: Replaced placeholder default values (e.g. "upbit_access_key") with empty strings and added credential validation at API call points. Removed duplicate load_dotenv() calls from trader and telegram modules (already called in config.py via __init__.py).
Pin dependency versions, separate dev dependencies, fix encoding: Pinned compatible version ranges in setup.cfg, moved dev tools (pytest, coverage, pylint, black) to extras_require[dev], added requirements-dev.txt, and fixed requirements.txt UTF-16 encoding to UTF-8.
일시적 네트워크 오류에 대한 HTTP 요청 재시도 로직 추가: 5xx 상태 코드 및 ConnectionError 발생 시 지수 백오프(exponential backoff)로 2회 재시도하는 request_with_retry 래퍼를 추가하였습니다. BaseExchangeTrader, BaseDataProvider, UpbitTrader의 주문 취소 요청에 적용되었습니다.
Trader와 Data Provider의 코드 중복 제거를 위한 베이스 클래스 추출: 타이머, 콜백, 인증정보, HTTP 헬퍼, send_request, cancel_all_requests 등의 공통 로직을 가진 BaseExchangeTrader와, 공통 HTTP GET 및 에러 처리 로직을 가진 BaseDataProvider를 추가하였습니다. UpbitTrader/BithumbTrader는 -38% / -34% LOC, 3개의 DataProvider는 -16~19% LOC 감소하였습니다.
TraderFactory 도입으로 하드코딩된 is_bithumb 거래소 선택 방식 개선: boolean is_bithumb 플래그를 거래소 코드 패턴(UPB, BTH)으로 대체하여 기존의 StrategyFactory, DataProviderFactory와 일관성을 확보하였습니다. 기존의 숫자 인자(0, 1)와도 하위 호환성을 유지합니다.
하드코딩된 API 자격증명 기본값 제거 및 검증 추가: placeholder 기본값(예: "upbit_access_key")을 빈 문자열로 변경하고 API 호출 시점에 자격증명 검증을 추가하였습니다. trader와 telegram 모듈의 중복된 load_dotenv() 호출을 제거하였습니다(config.py의 __init__.py에서 이미 호출됨).
의존성 버전 고정, 개발용 의존성 분리, 인코딩 수정: setup.cfg에 호환 가능한 버전 범위를 고정하고, 개발 도구(pytest, coverage, pylint, black)를 extras_require[dev]로 분리하였으며, requirements-dev.txt를 추가하고 requirements.txt 인코딩을 UTF-16에서 UTF-8로 수정하였습니다.