From 1eaab2c7aa68ad7fac1fa46979430c77fc2c44d9 Mon Sep 17 00:00:00 2001 From: mart-r Date: Fri, 18 Jul 2025 12:09:11 +0100 Subject: [PATCH 1/2] CU-8699vnuwf: Ignore hidden files/folders when loading model pack --- medcat-v2/medcat/cat.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/medcat-v2/medcat/cat.py b/medcat-v2/medcat/cat.py index 775732cf4..7111e32f9 100644 --- a/medcat-v2/medcat/cat.py +++ b/medcat-v2/medcat/cat.py @@ -703,7 +703,9 @@ def load_model_pack(cls, model_pack_path: str) -> 'CAT': TOKENIZER_PREFIX, # components will be loaded semi-manually # within the creation of pipe - COMPONENTS_FOLDER}) + COMPONENTS_FOLDER, + # ignore hidden files/folders + '.'}) # NOTE: deserialising of components that need serialised # will be dealt with upon pipeline creation automatically if not isinstance(cat, CAT): From 7bd4e2e572a01c9c6c94b1efa1f10bbd8eca5fbc Mon Sep 17 00:00:00 2001 From: mart-r Date: Fri, 18 Jul 2025 12:11:31 +0100 Subject: [PATCH 2/2] CU-8699vnuwf: Add a test to make sure model pack can be loaded with hidden file/folders --- medcat-v2/tests/test_cat.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/medcat-v2/tests/test_cat.py b/medcat-v2/tests/test_cat.py index 743618ebf..96ff97166 100644 --- a/medcat-v2/tests/test_cat.py +++ b/medcat-v2/tests/test_cat.py @@ -22,6 +22,7 @@ import unittest import tempfile import pickle +import shutil from . import EXAMPLE_MODEL_PACK_ZIP from . import V1_MODEL_PACK_PATH, UNPACKED_V1_MODEL_PACK_PATH @@ -30,18 +31,19 @@ orig_init = cat.CAT.__init__ +expected_model_pack_path = EXAMPLE_MODEL_PACK_ZIP.replace(".zip", "") + class ModelLoadTests(unittest.TestCase): def assert_has_model_name(self, func): - expected_model_packl_name = EXAMPLE_MODEL_PACK_ZIP.replace(".zip", "") def wrapper(*args, **kwargs): if 'model_load_path' in kwargs: self.assertEqual(kwargs['model_load_path'], - expected_model_packl_name) + expected_model_pack_path) else: - self.assertEqual(args[-1], expected_model_packl_name) + self.assertEqual(args[-1], expected_model_pack_path) return func(*args, **kwargs) return wrapper @@ -61,6 +63,31 @@ def test_can_load_CDB_from_model_pack(self): self.assertIsInstance(cdb, CDB) +class ModelLoadIWithHiddenFilesTests(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls._temp_dir = tempfile.TemporaryDirectory() + cls.model_path = os.path.join(cls._temp_dir.name, "model") + shutil.copytree(expected_model_pack_path, cls.model_path) + # add file + file_path = os.path.join(cls.model_path, '.some_file.txt') + with open(file_path, 'w') as f: + f.write("Nothing") + # add folder + folder_path = os.path.join(cls.model_path, '.some_folder') + os.mkdir(folder_path) + + @classmethod + def tearDownClass(cls): + cls._temp_dir.cleanup() + + def test_can_load_with_add_hidden_files_and_folders(self): + # try load + inst = cat.CAT.load_model_pack(self.model_path) + self.assertIsInstance(inst, cat.CAT) + + class TrainedModelTests(unittest.TestCase): TRAINED_MODEL_PATH = EXAMPLE_MODEL_PACK_ZIP