bpo-35936: Updates to modulefinder (GH-11787)
* Properly handle SyntaxErrors in Python source files.
SyntaxErrors in the target module will rise normally, while SyntaxErrors in dependencies will be added to badmodules. This includes a new regression test.
* Fix name collision bug.
This fixes an issue where a "fromlist" import with the same name as a previously failed import would be incorrectly added to badmodules. This includes a new regression test.
* Replace mutable default values.
Bound empty lists have been replaced with the "if param is None" idiom.
* Replace deprecated imp usage.
Constants imported from imp have been moved to private module-level constants, and ModuleFinder.find_module has been refactored to use importlib. Other than an improvement on how frozen builtin imports are reported (as the frozen imports they are, rather than the stdlib modules they *may* have originated from), these changes maintain complete compatibility with past versions... including odd behavior for returning relative (below current directory, but not a C extension) vs. absolute (above current directory, or a C extension) paths.
Patch by Brandt Bucher.
diff --git a/Misc/ACKS b/Misc/ACKS
index 9cddcb3..df6be59 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -222,6 +222,7 @@
Floris Bruynooghe
Matt Bryant
Stan Bubrouski
+Brandt Bucher
Colm Buckley
Erik de Bueger
Jan-Hein Bührman