"""
Symbols cache — preloads instrument info for faster lookups.
"""
import logging
from src.exchange.client import BybitFuturesClient
logger = logging.getLogger(__name__)
def preload_instruments(client: BybitFuturesClient, symbols: list[str] | None = None):
"""
Preload instrument info into client cache.
Args:
client: BybitFuturesClient instance
symbols: specific symbols to preload, or None for all linear USDT
"""
if symbols:
for sym in symbols:
client.get_instrument_info(sym)
logger.info(f"Preloaded {len(symbols)} instruments")
return
# Load all linear instruments
try:
resp = client.session.get_instruments_info(category="linear")
result = client._check(resp, "preload_instruments")
count = 0
for item in result.get("list", []):
sym = item.get("symbol", "")
if sym.endswith("USDT"):
client._instruments_cache[sym] = item
count += 1
logger.info(f"Preloaded {count} USDT linear instruments")
except Exception as e:
logger.error(f"Failed to preload instruments: {e}")