1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from modules.patches import patch
- from modules.errors import report
- from inspect import signature
- from functools import wraps
- try:
- from huggingface_hub.utils import LocalEntryNotFoundError
- from huggingface_hub import file_download
- def try_local_files_only(func):
- if (param := signature(func).parameters.get('local_files_only', None)) and not param.kind == param.KEYWORD_ONLY:
- raise ValueError(f'{func.__name__} does not have keyword-only parameter "local_files_only"')
- @wraps(func)
- def wrapper(*args, **kwargs):
- try:
- from modules.shared import opts
- try_offline_mode = not kwargs.get('local_files_only') and opts.hd_dl_local_first
- except Exception:
- report('Error in try_local_files_only - skip try_local_files_only', exc_info=True)
- try_offline_mode = False
- if try_offline_mode:
- try:
- return func(*args, **{**kwargs, 'local_files_only': True})
- except LocalEntryNotFoundError:
- pass
- except Exception:
- report('Unexpected exception in try_local_files_only - retry without patch', exc_info=True)
- return func(*args, **kwargs)
- return wrapper
- try:
- patch(__name__, file_download, 'hf_hub_download', try_local_files_only(file_download.hf_hub_download))
- except RuntimeError:
- pass # already patched
- except Exception:
- report('Error patching hf_hub_download', exc_info=True)
|