Use errno.EISDIR and errno.EACCESS instead of hardcoding values (#1196)

This commit is contained in:
Luca Falavigna 2024-02-19 16:38:24 +01:00 committed by GitHub
parent 85a4557525
commit 9f22835f73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 6 deletions

View File

@ -10,6 +10,7 @@ import logging
import re
import os
import os.path as op
from errno import EISDIR, EACCES
from xml.etree import ElementTree as ET
from hscommon.jobprogress.job import nulljob
@ -376,8 +377,8 @@ class Results(Markable):
do_write(outfile)
except OSError as e:
# If our OSError is because dest is already a directory, we want to handle that. 21 is
# the code we get on OS X and Linux, 13 is what we get on Windows.
if e.errno in {21, 13}:
# the code we get on OS X and Linux (EISDIR), 13 is what we get on Windows (EACCES).
if e.errno in (EISDIR, EACCES):
p = str(outfile)
dirname, basename = op.split(p)
otherfiles = os.listdir(dirname)

View File

@ -14,6 +14,7 @@ import re
import os
import shutil
from errno import EISDIR, EACCES
from pathlib import Path
from typing import Callable, List
@ -75,10 +76,8 @@ def smart_copy(source_path: Path, dest_path: Path) -> None:
try:
_smart_move_or_copy(shutil.copy, source_path, dest_path)
except OSError as e:
if e.errno in {
21,
13,
}: # it's a directory, code is 21 on OS X / Linux and 13 on Windows
# It's a directory, code is 21 on OS X / Linux (EISDIR) and 13 on Windows (EACCES)
if e.errno in (EISDIR, EACCES):
_smart_move_or_copy(shutil.copytree, source_path, dest_path)
else:
raise