Example #1
0
    def get_data(self, df: pd.DataFrame,) -> Union[str, List[Dict[str, Any]]]:
        if self.result_format == ChartDataResultFormat.CSV:
            include_index = not isinstance(df.index, pd.RangeIndex)
            result = csv.df_to_escaped_csv(
                df, index=include_index, **config["CSV_EXPORT"]
            )
            return result or ""

        return df.to_dict(orient="records")
    def get_data(self, df: pd.DataFrame) -> Union[str, List[Dict[str, Any]]]:
        if self._query_context.result_format == ChartDataResultFormat.CSV:
            include_index = not isinstance(df.index, pd.RangeIndex)
            columns = list(df.columns)
            verbose_map = self._qc_datasource.data.get("verbose_map", {})
            if verbose_map:
                df.columns = [verbose_map.get(column, column) for column in columns]
            result = csv.df_to_escaped_csv(
                df, index=include_index, **config["CSV_EXPORT"]
            )
            return result or ""

        return df.to_dict(orient="records")
Example #3
0
def test_df_to_escaped_csv():
    csv_rows = [
        ["col_a", "=func()"],
        ["-10", "=cmd|' /C calc'!A0"],
        ["a", '""=b'],
        [" =a", "b"],
    ]
    csv_str = "\n".join([",".join(row) for row in csv_rows])

    df = pd.read_csv(io.StringIO(csv_str))

    escaped_csv_str = csv.df_to_escaped_csv(df, encoding="utf8", index=False)
    escaped_csv_rows = [row.split(",") for row in escaped_csv_str.strip().split("\n")]

    assert escaped_csv_rows == [
        ["col_a", "'=func()"],
        ["-10", "'=cmd\|' /C calc'!A0"],
        ["a", "'=b"],  # pandas seems to be removing the leading ""
        ["' =a", "b"],
    ]

    df = pa.array([1, None]).to_pandas(integer_object_nulls=True).to_frame()
    assert csv.df_to_escaped_csv(df, encoding="utf8", index=False) == '0\n1\n""\n'
Example #4
0
def test_df_to_escaped_csv():
    csv_rows = [
        ["col_a", "=func()"],
        ["-10", "=cmd|' /C calc'!A0"],
        ["a", '""=b'],
        [" =a", "b"],
    ]
    csv_str = "\n".join([",".join(row) for row in csv_rows])

    df = pd.read_csv(io.StringIO(csv_str))

    escaped_csv_str = csv.df_to_escaped_csv(df, encoding="utf8", index=False)
    escaped_csv_rows = [row.split(",") for row in escaped_csv_str.strip().split("\n")]

    assert escaped_csv_rows == [
        ["col_a", "'=func()"],
        ["-10", "'=cmd\|' /C calc'!A0"],
        ["a", "'=b"],  # pandas seems to be removing the leading ""
        ["' =a", "b"],
    ]