5 Commits (674b7e45c8c79f3617dee9cffdd3f1438e4852cf)

Author SHA1 Message Date
I Luk Kim 674b7e45c8 feat: EnhancedTicker.info property — sector/industry/country 지원
curl_cffi 커스텀 세션으로 yfinance .info를 호출하면 quoteSummary
일부 엔드포인트가 응답 누락되어 sector/industry/country 필드가 빠짐.
명시적 @property info를 추가하여 vanilla yf.Ticker(symbol).info를
호출 (공유 adaptive rate limiter는 그대로 사용), 모든 필드 반환.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4 months ago
I Luk Kim 343aac090d feat: 세션 풀 다양화 + Adaptive throttling + 모듈 싱글톤
- 브라우저 핑거프린트 풀 (_BROWSER_PROFILES): chrome/edge/safari/firefox 6개 프로파일
- EnhancedTicker별 전용 세션 할당으로 스레드 간 세션 공유 문제 해결
- 모듈 레벨 싱글톤 (_get_global_enhanced_yf): 모든 Ticker() 호출이 하나의
  EnhancedYFinance 인스턴스를 공유 → rate limiter 조율
- 모듈 레벨 공유 rate limiter (_global_rate_limit_delay): 0.3s baseline,
  rate limit 감지 시 자동 증가, 성공 시 점진적 감소 (adaptive throttling)
- rate limit 발생 시 on_rate_limit_cb로 ticker의 세션도 함께 교체

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim 9fae52e7dc fix(cache): period=None 시 AttributeError 수정
start/end 날짜 범위로 history()를 호출할 때 period=None을 전달하면
_normalize_period_to_days()에서 None.lower()가 호출되어
AttributeError: 'NoneType' object has no attribute 'lower' 발생.

- _normalize_period_to_days(): None 가드 추가, str() 래핑으로 안전 처리
- get(): period=None이면 즉시 None 반환
- store(): period=None이면 즉시 반환 (date-range 요청은 피클 캐시 생략)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim d18976d4aa first commit 1 year ago
I Luk Kim cc43298cbd first commit 1 year ago