|
""" |
|
utils.py β Common helpers for CoinDesk API client. |
|
|
|
- Parsing and formatting helpers (e.g., date conversion) |
|
- Logging setup |
|
- Retry/backoff utilities (for transient errors) |
|
""" |
|
|
|
import logging |
|
from datetime import datetime |
|
import time |
|
|
|
def parse_date(date_str): |
|
return datetime.fromisoformat(date_str) |
|
|
|
def setup_logger(name): |
|
logger = logging.getLogger(name) |
|
if not logger.handlers: |
|
handler = logging.StreamHandler() |
|
formatter = logging.Formatter('[%(asctime)s] %(levelname)s %(name)s: %(message)s') |
|
handler.setFormatter(formatter) |
|
logger.addHandler(handler) |
|
logger.setLevel(logging.INFO) |
|
return logger |
|
|
|
def retry(func, retries=3, delay=2): |
|
for attempt in range(retries): |
|
try: |
|
return func() |
|
except Exception as e: |
|
if attempt == retries - 1: |
|
raise |
|
time.sleep(delay) |
|
|