def main(csv, interactive, cjk_support, conf, yaml, package_yaml, sponsor_yaml,
         output_path):
    conf_singlet = report_generatorconfig.Configuration.get_instance()
    conf_singlet.read_configuration(template)
    if conf:
        logger.debug("User customized conf is specified: %s" % conf_singlet)
        conf_singlet.read_configuration(conf)

    # welcome user, ask year of data
    year = vtext.welcome_ask_year(interactive)

    frames = []
    for csv_single in csv:
        csv_index = csv.index(csv_single)

        df = report_generatorcsv.csv_to_dataframe(csv_single)

        # select necessary columns from df
        df = vtext.select_column(df, interactive, csv_index)

        frames.append(df)

    df_all = pd.concat(frames, join="outer", axis=0, ignore_index=True)

    # all raw data is imported. let's call analyzer to do something
    df_all = ag.add_cat_title(df_all)
    df_all = df_all.fillna(value="No Record")
    df_all = ag.get_sanity_data(df_all, cjk_support)

    # all datafram general data object
    df_all_g_data_obj = attendee.Attendee(df_all)

    # analyzed data frame is ready. let's plot
    figs = plotter.plot_counts(df_all, year, cjk_support)

    # read the other report data
    report_yaml = report_generatoryaml.read_yaml(yaml)

    sponsors = apsponsor.get_all_sponsors(package_yaml, sponsor_yaml)

    # generate the report
    # general info (everyone could see it):
    #   figs: plots from attendee dataframe
    #   df_all_g_data_obj: numbers from attendee dataframe
    #   report_yaml: plot description of figs
    # sponsors:
    #   sponsor specific information based on yaml descriptor
    exporter_html.generate(figs, report_yaml, df_all_g_data_obj, sponsors,
                           output_path)

    print("Analysis process finished completely.")
def main(
    csv,
    talks_csv,
    proposed_talks_csv,
    booth_csv,
    interactive,
    cjk_support,
    conf,
    yaml,
    package_yaml,
    sponsor_yaml,
    output_path,
):
    conf_singlet = report_generatorconfig.Configuration.get_instance()
    conf_singlet.read_configuration(template)
    if conf:
        logger.debug("User customized conf is specified: %s" % conf_singlet)
        conf_singlet.read_configuration(conf)

    # welcome user, ask year of data
    year = vtext.welcome_ask_year(interactive)

    frames = []
    for csv_single in csv:
        csv_index = csv.index(csv_single)

        df = report_generatorcsv.csv_to_dataframe(csv_single)

        # select necessary columns from df
        df = vtext.select_column(df, interactive, csv_index)

        frames.append(df)

    df_all = pd.concat(frames, join="outer", axis=0, ignore_index=True)

    # all raw data is imported. let's call analyzer to do something
    df_all = ag.add_cat_title(df_all)
    df_all = df_all.fillna(value="No Record")
    df_all = ag.get_sanity_data(df_all, cjk_support)

    # all datafram general data object
    df_all_g_data_obj = attendee.Attendee(df_all)

    # analyzed data frame is ready. let's plot attendee data
    figs = plotter.plot_attendee_counts(df_all, year, cjk_support)

    # prepared the selected topic pie chart
    talks_df = report_generatorcsv.csv_to_dataframe(talks_csv)
    talks_fig = plotter.plot_talk_categories(talks_df)
    figs.update(talks_fig)

    # prepared the proposed topic pie chart
    p_talks_df = report_generatorcsv.csv_to_dataframe(proposed_talks_csv)
    p_talks_fig = plotter.plot_talk_categories(p_talks_df,
                                               fig_title="Proposed_Topics")
    figs.update(p_talks_fig)

    booth_df = report_generatorcsv.csv_to_dataframe(booth_csv)
    # TODO: if we want to enhance the issue #11 in the future like #23, we may start here by using the returned value
    plotter.plot_booth(booth_df, "booth")

    # read the other report data
    report_yaml = report_generatoryaml.read_yaml(yaml)

    sponsors = apsponsor.get_all_sponsors(package_yaml, sponsor_yaml)

    accepted_talk_number = talks_df["category"].value_counts().sum()
    all_talk_number = p_talks_df["category"].value_counts().sum()
    talk_info_ratio = accepted_talk_number / all_talk_number
    talk_info = "{:.1%}".format(talk_info_ratio)
    # generate the report
    # general info (everyone could see it):
    #   figs: plots from attendee dataframe and talks
    #   df_all_g_data_obj: numbers from attendee dataframe
    #   report_yaml: plot description of figs
    # sponsors:
    #   sponsor specific information based on yaml descriptor
    exporter_html.generate(figs,
                           report_yaml,
                           df_all_g_data_obj,
                           sponsors,
                           talk_info,
                           "sponsor.html",
                           output_path=output_path)

    # summary for internal review
    exporter_html.generate_summary(figs, report_yaml, df_all_g_data_obj,
                                   sponsors, talk_info, "internal.html",
                                   "internal-post-event", output_path)

    print("Analysis process finished completely.")