diff --git a/hed/schema/hed_schema.py b/hed/schema/hed_schema.py index 1a2ea9419..cc8d37bff 100644 --- a/hed/schema/hed_schema.py +++ b/hed/schema/hed_schema.py @@ -327,6 +327,8 @@ def save_as_dataframes(self, base_filename, save_merged=False): - File cannot be saved for some reason. """ output_dfs = Schema2DF().process_schema(self, save_merged) + if hasattr(self, 'extras') and self.extras: + output_dfs.update(self.extras) df_util.save_dataframes(base_filename, output_dfs) def set_schema_prefix(self, schema_namespace): diff --git a/hed/schema/hed_schema_df_constants.py b/hed/schema/hed_schema_df_constants.py index b6c59e45c..3e61342f2 100644 --- a/hed/schema/hed_schema_df_constants.py +++ b/hed/schema/hed_schema_df_constants.py @@ -23,12 +23,12 @@ PROPERTY_KEYS = [ANNOTATION_KEY, DATA_KEY, OBJECT_KEY] DF_SUFFIXES = {TAG_KEY, STRUCT_KEY, VALUE_CLASS_KEY, UNIT_CLASS_KEY, UNIT_KEY, UNIT_MODIFIER_KEY, - *PROPERTY_KEYS, ATTRIBUTE_PROPERTY_KEY} + *PROPERTY_KEYS, ATTRIBUTE_PROPERTY_KEY, PREFIXES_KEY, EXTERNAL_ANNOTATION_KEY} DF_EXTRA_SUFFIXES = {PREFIXES_KEY, EXTERNAL_ANNOTATION_KEY} -DF_SUFFIXES_OMN = {*DF_SUFFIXES, *DF_EXTRA_SUFFIXES} - +#DF_SUFFIXES_OMN = {*DF_SUFFIXES, *DF_EXTRA_SUFFIXES} +DF_SUFFIXES_OMN = DF_SUFFIXES section_mapping_hed_id = { STRUCT_KEY: None, diff --git a/hed/schema/schema_io/df2schema.py b/hed/schema/schema_io/df2schema.py index db43ec6f4..68ccba546 100644 --- a/hed/schema/schema_io/df2schema.py +++ b/hed/schema/schema_io/df2schema.py @@ -83,6 +83,8 @@ def _parse_data(self): f"{len(self.fatal_errors)} issues found when parsing schema. See the .issues " f"parameter on this exception for more details.", self.name, issues=self.fatal_errors) + extras = {key: self.input_data[key] for key in constants.DF_EXTRA_SUFFIXES if key in self.input_data} + self._schema.extras = extras def _get_prologue_epilogue(self, file_data): prologue, epilogue = "", "" diff --git a/tests/schema/test_hed_schema_io_df.py b/tests/schema/test_hed_schema_io_df.py index a0bdd96ee..2750b5fd0 100644 --- a/tests/schema/test_hed_schema_io_df.py +++ b/tests/schema/test_hed_schema_io_df.py @@ -51,9 +51,12 @@ def test_from_dataframes(self): filenames = convert_filenames_to_dict(filename) new_file_strings = {} for key, value in filenames.items(): - with open(value, "r") as f: - all_lines = f.readlines() - new_file_strings[key] = "".join(all_lines) + try: + with open(value, "r") as f: + all_lines = f.readlines() + new_file_strings[key] = "".join(all_lines) + except FileNotFoundError as e: + pass reloaded_schema = from_dataframes(new_file_strings) self.assertEqual(schema, reloaded_schema)