| """ | |
| 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) | |