# Path: kquant_data/config.py
# __CONFIG_H5_OPT_DIR__ = r'D:\DATA_OPT'
# 
# Path: kquant_data/xio/csv.py
# def read_data_dataframe(path, sep=','):
#     """
#     读取季报的公告日
#     注意：有些股票多个季度一起发，一般是公司出问题了，特别是600878，四个报告同一天发布
#     年报与一季报很有可能一起发
#     :param path:
#     :param sep:
#     :return:
#     """
#     try:
#         df = pd.read_csv(path, index_col=0, parse_dates=True, encoding='utf-8-sig', sep=sep)
#     except (FileNotFoundError, OSError):
#         return None
# 
#     return df


import os
from ..config import __CONFIG_H5_OPT_DIR__
from ..xio.csv import read_data_dataframe
10001027	510050C1806A02800	50ETF购6月2.749A	10185	10/26/2017 0:00
10001131	510050C1806M02750	50ETF购6月2.75	10000	12/1/2017 0:00

    由于执行价重复，所以不同软件显示不同
    万得和通达信都列出了两个6月，另一个是6月-A

    wind_code 不会变，但对应的trade_code和exx_price是发生变动的
    :param path:
    :return:
    """
    df = read_data_dataframe(path)
    df_extract1 = df['trade_code'].str.extract('(\d{6})([CP])(\d{4})(\D)\d{4, 5}', expand=True)
    df_extract1.columns = ['option_mark_code', 'call_or_put', 'limit_month', 'limit_month_m']
    df_extract1['limit_month'] = df_extract1['limit_month'].astype(int)
    # 这个以后再拼接也成
    # df_extract1['option_mark_code'] = df_extract1['option_mark_code'] + '.SH'

    # 已经退市sec_name会变，主要是年份的区别
    df_extract2 = df['sec_name'].str.split('月', expand=True)
    df_extract2[1] = df_extract2[1].str.extract('([\d\.-]*)', expand=True)
    df_extract2[1] = df_extract2[1].astype(float)
    df_extract2.columns = ['tmp', 'exercise_price']

    df = df.merge(df_extract1, how='left', left_index=True, right_index=True)
    df = df.merge(df_extract2[['exercise_price']], how='left', left_index=True, right_index=True)
    df.index = df.index.astype(str)
    return df


def get_opt_info(filename):

# Path: kquant_data/config.py
# __CONFIG_H5_OPT_DIR__ = r'D:\DATA_OPT'
# 
# Path: kquant_data/xio/csv.py
# def read_data_dataframe(path, sep=','):
#     """
#     读取季报的公告日
#     注意：有些股票多个季度一起发，一般是公司出问题了，特别是600878，四个报告同一天发布
#     年报与一季报很有可能一起发
#     :param path:
#     :param sep:
#     :return:
#     """
#     try:
#         df = pd.read_csv(path, index_col=0, parse_dates=True, encoding='utf-8-sig', sep=sep)
#     except (FileNotFoundError, OSError):
#         return None
# 
#     return df


# Path: kquant_data/option/info.py
import os
from ..config import __CONFIG_H5_OPT_DIR__
from ..xio.csv import read_data_dataframe

10001027	510050C1806A02800	50ETF购6月2.749A	10185	10/26/2017 0:00
10001131	510050C1806M02750	50ETF购6月2.75	10000	12/1/2017 0:00

    由于执行价重复，所以不同软件显示不同
    万得和通达信都列出了两个6月，另一个是6月-A

    wind_code 不会变，但对应的trade_code和exx_price是发生变动的
    :param path:
    :return:
    """
    df = read_data_dataframe(path)
    df_extract1 = df['trade_code'].str.extract('(\d{6})([CP])(\d{4})(\D)\d{4, 5}', expand=True)
    df_extract1.columns = ['option_mark_code', 'call_or_put', 'limit_month', 'limit_month_m']
    df_extract1['limit_month'] = df_extract1['limit_month'].astype(int)
    # 这个以后再拼接也成
    # df_extract1['option_mark_code'] = df_extract1['option_mark_code'] + '.SH'

    # 已经退市sec_name会变，主要是年份的区别
    df_extract2 = df['sec_name'].str.split('月', expand=True)
    df_extract2[1] = df_extract2[1].str.extract('([\d\.-]*)', expand=True)
    df_extract2[1] = df_extract2[1].astype(float)
    df_extract2.columns = ['tmp', 'exercise_price']

    df = df.merge(df_extract1, how='left', left_index=True, right_index=True)
    df = df.merge(df_extract2[['exercise_price']], how='left', left_index=True, right_index=True)
    df.index = df.index.astype(str)
    return df


def get_opt_info(filename):

    root_path = os.path.join(__CONFIG_H5_OPT_DIR__, 'optioncontractbasicinfo', filename)