mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(mm): handle PC_PATH_MAX on external drives on macOS
`PC_PATH_MAX` doesn't exist for (some?) external drives on macOS. We need error handling when retrieving this value. Also added error handling for `PC_NAME_MAX` just in case. This does work for me for external drives on macOS, though. Closes #6277
This commit is contained in:
parent
f262b9032d
commit
d861bc690e
@ -318,10 +318,8 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|||||||
in_progress_path.rename(job.download_path)
|
in_progress_path.rename(job.download_path)
|
||||||
|
|
||||||
def _validate_filename(self, directory: str, filename: str) -> bool:
|
def _validate_filename(self, directory: str, filename: str) -> bool:
|
||||||
pc_name_max = os.pathconf(directory, "PC_NAME_MAX") if hasattr(os, "pathconf") else 260 # hardcoded for windows
|
pc_name_max = get_pc_name_max(directory)
|
||||||
pc_path_max = (
|
pc_path_max = get_pc_path_max(directory)
|
||||||
os.pathconf(directory, "PC_PATH_MAX") if hasattr(os, "pathconf") else 32767
|
|
||||||
) # hardcoded for windows with long names enabled
|
|
||||||
if "/" in filename:
|
if "/" in filename:
|
||||||
return False
|
return False
|
||||||
if filename.startswith(".."):
|
if filename.startswith(".."):
|
||||||
@ -419,6 +417,26 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|||||||
self._logger.warning(excp)
|
self._logger.warning(excp)
|
||||||
|
|
||||||
|
|
||||||
|
def get_pc_name_max(directory: str) -> int:
|
||||||
|
if hasattr(os, "pathconf"):
|
||||||
|
try:
|
||||||
|
return os.pathconf(directory, "PC_NAME_MAX")
|
||||||
|
except OSError:
|
||||||
|
# macOS w/ external drives raise OSError
|
||||||
|
pass
|
||||||
|
return 260 # hardcoded for windows
|
||||||
|
|
||||||
|
|
||||||
|
def get_pc_path_max(directory: str) -> int:
|
||||||
|
if hasattr(os, "pathconf"):
|
||||||
|
try:
|
||||||
|
return os.pathconf(directory, "PC_PATH_MAX")
|
||||||
|
except OSError:
|
||||||
|
# some platforms may not have this value
|
||||||
|
pass
|
||||||
|
return 32767 # hardcoded for windows with long names enabled
|
||||||
|
|
||||||
|
|
||||||
# Example on_progress event handler to display a TQDM status bar
|
# Example on_progress event handler to display a TQDM status bar
|
||||||
# Activate with:
|
# Activate with:
|
||||||
# download_service.download(DownloadJob('http://foo.bar/baz', '/tmp', on_progress=TqdmProgress().update))
|
# download_service.download(DownloadJob('http://foo.bar/baz', '/tmp', on_progress=TqdmProgress().update))
|
||||||
|
Loading…
Reference in New Issue
Block a user