From d443a5c736af09eb2ada8699c6190a5be77770e5 Mon Sep 17 00:00:00 2001 From: Junjun Dong Date: Sat, 29 Nov 2025 01:35:51 -0800 Subject: [PATCH] fix: remove trailing os sep in local pretrained model path --- src/transformers/dynamic_module_utils.py | 2 +- tests/utils/test_dynamic_module_utils.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/transformers/dynamic_module_utils.py b/src/transformers/dynamic_module_utils.py index b70879120f73..13e4496a26e1 100644 --- a/src/transformers/dynamic_module_utils.py +++ b/src/transformers/dynamic_module_utils.py @@ -375,7 +375,7 @@ def get_cached_module_file( local_files_only = True # Download and cache module_file from the repo `pretrained_model_name_or_path` of grab it if it's a local file. - pretrained_model_name_or_path = str(pretrained_model_name_or_path) + pretrained_model_name_or_path = str(pretrained_model_name_or_path).rstrip(os.sep) is_local = os.path.isdir(pretrained_model_name_or_path) if is_local: submodule = _sanitize_module_name(os.path.basename(pretrained_model_name_or_path)) diff --git a/tests/utils/test_dynamic_module_utils.py b/tests/utils/test_dynamic_module_utils.py index dfdc63460cd3..ab041f8ca7b5 100644 --- a/tests/utils/test_dynamic_module_utils.py +++ b/tests/utils/test_dynamic_module_utils.py @@ -13,9 +13,11 @@ # limitations under the License. import os +import warnings import pytest +from transformers import AutoConfig from transformers.dynamic_module_utils import get_imports @@ -127,3 +129,24 @@ def test_import_parsing(tmp_path, case): parsed_imports = get_imports(tmp_file_path) assert parsed_imports == ["os"] + + +def test_local_path_with_and_without_trailing_slash(tmp_path): + model_dir = tmp_path / "my_model" + model_dir.mkdir() + config_path = model_dir / "config.json" + config_path.write_text('{"model_type": "bert"}') + path_no_slash = str(model_dir) + path_with_slash = str(model_dir) + os.sep + + with warnings.catch_warnings(record=True) as w1: + warnings.simplefilter("always") + cfg1 = AutoConfig.from_pretrained(path_no_slash) + + with warnings.catch_warnings(record=True) as w2: + warnings.simplefilter("always") + cfg2 = AutoConfig.from_pretrained(path_with_slash) + + assert isinstance(cfg1, type(cfg2)) + assert len(w1) == 0 + assert len(w2) == 0