From 5bb81bc0d90c274488acb80139033e9b17add80b Mon Sep 17 00:00:00 2001 From: Martin Rieder <74277074+martinrieder@users.noreply.github.com> Date: Thu, 20 Jun 2024 13:19:58 +0200 Subject: [PATCH 1/4] Exception on e.errno is None. Fixes #391. --- src/wireviz/wireviz.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 6e0ab82d..a8645c70 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -416,7 +416,7 @@ def _get_yaml_data_and_path(inp: Union[str, Path, Dict]) -> (Dict, Path): # Catch this error, but raise any others from errno import EINVAL, ENAMETOOLONG - if type(e) is OSError and e.errno not in (EINVAL, ENAMETOOLONG): + if type(e) is OSError and e.errno not in (EINVAL, ENAMETOOLONG, None): raise e # file does not exist; assume inp is a YAML string yaml_str = inp From 9e6edab86d343955388009ba6e1d4565d0a9d264 Mon Sep 17 00:00:00 2001 From: Martin Rieder <74277074+martinrieder@users.noreply.github.com> Date: Mon, 1 Jul 2024 20:37:24 +0200 Subject: [PATCH 2/4] Add ValueError to Exception per #318 --- src/wireviz/wireviz.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index a8645c70..71920d75 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -409,7 +409,7 @@ def _get_yaml_data_and_path(inp: Union[str, Path, Dict]) -> (Dict, Path): yaml_path = Path(inp).expanduser().resolve(strict=True) # if no FileNotFoundError exception happens, get file contents yaml_str = open_file_read(yaml_path).read() - except (FileNotFoundError, OSError) as e: + except (FileNotFoundError, OSError, ValueError) 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. From 8367b60541323efa70a314584cf5f516a79aa71d Mon Sep 17 00:00:00 2001 From: Martin Rieder <74277074+martinrieder@users.noreply.github.com> Date: Mon, 1 Jul 2024 20:48:21 +0200 Subject: [PATCH 3/4] Comment the fixes for #318 and #391 --- src/wireviz/wireviz.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 71920d75..9b95c237 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -410,10 +410,11 @@ def _get_yaml_data_and_path(inp: Union[str, Path, Dict]) -> (Dict, Path): # if no FileNotFoundError exception happens, get file contents yaml_str = open_file_read(yaml_path).read() except (FileNotFoundError, OSError, ValueError) 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 + # if inp is a long YAML string, Pathlib will raise OSError [errno.ENAMETOOLONG] + # in Windows, ValueError or OSError [errno.EINVAL or None] also might be raised + # when trying to expand and resolve it as a path (depending on the Python version) + # Catch these specific errors, but raise any others + from errno import EINVAL, ENAMETOOLONG if type(e) is OSError and e.errno not in (EINVAL, ENAMETOOLONG, None): From 21fb2e1a3b4f24ab8c93b11a53f9831b1d0eb0f8 Mon Sep 17 00:00:00 2001 From: Martin Rieder <74277074+martinrieder@users.noreply.github.com> Date: Wed, 3 Jul 2024 23:07:38 +0200 Subject: [PATCH 4/4] Update comment in src/wireviz/wireviz.py Clarify the changes in #392 Co-authored-by: kvid --- src/wireviz/wireviz.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 9b95c237..abb38787 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -410,10 +410,12 @@ def _get_yaml_data_and_path(inp: Union[str, Path, Dict]) -> (Dict, Path): # if no FileNotFoundError exception happens, get file contents yaml_str = open_file_read(yaml_path).read() except (FileNotFoundError, OSError, ValueError) as e: - # if inp is a long YAML string, Pathlib will raise OSError [errno.ENAMETOOLONG] - # in Windows, ValueError or OSError [errno.EINVAL or None] also might be raised - # when trying to expand and resolve it as a path (depending on the Python version) - # Catch these specific errors, but raise any others + # if inp is a long YAML string, Pathlib will normally raise + # FileNotFoundError or OSError(errno = ENAMETOOLONG) when + # trying to expand and resolve it as a path, but in Windows + # might ValueError or OSError(errno = EINVAL or None) be raised + # instead in some cases (depending on the Python version). + # Catch these specific errors, but raise any others. from errno import EINVAL, ENAMETOOLONG