diff options
Diffstat (limited to 'pkg_resources')
-rw-r--r-- | pkg_resources/__init__.py | 5 | ||||
-rw-r--r-- | pkg_resources/py31compat.py | 17 |
2 files changed, 20 insertions, 2 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 2ed07c3d..51b47492 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -67,6 +67,7 @@ try: except ImportError: importlib_machinery = None +from . import py31compat from pkg_resources.extern import appdirs from pkg_resources.extern import packaging __import__('pkg_resources.extern.packaging.version') @@ -74,6 +75,7 @@ __import__('pkg_resources.extern.packaging.specifiers') __import__('pkg_resources.extern.packaging.requirements') __import__('pkg_resources.extern.packaging.markers') + if (3, 0) < sys.version_info < (3, 3): raise RuntimeError("Python 3.3 or later is required") @@ -2958,8 +2960,7 @@ def _find_adapter(registry, ob): def ensure_directory(path): """Ensure that the parent directory of `path` exists""" dirname = os.path.dirname(path) - if not os.path.isdir(dirname): - os.makedirs(dirname) + py31compat.makedirs(dirname, exist_ok=True) def _bypass_ensure_directory(path): diff --git a/pkg_resources/py31compat.py b/pkg_resources/py31compat.py new file mode 100644 index 00000000..28120cac --- /dev/null +++ b/pkg_resources/py31compat.py @@ -0,0 +1,17 @@ +import os +import errno +import sys + + +PY32 = sys.version_info >= (3, 2) + + +def _makedirs_31(path, exist_ok=False): + try: + os.makedirs(path) + except OSError as exc: + if exc.errno != errno.EEXIST: + raise + + +makedirs = os.makedirs if PY32 else _makedirs_31 |