From 8feebf0251b6cd3cf676ead3f8812636e689584a Mon Sep 17 00:00:00 2001 From: zrgt Date: Tue, 5 May 2026 15:29:31 +0200 Subject: [PATCH] fix: LocalFileIdentifiableStore.__iter__ filter non-.json files and use removesuffix --- sdk/basyx/aas/backend/local_file.py | 3 ++- sdk/test/backend/test_local_file.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sdk/basyx/aas/backend/local_file.py b/sdk/basyx/aas/backend/local_file.py index 4008497a..a254c432 100644 --- a/sdk/basyx/aas/backend/local_file.py +++ b/sdk/basyx/aas/backend/local_file.py @@ -161,7 +161,8 @@ def __iter__(self) -> Iterator[model.Identifiable]: """ logger.debug("Iterating over objects in database ...") for name in os.listdir(self.directory_path): - yield self.get_identifiable_by_hash(name.rstrip(".json")) + if name.endswith(".json"): + yield self.get_identifiable_by_hash(name.removesuffix(".json")) @staticmethod def _transform_id(identifier: model.Identifier) -> str: diff --git a/sdk/test/backend/test_local_file.py b/sdk/test/backend/test_local_file.py index adcbfcc7..6ba1d692 100644 --- a/sdk/test/backend/test_local_file.py +++ b/sdk/test/backend/test_local_file.py @@ -107,6 +107,19 @@ def test_key_errors(self) -> None: self.assertEqual("'No AAS object with id https://example.org/Test_Submodel exists in " "local file database'", str(cm.exception)) + def test_iter_ignores_non_json_files(self) -> None: + example_data = create_full_example() + for item in example_data: + self.identifiable_store.add(item) + + # Stray files must not crash the iterator or be yielded + stray = os.path.join(store_path, ".DS_Store") + with open(stray, "w") as f: + f.write("stray") + items = list(self.identifiable_store) + self.assertEqual(5, len(items)) + os.remove(stray) + def test_reload_discard(self) -> None: # Load example submodel example_submodel = create_example_submodel()