Mercurial > cpython-lru_cache-weakref
annotate Python/getplatform.c @ 68887:5deb2094f033
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.
| author | Brett Cannon <brett@python.org> |
|---|---|
| date | Wed, 23 Mar 2011 16:14:42 -0700 |
| parents | 6f6f965c5e2d |
| children |
| rev | line source |
|---|---|
|
3621
f158edccc72c
grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents:
2896
diff
changeset
|
1 |
|
f158edccc72c
grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents:
2896
diff
changeset
|
2 #include "Python.h" |
|
f158edccc72c
grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents:
2896
diff
changeset
|
3 |
| 2896 | 4 #ifndef PLATFORM |
| 5 #define PLATFORM "unknown" | |
| 6 #endif | |
| 7 | |
|
5860
728a083242a2
Make it return a _const_ char*.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
8 const char * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13256
diff
changeset
|
9 Py_GetPlatform(void) |
| 2896 | 10 { |
| 11 return PLATFORM; | |
| 12 } |
