def _pd_df_cols_match_metadata_cols(df, table_metadata):
    """
    Is the set of columns in the metadata equal to the set of columns in the dataframe?

    This check is irrespective of column order, does not check for duplicates.
    """

    pd_columns = set(df.columns)
    md_columns = set([c["name"] for c in table_metadata["columns"]])

    return pd_columns == md_columns