[Fix] backend_args should not be modified by get_file_backend (#897)

pull/936/head
Zaida Zhou 2023-02-01 14:47:22 +08:00 committed by GitHub
parent c46f891a97
commit 5753cd98e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -91,8 +91,10 @@ def _get_file_backend(prefix: str, backend_args: dict):
"""
# backend name has a higher priority
if 'backend' in backend_args:
backend_name = backend_args.pop('backend')
backend = backends[backend_name](**backend_args)
# backend_args should not be modified
backend_args_bak = backend_args.copy()
backend_name = backend_args_bak.pop('backend')
backend = backends[backend_name](**backend_args_bak)
else:
backend = prefix_to_backends[prefix](**backend_args)
return backend

View File

@ -107,10 +107,13 @@ def test_get_file_backend():
backend_args = {'backend': 'local'}
backend = fileio.get_file_backend(uri=None, backend_args=backend_args)
assert isinstance(backend, fileio.backends.LocalBackend)
# backend_args should not be modified
assert backend_args == {'backend': 'local'}
backend_args = {'backend': 'petrel', 'enable_mc': True}
backend = fileio.get_file_backend(uri=None, backend_args=backend_args)
assert isinstance(backend, fileio.backends.PetrelBackend)
assert backend_args == {'backend': 'petrel', 'enable_mc': True}
# backend name has a higher priority
backend_args = {'backend': 'http'}