From 77061a065606ee90441e7278458cb040386e340e 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 (#346) In Windows might OSError(errno=EINVAL) be raised instead of the already catched exceptions in some cases (depending on the Python version). Suggested fix posted by JarrettR 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