From e3fade35ef23b6dbc1f6da95a00a8126d12c7fb3 Mon Sep 17 00:00:00 2001 From: KV Date: Thu, 16 May 2024 00:32:31 +0200 Subject: [PATCH] Handle OSError [errno.EINVAL] that might be raised in Windows Suggested fix posted in https://github.com/wireviz/WireViz/issues/344#issuecomment-2113476151 Co-authored-by: JarrettR --- src/wireviz/wireviz.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index db692419..5fc3ee14 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -408,11 +408,12 @@ def _get_yaml_data_and_path(inp: Union[str, Path, Dict]) -> (Dict, Path): yaml_str = open_file_read(yaml_path).read() except (FileNotFoundError, OSError) as e: # if inp is a long YAML string, Pathlib will raise OSError: [errno.ENAMETOOLONG] + # (in Windows, it seems OSError [errno.EINVAL] might be raised in some cases) # when trying to expand and resolve it as a path. # Catch this error, but raise any others - from errno import ENAMETOOLONG + from errno import EINVAL, ENAMETOOLONG - if type(e) is OSError and e.errno != ENAMETOOLONG: + if type(e) is OSError and e.errno not in (EINVAL, ENAMETOOLONG): raise e # file does not exist; assume inp is a YAML string yaml_str = inp