| from urllib.parse import urljoin | |
| def patch_transformers_relative_redirects(): | |
| """Patch old transformers download code to handle relative HF redirects.""" | |
| try: | |
| from transformers import file_utils as transformers_file_utils | |
| except Exception: | |
| return | |
| original_head = transformers_file_utils.requests.head | |
| if getattr(original_head, "_xplainer_relative_redirect_patch", False): | |
| return | |
| def patched_head(url, *args, **kwargs): | |
| response = original_head(url, *args, **kwargs) | |
| location = response.headers.get("Location") | |
| if location and not location.startswith(("http://", "https://")): | |
| response.headers["Location"] = urljoin(url, location) | |
| return response | |
| patched_head._xplainer_relative_redirect_patch = True | |
| transformers_file_utils.requests.head = patched_head | |