"""逐只 pro.daily 不带日期边界时的 6000 行上限验证（对修复工具的输入口径直接相关）。
用法: ./zt_venv/bin/python code/_chk_daily_cap_probe.py
"""
import os, time
import pandas as pd

os.environ.setdefault('HTTP_PROXY', 'http://127.0.0.1:7897')
os.environ.setdefault('HTTPS_PROXY', 'http://127.0.0.1:7897')
import tushare as ts
ts.set_token('edf6739fe1a4de0d747600cc753a8b4bf335cf27ef0f5aea2d2aa64c')
pro = ts.pro_api()

for code in ['000001.SZ', '600000.SH', '600705.SH', '300091.SZ']:
    for _ in range(3):
        try:
            q = pro.daily(ts_code=code)
            if q is not None and len(q):
                break
        except Exception:
            pass
        time.sleep(2)
    if q is None or not len(q):
        print(code, "无返回"); continue
    q = q.sort_values('trade_date')
    print(f"{code}: 无日期参数 -> {len(q)} 行, {q['trade_date'].iloc[0]} ~ {q['trade_date'].iloc[-1]}"
          f" | 是否命中 6000 上限: {len(q)==6000}")
    for _ in range(3):
        try:
            q2 = pro.daily(ts_code=code, start_date='20210101', end_date='20260911')
            if q2 is not None and len(q2):
                break
        except Exception:
            pass
        time.sleep(2)
    q2 = q2.sort_values('trade_date')
    print(f"    带日期边界 -> {len(q2)} 行, {q2['trade_date'].iloc[0]} ~ {q2['trade_date'].iloc[-1]}")
    time.sleep(0.3)
