aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/config.py
diff options
context:
space:
mode:
authoridle sign <idlesign@yandex.ru>2016-12-07 20:21:31 +0700
committeridle sign <idlesign@yandex.ru>2016-12-07 20:21:31 +0700
commita9350f32d3eeef3a1c53b243e763e60e211b72f6 (patch)
tree76961552c885204d1cff6687d7a9396a7736d66f /setuptools/config.py
parent43af23dcff02695ef77b862d2266d10019b7c67c (diff)
downloadexternal_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.tar.gz
external_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.tar.bz2
external_python_setuptools-a9350f32d3eeef3a1c53b243e763e60e211b72f6.zip
`read_configuration` now chdirs and tests for file.
Diffstat (limited to 'setuptools/config.py')
-rw-r--r--setuptools/config.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/setuptools/config.py b/setuptools/config.py
index b2c0cea3..889dc683 100644
--- a/setuptools/config.py
+++ b/setuptools/config.py
@@ -5,7 +5,7 @@ import sys
from collections import defaultdict
from functools import partial
-from distutils.errors import DistutilsOptionError
+from distutils.errors import DistutilsOptionError, DistutilsFileError
from setuptools.py26compat import import_module
from setuptools.extern.six import string_types
@@ -23,6 +23,15 @@ def read_configuration(filepath, find_others=False):
"""
from setuptools.dist import Distribution, _Distribution
+ filepath = os.path.abspath(filepath)
+
+ if not os.path.isfile(filepath):
+ raise DistutilsFileError(
+ 'Configuration file %s does not exist.' % filepath)
+
+ current_directory = os.getcwd()
+ os.chdir(os.path.dirname(filepath))
+
dist = Distribution()
filenames = dist.find_config_files() if find_others else []
@@ -33,6 +42,8 @@ def read_configuration(filepath, find_others=False):
handlers = parse_configuration(dist, dist.command_options)
+ os.chdir(current_directory)
+
return configuration_to_dict(handlers)