From 22b9b379159f953ad4805980644414354030624f Mon Sep 17 00:00:00 2001 From: Meador Inge Date: Mon, 28 Nov 2011 09:27:32 -0600 Subject: [PATCH] Issue #12618: py_compile cannot create files in current directory Initial patch by Sjoerd de Vries. --- Lib/py_compile.py | 4 +++- Lib/test/test_py_compile.py | 9 +++++++++ Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Lib/py_compile.py b/Lib/py_compile.py index e0f98cb741d..5adb70a2939 100644 --- a/Lib/py_compile.py +++ b/Lib/py_compile.py @@ -130,7 +130,9 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1): else: cfile = imp.cache_from_source(file) try: - os.makedirs(os.path.dirname(cfile)) + dirname = os.path.dirname(cfile) + if dirname: + os.makedirs(dirname) except OSError as error: if error.errno != errno.EEXIST: raise diff --git a/Lib/test/test_py_compile.py b/Lib/test/test_py_compile.py index 8ad0897433b..f3c1a6a44b6 100644 --- a/Lib/test/test_py_compile.py +++ b/Lib/test/test_py_compile.py @@ -39,6 +39,15 @@ class PyCompileTests(unittest.TestCase): py_compile.compile(self.source_path) self.assertTrue(os.path.exists(self.cache_path)) + def test_cwd(self): + cwd = os.getcwd() + os.chdir(self.directory) + py_compile.compile(os.path.basename(self.source_path), + os.path.basename(self.pyc_path)) + os.chdir(cwd) + self.assertTrue(os.path.exists(self.pyc_path)) + self.assertFalse(os.path.exists(self.cache_path)) + def test_relative_path(self): py_compile.compile(os.path.relpath(self.source_path), os.path.relpath(self.pyc_path)) diff --git a/Misc/ACKS b/Misc/ACKS index 7f7296e0d05..5d754041492 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -941,6 +941,7 @@ Kannan Vijayan Kurt Vile Norman Vine Frank Visser +Sjoerd de Vries Niki W. Waibel Wojtek Walczak Charles Waldman diff --git a/Misc/NEWS b/Misc/NEWS index eaadaafb03e..3041a73f85c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -83,6 +83,9 @@ Core and Builtins Library ------- +- Issue #12618: Fix a bug that prevented py_compile from creating byte + compiled files in the current directory. Initial patch by Sjoerd de Vries. + - Issue #13444: When stdout has been closed explicitly, we should not attempt to flush it at shutdown and print an error.