This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eric.snow
Recipients Arfrever, berker.peksag, brett.cannon, eric.snow, larry, ncoghlan
Date 2013-11-11.22:40:31
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1384209632.54.0.0757275473855.issue18864@psf.upfronthosting.co.za>
In-reply-to
Content
Sorry that wasn't more clear.  I committed the changes from the modulespec-primary-changes.diff patch to the pep451 branch in the server-side clone.  Those changes are:

Step 1
------
1. added ModuleSpec class
2. added _SpecMethods wrapper class
3. added ModuleSpec factory functions
4. added tests for ModuleSpec, _SpecMethods, and the factories
5. exposed ModuleSpec in importlib.machinery
6. exposed ModuleSpec factories in importlib.util
7. added basic docs for ModuleSpec and the factory functions

Step 2
------
1. changed _find_module() to _find_spec()
2. changed _find_and_load_unlocked() to use _find_spec() and _SpecMethods
3. changed _setup() to use specs
4. changed pydoc to recognize __spec__

Step 3
------
1. updated the import reference doc
2. changed importlib.reload() to use specs
3. added importlib.find_spec()
4. changed importlib.find_loader() to wrap find_spec()
5. updated importlib.abc to reflect the new APIs
6. changed pkgutil to use specs
7. changed imp to use specs
8. fixed a bunch of broken tests to use spec

Step 3
------
1. implemented find_spec() on PathFinder
2. implemented find_spec() on FileFinder
3. re-implemented FileFinder.find_loader() to wrap find_spec()
4. re-implemented PathFinder.find_module() to wrap find_spec()
5. changed _NamespacePath to use specs

Step 5
------
1. added _module_repr function
2. changed ModuleType.__repr__ to wrap _module_repr

Others
------
* removed _NamespaceLoader
* added comments indicating deprecations and removals

At this point, the test suite passes and the fundamental changes of the PEP are implemented (on the server-side clone).  Here's what's left to do before the feature freeze:

1. 
2. change module.__initializing__ to module.__spec__._initializing
3. refactor importlib loaders to use the new Finder/Loader APIs
4. refactor pythonrun.c to make use of specs
5. check pkgutil for any missed changes
6. implement the deprecations and removals
7. adjust other APIs to use __spec__ (pickle, runpy, inspect, pydoc, others?)
8. evaluate any impact on setuptools

Other things that can (but don't have to) wait until after the beta release:

* finish doc changes
* fill in any gaps in test coverage
* ensure new docstrings exist and are correct
* ensure existing docstrings are still correct
History
Date User Action Args
2013-11-11 22:40:32eric.snowsetrecipients: + eric.snow, brett.cannon, ncoghlan, larry, Arfrever, berker.peksag
2013-11-11 22:40:32eric.snowsetmessageid: <1384209632.54.0.0757275473855.issue18864@psf.upfronthosting.co.za>
2013-11-11 22:40:32eric.snowlinkissue18864 messages
2013-11-11 22:40:31eric.snowcreate