Skip to content

Commit 5753cd9

Browse files
authored
[Fix] backend_args should not be modified by get_file_backend (#897)
1 parent c46f891 commit 5753cd9

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

mmengine/fileio/io.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,10 @@ def _get_file_backend(prefix: str, backend_args: dict):
9191
"""
9292
# backend name has a higher priority
9393
if 'backend' in backend_args:
94-
backend_name = backend_args.pop('backend')
95-
backend = backends[backend_name](**backend_args)
94+
# backend_args should not be modified
95+
backend_args_bak = backend_args.copy()
96+
backend_name = backend_args_bak.pop('backend')
97+
backend = backends[backend_name](**backend_args_bak)
9698
else:
9799
backend = prefix_to_backends[prefix](**backend_args)
98100
return backend

tests/test_fileio/test_io.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,13 @@ def test_get_file_backend():
107107
backend_args = {'backend': 'local'}
108108
backend = fileio.get_file_backend(uri=None, backend_args=backend_args)
109109
assert isinstance(backend, fileio.backends.LocalBackend)
110+
# backend_args should not be modified
111+
assert backend_args == {'backend': 'local'}
110112

111113
backend_args = {'backend': 'petrel', 'enable_mc': True}
112114
backend = fileio.get_file_backend(uri=None, backend_args=backend_args)
113115
assert isinstance(backend, fileio.backends.PetrelBackend)
116+
assert backend_args == {'backend': 'petrel', 'enable_mc': True}
114117

115118
# backend name has a higher priority
116119
backend_args = {'backend': 'http'}

0 commit comments

Comments
 (0)