Merge.
diff --git a/Lib/compileall.py b/Lib/compileall.py
index d3cff6a..693eda9 100644
--- a/Lib/compileall.py
+++ b/Lib/compileall.py
@@ -228,7 +228,8 @@
success = False
return success
else:
- return compile_path(legacy=args.legacy)
+ return compile_path(legacy=args.legacy, force=args.force,
+ quiet=args.quiet)
except KeyboardInterrupt:
print("\n[interrupted]")
return False
diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py
index fddb538..0505c52 100644
--- a/Lib/test/test_compileall.py
+++ b/Lib/test/test_compileall.py
@@ -177,6 +177,29 @@
self.assertNotCompiled(self.initfn)
self.assertNotCompiled(self.barfn)
+ def test_no_args_respects_force_flag(self):
+ bazfn = script_helper.make_script(self.directory, 'baz', '')
+ self.assertRunOK(PYTHONPATH=self.directory)
+ pycpath = imp.cache_from_source(bazfn)
+ # Set atime/mtime backward to avoid file timestamp resolution issues
+ os.utime(pycpath, (time.time()-60,)*2)
+ mtime = os.stat(pycpath).st_mtime
+ # Without force, no recompilation
+ self.assertRunOK(PYTHONPATH=self.directory)
+ mtime2 = os.stat(pycpath).st_mtime
+ self.assertEqual(mtime, mtime2)
+ # Now force it.
+ self.assertRunOK('-f', PYTHONPATH=self.directory)
+ mtime2 = os.stat(pycpath).st_mtime
+ self.assertNotEqual(mtime, mtime2)
+
+ def test_no_args_respects_quiet_flag(self):
+ script_helper.make_script(self.directory, 'baz', '')
+ noisy = self.assertRunOK(PYTHONPATH=self.directory)
+ self.assertIn(b'Listing ', noisy)
+ quiet = self.assertRunOK('-q', PYTHONPATH=self.directory)
+ self.assertNotIn(b'Listing ', quiet)
+
# Ensure that the default behavior of compileall's CLI is to create
# PEP 3147 pyc/pyo files.
for name, ext, switch in [
diff --git a/Misc/NEWS b/Misc/NEWS
index 60e741f..73625f3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,9 @@
Library
-------
+- Issue #19532: python -m compileall with no filename/directory arguments now
+ respects the -f and -q flags instead of ignoring them.
+
- Issue #19623: Fixed writing to unseekable files in the aifc module.
- Issue #17919: select.poll.register() again works with poll.POLLNVAL on AIX.
diff --git a/Modules/_decimal/libmpdec/mpdecimal.c b/Modules/_decimal/libmpdec/mpdecimal.c
index 05fd04d..21d2222 100644
--- a/Modules/_decimal/libmpdec/mpdecimal.c
+++ b/Modules/_decimal/libmpdec/mpdecimal.c
@@ -4421,21 +4421,22 @@
const mpd_context_t *ctx, uint32_t *status)
{
uint32_t workstatus = 0;
- const mpd_t *cc = c;
+ mpd_t *cc = NULL;
if (result == c) {
if ((cc = mpd_qncopy(c)) == NULL) {
mpd_seterror(result, MPD_Malloc_error, status);
return;
}
+ c = cc;
}
_mpd_qmul(result, a, b, ctx, &workstatus);
if (!(workstatus&MPD_Invalid_operation)) {
- mpd_qadd(result, result, cc, ctx, &workstatus);
+ mpd_qadd(result, result, c, ctx, &workstatus);
}
- if (cc != c) mpd_del((mpd_t *)cc);
+ if (cc) mpd_del(cc);
*status |= workstatus;
}