Commit Graph

435 Commits

Author SHA1 Message Date
Victor Stinner
fe7c5b5bdf Issue #9319: Include the filename in "Non-UTF8 code ..." syntax error. 2011-04-05 01:48:03 +02:00
Brett Cannon
442c9b92d8 Make importlib compatible with __import__ by "fixing" code.co_filename
paths.

__import__ does a little trick when importing from bytecode by
back-patching the co_filename paths to point to the file location
where the code object was loaded from, *not* where the code object was
originally created. This allows co_filename to point to a valid path.
Problem is that co_filename is immutable from Python, so a private
function -- imp._fix_co_filename() -- had to be introduced in order to
get things working properly. Originally the plan was to add a file
argument to marshal.loads(), but that failed as the algorithm used by
__import__ is not fully recursive as one might expect, so to be fully
backwards-compatible the code used by __import__ needed to be exposed.

This closes issue #6811 by taking a different approach than outlined
in the issue.
2011-03-23 16:14:42 -07:00
Victor Stinner
e9ddbf65a8 Issue #11630, issue #3080: Fix refleak introduced by ef2b6305d395 2011-03-22 10:46:35 +01:00
Victor Stinner
9c61e24be4 Issue #3080: On DJGPP, case_bytes() returns -1 to signal an error if the file
cannot be found.
2011-03-22 01:22:27 +01:00
Victor Stinner
6ae1e7f04e Issue #3080: imp.load_module() accepts None for the module path
imp.find_module() returns None as module path for builtin and frozen builtins.
2011-03-20 22:37:17 +01:00
Victor Stinner
cc9564ecd8 Issue #3080: Fix call to case_ok() in find_init_module() 2011-03-20 04:58:29 +01:00
Victor Stinner
1304f2d8a3 Issue #3080: Fix case_ok() using case_bytes()
Invert name and namelen arguments.
2011-03-20 04:28:55 +01:00
Victor Stinner
fe93faf98c Issue #3080: Add PyImport_ImportModuleLevelObject() function
Use it for the builtin __import__ function.
2011-03-14 15:54:52 -04:00
Victor Stinner
98dbba5d20 Issue #3080: Use repr() to format the module name on error 2011-03-14 15:15:47 -04:00
Victor Stinner
ccbf475dfd Fix imp.cache_from_source() if the directory name contains a dot
If the directory name contains a dot but not the filename, don't strip at the
dot.
2011-03-14 15:05:12 -04:00
Victor Stinner
fe19d21815 Issue #3080: imp.new_module() uses Unicode 2011-03-14 14:53:28 -04:00
Victor Stinner
2fd76e478f Issue #3080: find_module() returns the path as Unicode 2011-03-14 15:19:39 -04:00
Victor Stinner
c9a271cf2b Issue #3080: case_ok() expects Unicode strings 2011-03-14 14:34:13 -04:00
Victor Stinner
547a2a6d52 Issue #3080: find_init_module() expects Unicode 2011-03-20 03:07:28 +01:00
Victor Stinner
d029621c70 Issue #3080: Refactor find_module_path(), use return instead of break
Prepare also the API change of case_ok()
2011-03-14 14:04:10 -04:00
Victor Stinner
df75a023a0 Issue #3080: find_module() sets an empty path for builtin and frozen modules 2011-03-14 13:40:04 -04:00
Victor Stinner
533d78399f Issue #3080: Rename some path variables to path_list 2011-03-14 13:22:54 -04:00
Victor Stinner
ad3c03b23e Issue #3080: find_module() expects module fullname and subname as Unicode
And PyImport_ReloadModule() uses Unicode for the module name.
2011-03-14 09:21:33 -04:00
Victor Stinner
58d37112ae Issue #3080: Drop OS/2 support for the import machinery
Sorry Andrew I MacIntyre!
2011-03-13 23:11:02 -04:00
Victor Stinner
9599de5110 Issue #3080: Reindent and simplify import_submodule() 2011-03-13 22:38:38 -04:00
Victor Stinner
c24c8108b6 Issue #3080: Use %R to format module name in error messages
%R format instead of %U
2011-03-13 22:38:06 -04:00
Victor Stinner
974389d92c Issue #3080: Use Unicode for the "The Magnum Opus of dotted-name import"
Use Unicode for module name and paths in the following functions:

 * PyImport_ImportModuleLevel()
 * add_submodule()
 * ensure_from_list()
 * get_parent()
 * import_module_level()
 * import_submodule()
 * load_next()
 * mark_miss()
2011-03-15 09:33:57 +01:00
Victor Stinner
2e5f11aaa4 Issue #3080: PyImport_ImportModuleNoBlock() uses Unicode 2011-03-13 21:57:27 -04:00
Victor Stinner
41c5fecce0 Issue #3080: load_module() expects name and path as Unicode 2011-03-13 21:46:30 -04:00
Victor Stinner
2f42ae53aa Issue #3080: Use Unicode to import source and compiled modules
* Use Unicode for module name and path in the following functions:

   * get_file()
   * load_source_module(), parse_source_module()
   * make_compiled_pathname(), check_compiled_module(),
     read_compiled_module(), load_compiled_module(), write_compiled_module(),
     update_compiled_module()

 * On Windows, use CreateDirectoryW() instead of mkdir()
 * update_compiled_module() cannot fail anymore
2011-03-20 00:41:24 +01:00