"""
Ticker and Free Float Data Loaders
"""
import os


def load_tickers(ticker_file: str = "tickers_idx.txt") -> list[str]:
    """
    Load ticker list dari file.

    Args:
        ticker_file: Path ke file ticker (default tickers_idx.txt)

    Returns:
        List of ticker codes dengan .JK suffix
    """
    with open(ticker_file) as f:
        codes = [line.strip() for line in f if line.strip()]
    return [f"{code}.JK" for code in codes]


def load_free_float(free_float_file: str = "free_float_idx.csv") -> dict:
    """
    Baca cache free_float_idx.csv (dari update_free_float.py).
    Return dict {kode_saham: persen_free_float}. Kalau file belum ada,
    return dict kosong (semua saham diperlakukan 'data gak tersedia').

    Args:
        free_float_file: Path ke file free float CSV (default free_float_idx.csv)

    Returns:
        Dict mapping ticker code ke free float percentage
    """
    if not os.path.exists(free_float_file):
        print(f"[WARN] {free_float_file} belum ada - jalankan update_free_float.py dulu "
              f"kalau mau filter free float aktif penuh.")
        return {}

    free_float_map = {}
    with open(free_float_file) as f:
        next(f)  # skip header
        for line in f:
            parts = line.strip().split(",")
            if len(parts) == 2 and parts[1]:
                try:
                    free_float_map[parts[0]] = float(parts[1])
                except ValueError:
                    continue
    return free_float_map
