Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Bugs

[issue13959] Re-implement parts of imp in pure Python

 

 

Python bugs RSS feed   Index | Next | Previous | View Threaded


report at bugs

Apr 14, 2012, 11:29 AM

Post #1 of 56 (182 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python

Antoine Pitrou <pitrou [at] free> added the comment:

I think this should be a blocker for 3.3.

----------
nosy: +pitrou
priority: normal -> release blocker

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 12:57 PM

Post #2 of 56 (174 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

Just because I was thinking about it, I wonder if necessarily all the frozen stuff really needs to stay in import.c. I mean a frozen module is really just an entry in an array of structs that has a name of an char*[]. I don't see why one couldn't simply have a get_frozen_bytes() method to convert that char*[] into a bytes object and use that to construct a module in pure Python code.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 1:09 PM

Post #3 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset d777f854a66e by Brett Cannon in branch 'default':
Issue #13959: Rename imp to _imp and add Lib/imp.py and begin
http://hg.python.org/cpython/rev/d777f854a66e

----------
nosy: +python-dev

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 1:12 PM

Post #4 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

OK, so I have started to check this stuff in, but I think it's best to do it piecemeal. Going forward I would like to commit in units of functions being replaced, and prioritize stuff that cuts out C code (e.g. the load_*() methods, find_module(), etc.). That way it's clear that progress is being made. Obviously the best way to tell if code is hanging on just because of imp is to comment out the interface code and see what your compiler complains about in terms of dead code (or at least clang is good at this).

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 2:52 PM

Post #5 of 56 (175 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

It looks like in order to get a clear sign of what it will take to remove various parts of import.c, imp.load_module() needs to go along with imp.load_package() (since they call each other in the C code). You also have to take care of imp.reload(), but I am simplifying the C code greatly and will take care of referencing other code in the module.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 2:56 PM

Post #6 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 4dce3afc392c by Brett Cannon in branch 'default':
Issue #13959: Simplify imp.reload() by relying on a module's
http://hg.python.org/cpython/rev/4dce3afc392c

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 3:34 PM

Post #7 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

I am seeing how this is going to go down. the load_dynamic, load_source, etc. family of functions are simply dispatched to by load_module(). So to keep some semblance of backwards-compatibility, each of those modules need to be implemented and then have load_module() simply dispatch to them based on the "type" of module it is.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 5:25 PM

Post #8 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 2df37938b8e1 by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.load_module() in imp.py.
http://hg.python.org/cpython/rev/2df37938b8e1

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 15, 2012, 7:29 PM

Post #9 of 56 (175 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 4256df44023b by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.load_package() in imp.py.
http://hg.python.org/cpython/rev/4256df44023b

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 16, 2012, 3:47 AM

Post #10 of 56 (172 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Changes by Berker Peksag <berker.peksag [at] gmail>:


----------
nosy: +berker.peksag

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 16, 2012, 8:48 AM

Post #11 of 56 (172 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

>From Eric Smith on python-dev:

> + suffix, mode, type_ = details
> + if mode and (not mode.startswith(('r', 'U'))) or '+' in mode:
> + raise ValueError('invalid file open mode {!r}'.format(mode))

Should this be:
if mode and (not mode.startswith(('r', 'U')) or '+' in mode):

to match:

> - if (*mode) {
...
> - if (!(*mode == 'r' || *mode == 'U') || strchr(mode, '+')) {
> - PyErr_Format(PyExc_ValueError,
> - "invalid file open mode %.200s", mode);

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 16, 2012, 7:11 PM

Post #12 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 3b5b4b4bb43c by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.load_source() in imp.py.
http://hg.python.org/cpython/rev/3b5b4b4bb43c

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 16, 2012, 10:57 PM

Post #13 of 56 (171 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

This is a mostly-working sketch of find_module() in imp.py. I've run out of time tonight, but wanted to get it up in case it's useful to anyone else (a.k.a Brett). If nobody's touched it before then, I'll finish it up tomorrow.

----------
Added file: http://bugs.python.org/file25250/imp_find_module.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 17, 2012, 9:08 AM

Post #14 of 56 (171 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

I doubt I will beat you to it, Eric, but I did want to say that your overall design was what I had in my head when I was thinking about how to re-implement the function, so keep at it!

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 17, 2012, 4:14 PM

Post #15 of 56 (172 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 66bd85bcf916 by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.load_compiled() in imp.py.
http://hg.python.org/cpython/rev/66bd85bcf916

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 17, 2012, 10:51 PM

Post #16 of 56 (171 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

2 "problems" with that last patch:

* the types of the loaders that get returned by _bootstrap._find_module() are not the classes in _bootstrap (e.g. _frozen_importlib._SourceFileLoader). That doesn't smell right.
* tokenize.get_encoding? is saying that Lib/test/badsyntax_pep3120.py has an encoding of utf-8, when test_find_module_encoding is expecting it to not. So does PyTokenizer_FindEncodingFilename (which the old import code used) behaving differently than tokenize.get_encoding()? FYI, tokenize.get_encoding() is what importlib uses...

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 17, 2012, 10:54 PM

Post #17 of 56 (173 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

rather, tokenize.detect_encoding()

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 18, 2012, 7:25 AM

Post #18 of 56 (171 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

You could change Lib/imp.py to have ``import _frozen_importlib as _bootstrap`` if you want the same modules coming from imp, but I would argue against changing importlib itself being changed as that complicates development since if you screw up importlib._bootstrap when you compile it becomes a major pain to revert the importlib.h change, recompile, and continue to do that until you get it right. Plus you would only care about this if you are doing isinstance() checks on what kind of loader you have which you shouldn't care about since we have clearly defined ABCs to test against.

As for Lib/test/badsyntax_pep3120.py, it *does* have a source encoding of UTF-8 since it does not explicitly specify an encoding. Based on the name I'm assuming the file itself has bad UTF-8 characters, but that doesn't mean that the file is not supposed to be interpreted as UTF-8.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 18, 2012, 7:49 AM

Post #19 of 56 (172 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

On the _frozen_importlib point, I'm fine with that. It was just counter-intuitive that the importlib._bootstrap functions were returning loaders whose classes weren't also defined there.

I'll have another look at that test tonight and run the patch through the full test suite, but otherwise I think find_module() is basically done.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 19, 2012, 12:53 AM

Post #20 of 56 (171 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

Looking it over, I'm confident that tokenizer.detect_encoding() does not raise a SyntaxError where PyTokenizer_FindEncodingFilename() does. I've run out of time tonight, but I'll look at it more tomorrow.

Once find_module() is done, I'd like to move on to reload(), which I expect will be pretty straightforward at this point. Then the feasibility of issue14618 should be clear.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 20, 2012, 3:04 PM

Post #21 of 56 (172 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset c820aa9c0c00 by Brett Cannon in branch 'default':
Issue #13959: Keep imp.get_magic() in C code, but cache in importlib
http://hg.python.org/cpython/rev/c820aa9c0c00

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 20, 2012, 7:07 PM

Post #22 of 56 (175 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

I'd still like to consider this a bit more. When you're trying to understand imports, having one place to look (Lib/importlib/_bootstrap.py) is better than two, especially when the one is pure Python code. So it still may be worth it to pull in the odds and ends that play into that.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 21, 2012, 3:53 PM

Post #23 of 56 (147 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset b773a751c2e7 by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.cache_from_source() in Lib/imp.py.
http://hg.python.org/cpython/rev/b773a751c2e7

New changeset ea46ebba8a0f by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.source_from_cache() in Lib/imp.py.
http://hg.python.org/cpython/rev/ea46ebba8a0f

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 21, 2012, 4:02 PM

Post #24 of 56 (149 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

Time for a recap!

I am personally not bothering with moving imp.get_tag() and imp.get_magic() to importlib._bootstrap as the amount of C code required to support the public C API is not worth it. If someone else once to do the work then by all means attach a patch.

I still need to port imp.find_module() (and the various constants) and will base it off of Eric's code.

NullImporter will get ported once issue #14605 (exposing the import machinery) lands.

get_suffixes() will also get ported, but that is a little bit more involved as I need to change how _DynLoadFiletab works by only storing the file extensions and not the other fluff (which is the same for all OSs).

After all of that is done then I will expose some API in importlib to replace find_module() and load_*() functions and then deprecate them (see issue #14551 for an ongoing discussion the possible API).

----------
assignee: -> brett.cannon
dependencies: +Make import machinery explicit
stage: -> needs patch

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 21, 2012, 5:58 PM

Post #25 of 56 (148 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

Yeah, I'm hoping to keep pressing those odds and ends forward. I have one lingering, oddball bug in find_module, but that patch is pretty much standing on its own.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 21, 2012, 6:15 PM

Post #26 of 56 (95 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 085cf1480cfe by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.find_module() in Lib/imp.py.
http://hg.python.org/cpython/rev/085cf1480cfe

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 12:41 AM

Post #27 of 56 (95 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

Ported _imp.reload() (Python/import.c) to Lib/imp.py. Included is the change to PyImport_ReloadModule() to make it simply a wrapper around the pure Python imp.reload(). There's a good chance I don't have this right or that I have some reference leak. I haven't worked a ton on the C side of Python (sounds tropical). This patch also removes 'modules_reloading' from the interpreter state, since it's no longer used anywhere (see issue14618).

----------
Added file: http://bugs.python.org/file25302/issue13959_reload.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 3:40 AM

Post #28 of 56 (96 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

A patch for magic and tag. It's not quite finished, but I wanted to see if the approach was palatable. FYI, I'm also trying to push forward the sys.implementation stuff, which would help on the pyc tag.

----------
Added file: http://bugs.python.org/file25303/issue13959_magic.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 8:38 AM

Post #29 of 56 (96 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

After thinking about it, is MAGIC an implementation detail? It certainly reflects changes specific to the CPython interpreter. I'm much more comfortable with leaving implementation details in Python/import.c.

On the other hand, there's already no small amount of rather CPython-specific stuff in Lib/importlib/_bootstrap.py, which belongs there. The pyc magic bytes are tightly coupled with it. Because of that, I realize, I'm still fine with the patch.

But it makes me wonder if it might be worth having a clear separation between the general and CPython-specific stuff in _bootstrap.py, for the sake of people who look at the code for the first (or tenth) time. That's the same rationale I have for advocating moving as much over from import.c as relates to the importlib implementation.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 10:02 AM

Post #30 of 56 (96 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 4e853913054c by Brett Cannon in branch 'default':
Issue #13959: Continue to try to accomodate altsep in importlib by not
http://hg.python.org/cpython/rev/4e853913054c

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 12:54 PM

Post #31 of 56 (93 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

First off, you should separate the patches for get_magic() and get_tag(). Second, why is there _get_pyc_magic_int() when it is never called? Third, all of this would be greatly simplified if you just had a _RAW_MAGIC_NUMBER of 3220, did the bytes object creation for _MAGIC_NUMBER in-place (i.e. no separate function), and then in the C code just got _RAW_MAGIC_NUMBER and did the MAGIC macro work there.

As for what is CPython-specific and what isn't, only the other VMs can state that officially, so I'm not going to worry about that yet (but I will ask before Python 3.3 goes out so as to minimize backporting patches in the future). But importlib needs to stabilize more before that can happen.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 12:58 PM

Post #32 of 56 (94 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

Good feedback. The some of that code was the result of directly translating the C. I'll get a new, simpler patch up probably tomorrow night. Thanks.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 5:53 PM

Post #33 of 56 (93 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

How consistent do the semantics of reload() need to remain? (The C version does more type checking than the Python version probably needs to worry about. reload() seems to be one of those bits that doesn't have much test coverage.)

Also, what's the best way to exercise the changes one makes to the C code?

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 7:42 PM

Post #34 of 56 (96 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

Loosening the type restrictions is fine.

As for testing, that's what the test suite is supposed to do. So if need be just write tests in Python that exercise the C code.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 9:22 PM

Post #35 of 56 (95 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

To try and narrow down the issue, I now have separate patches for an explicit sys.meta_path and a sys.path_hooks. Both fail on tests, but for different reasons.

The explicit sys.meta_path is still failing on the __main__ issue on three of the tests and for threaded imports on the other.

The explicit sys.path_hooks patch fails on two tests: one on threading and then test_cmd_line_script on apparently lacking an absolute file path thanks to issue #8202 (and why an explicit sys.path_hooks triggers that I don't know).

Both failures Nick might know about.

----------
Added file: http://bugs.python.org/file25308/explicit_meta_path.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 22, 2012, 9:23 PM

Post #36 of 56 (95 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Changes by Brett Cannon <brett [at] python>:


Added file: http://bugs.python.org/file25309/explicit_path_hooks.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 23, 2012, 10:38 PM

Post #37 of 56 (96 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

updated patch for magic number support in imp/importlib

----------
Added file: http://bugs.python.org/file25335/issue13959_magic.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 23, 2012, 10:40 PM

Post #38 of 56 (95 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

updated patch for moving TAG to importlib/imp.py

----------
Added file: http://bugs.python.org/file25336/issue13959_tag.diff

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 29, 2012, 9:50 AM

Post #39 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset eb5c5c23ca9b by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.NullImporter in Lib/imp.py.
http://hg.python.org/cpython/rev/eb5c5c23ca9b

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 29, 2012, 10:20 AM

Post #40 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

Update time!

With NullImporter dealt with, that leaves get_magic(), get_tag(), reload(), and get_suffixes() as things to potentially move to Lib/imp.py. I would also like to re-implement PyImport_ExecCodeModuleObject() as it's keeping a lot of C code alive just for its personal use.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 29, 2012, 10:23 AM

Post #41 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Éric Araujo <merwok [at] netwok> added the comment:

1659 lines less than 3.2’s import.c so far!

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 29, 2012, 11:40 AM

Post #42 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset eb68502731dd by Brett Cannon in branch 'default':
Issues #13959, 14647: Re-implement imp.reload() in Lib/imp.py.
http://hg.python.org/cpython/rev/eb68502731dd

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

Apr 29, 2012, 12:38 PM

Post #43 of 56 (78 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

So here is the deal with PyImport_ExecCodeModuleObject(): bootstrapping and Barry has made this a little annoying. =)

First off, PyImport_ImportFrozenModuleObject() uses PyImport_ExecCodeModuleObject(), so that precludes just directly importing imp to handle this function entirely. OK, so that means just trying to chop out the path manipulation stuff since that is duplicating code found in imp/importlib.

The problem, though, is that PyImport_ExecCodeModuleWithPathnames() will take its pathname argument and try to get a source path from it if it points to some .pyc file (PEP 3147 or sourceless .pyc, and if that new path exists then it is used instead of the given path. Unfortunately that API was introduced in Python 3.2, so there is a backwards-compatibility issue in that one can't just rip out the code w/o supporting it. But those semantics are the reason the equivalent of imp.source_from_cache() continues to exist in Python/import.c.

I see two options here. One is to simply leave the C code in, but that has the drawback of duplicated Python and C code. Two is to stick in a call to imp.source_from_cache() between PyImport_ExecCodeModuleWithPathnames() and PyImport_ExecCodeModuleObject() so the former retains the semantics and the latter doesn't pick up the bad habit before 3.3 is released.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 1, 2012, 7:10 AM

Post #44 of 56 (78 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Benjamin Peterson <benjamin [at] python> added the comment:

Windows is currently failing test_imp:

http://www.python.org/dev/buildbot/all/builders/x86%20XP-5%203.x/builds/214/steps/test/logs/stdio

----------
nosy: +benjamin.peterson

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 1, 2012, 7:32 AM

Post #45 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

That test is going to stay intermittent until issue #14657 gets resolved else the exact reason for the failure is going to be hard to debug remotely.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 4, 2012, 12:20 PM

Post #46 of 56 (78 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 257cbd2fac38 by Brett Cannon in branch 'default':
Issue #13959: Re-implement imp.get_suffixes() in Lib/imp.py.
http://hg.python.org/cpython/rev/257cbd2fac38

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 4, 2012, 12:23 PM

Post #47 of 56 (79 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

OK, I'm waiting on issue #14657 (avoiding the _frozen_importlib/importlib dichotomy) is resolved before I document the new imp.extension_suffixes() as it would be good to know where I should pull in the source and bytecode suffixes.

I think this only leaves get_magic() and get_tag() as the only things to move + trying to figure out how to handle PyImport_ExecCodeModuleObject() and its grip on various bits of C code.

----------
dependencies: +Avoid two importlib copies

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 4, 2012, 1:13 PM

Post #48 of 56 (76 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 22b0689346f9 by Brett Cannon in branch 'default':
Issue #13959: Move module type constants to Lib/imp.py.
http://hg.python.org/cpython/rev/22b0689346f9

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 11, 2012, 9:59 AM

Post #49 of 56 (78 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset b81ddaf0db47 by Brett Cannon in branch 'default':
Issue #13959: Deprecate imp.get_suffixes() for new attributes on
http://hg.python.org/cpython/rev/b81ddaf0db47

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 11, 2012, 10:41 AM

Post #50 of 56 (78 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Eric Snow <ericsnowcurrently [at] gmail> added the comment:

Question on this one:

<snip>
@@ -126,7 +131,7 @@ def load_compiled(name, pathname, file=N
# XXX deprecate
def load_package(name, path):
if os.path.isdir(path):
- extensions = _bootstrap._SOURCE_SUFFIXES + [_bootstrap._BYTECODE_SUFFIX]
+ extensions = machinery.SOURCE_SUFFIXES[:] + [machinery.BYTECODE_SUFFIXES]
for extension in extensions:
path = os.path.join(path, '__init__'+extension)
if os.path.exists(path):
</snip>

Should that be the following?

extensions = machinery.SOURCE_SUFFIXES[:] + machinery.BYTECODE_SUFFIXES[:]

Also, why the "[:]"?

Finally, in a couple spots you use the first element of the list (like the old case of "machinery.SOURCE_SUFFIXES[0]" in source_from_cache() and the new one in find_module()). Will this be a problem where the source file has one of the other suffixes? I'm not sure it's a big enough deal for the moment to worry about, but thought I'd ask. :)

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 11, 2012, 10:47 AM

Post #51 of 56 (46 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

Yes.

And the [:] copies the list so I don't accidentally mutate in-place (did that once already, so now I'm just being paranoid; I doubt I need it hardly anywhere I don't do +=).

As for using SOURCE_SUFFIXES[0], I'm done following the ported code. I really don't care if .pyw isn't supported in that case. But in general people shouldn't assume just .py (or .py at all).

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 11, 2012, 11:48 AM

Post #52 of 56 (46 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 626d5c6fbd95 by Brett Cannon in branch 'default':
Issue #13959: Have
http://hg.python.org/cpython/rev/626d5c6fbd95

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 12, 2012, 2:43 PM

Post #53 of 56 (42 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 7bf8ac742d2f by Brett Cannon in branch 'default':
Issue #13959: Introduce importlib.find_loader().
http://hg.python.org/cpython/rev/7bf8ac742d2f

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 12, 2012, 2:49 PM

Post #54 of 56 (43 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Brett Cannon <brett [at] python> added the comment:

I have importlib.find_loader() coded up, but getting rid of find_module() is going to be a pain thanks to pkgutil, multiprocessing.forking, modulefinder, and idlelib.EditorWindow.

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 13, 2012, 9:32 AM

Post #55 of 56 (43 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Changes by Brett Cannon <brett [at] python>:


----------
dependencies: +Deprecate imp.find_module()/load_module()

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com


report at bugs

May 13, 2012, 10:04 AM

Post #56 of 56 (43 views)
Permalink
[issue13959] Re-implement parts of imp in pure Python [In reply to]

Roundup Robot <devnull [at] psf> added the comment:

New changeset 59870239813c by Brett Cannon in branch 'default':
Issue #13959: Document imp.find_module/load_module as deprecated.
http://hg.python.org/cpython/rev/59870239813c

----------

_______________________________________
Python tracker <report [at] bugs>
<http://bugs.python.org/issue13959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com

Python bugs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.