blob: 1bbcb968e8628606905b0413363251a58dc61b00 [file] [log] [blame]
Brett Cannon23cbd8a2009-01-18 00:24:28 +00001to do
2/////
3
Brett Cannonc1761b72009-02-09 21:51:29 +00004* Refactor source/bytecode finder/loader code such that bytecode support is a
5 subclass of source support (makes it nicer for VMs that don't use CPython
6 bytecode).
7
Brett Cannon4afab6b2009-02-21 03:31:35 +00008 + PyLoader (for ABC)
Brett Cannon33dbf462009-02-17 07:15:17 +00009
10 - get_code for source only
Brett Cannon4afab6b2009-02-21 03:31:35 +000011
12 + PyFileLoader(PyLoader)
13
Brett Cannon33dbf462009-02-17 07:15:17 +000014 - get_data
15 - source_mtime
16 - source_path
17
Brett Cannon4afab6b2009-02-21 03:31:35 +000018 +PyPycLoader (PyLoader, for ABC)
Brett Cannon33dbf462009-02-17 07:15:17 +000019
Brett Cannon4afab6b2009-02-21 03:31:35 +000020 - get_code for source and bytecode
21
22 + PyPycFileLoader(PyPycLoader, PyFileLoader)
23
Brett Cannon33dbf462009-02-17 07:15:17 +000024 - bytecode_path
25 - write_bytecode
26
Brett Cannond0005ff2009-01-26 01:54:40 +000027* Implement PEP 302 protocol for loaders (should just be a matter of testing).
28
Brett Cannond0005ff2009-01-26 01:54:40 +000029 + Source/bytecode.
30
Brett Cannon6411aa52009-02-06 00:07:49 +000031* Public API left to expose (w/ docs!)
Brett Cannon5abdc932009-01-22 22:43:07 +000032
Brett Cannond2e7b332009-02-17 02:45:03 +000033 + abc
Brett Cannon5abdc932009-01-22 22:43:07 +000034
Brett Cannond2e7b332009-02-17 02:45:03 +000035 - Finder
Brett Cannon5abdc932009-01-22 22:43:07 +000036
Brett Cannond2e7b332009-02-17 02:45:03 +000037 * find_module
Brett Cannon5abdc932009-01-22 22:43:07 +000038
Brett Cannond2e7b332009-02-17 02:45:03 +000039 - Loader
Brett Cannon5abdc932009-01-22 22:43:07 +000040
Brett Cannond2e7b332009-02-17 02:45:03 +000041 * load_module
Brett Cannon5abdc932009-01-22 22:43:07 +000042
Brett Cannond2e7b332009-02-17 02:45:03 +000043 - (?) Importer(Finder, Loader)
44 - ResourceLoader(Loader)
Brett Cannon6411aa52009-02-06 00:07:49 +000045
Brett Cannond2e7b332009-02-17 02:45:03 +000046 * get_data
Brett Cannon5abdc932009-01-22 22:43:07 +000047
Brett Cannond2e7b332009-02-17 02:45:03 +000048 - InspectLoader(Loader)
Brett Cannon5abdc932009-01-22 22:43:07 +000049
Brett Cannond2e7b332009-02-17 02:45:03 +000050 * is_package
51 * get_code
52 * get_source
Brett Cannon5abdc932009-01-22 22:43:07 +000053
Brett Cannond2e7b332009-02-17 02:45:03 +000054 - (?) SourceLoader(ResourceLoader)
Brett Cannon5abdc932009-01-22 22:43:07 +000055
Brett Cannond2e7b332009-02-17 02:45:03 +000056 * source_path
57 * bytecode_path
58 * write_bytecode (not abstract)
Brett Cannon5abdc932009-01-22 22:43:07 +000059
Brett Cannond2e7b332009-02-17 02:45:03 +000060 + util
Brett Cannon5abdc932009-01-22 22:43:07 +000061
Brett Cannond2e7b332009-02-17 02:45:03 +000062 - set___package__ decorator
Brett Cannon5abdc932009-01-22 22:43:07 +000063
Brett Cannond2e7b332009-02-17 02:45:03 +000064 + machinery
Brett Cannon5abdc932009-01-22 22:43:07 +000065
Brett Cannond2e7b332009-02-17 02:45:03 +000066 - Extensions importers
Brett Cannon5abdc932009-01-22 22:43:07 +000067
Brett Cannond2e7b332009-02-17 02:45:03 +000068 * ExtensionFinder
69 * (?) Loader
Brett Cannon5abdc932009-01-22 22:43:07 +000070
Brett Cannond2e7b332009-02-17 02:45:03 +000071 - Source/bytecode importers
Brett Cannon5abdc932009-01-22 22:43:07 +000072
Brett Cannond2e7b332009-02-17 02:45:03 +000073 * SourceFinder
74 * (?) Loader
Brett Cannon5abdc932009-01-22 22:43:07 +000075
Brett Cannon22db67e2009-02-21 02:51:12 +000076 + test (Really want to worry about compatibility with future versions?)
Brett Cannon24b6a2c2009-01-18 00:36:55 +000077
Brett Cannond2e7b332009-02-17 02:45:03 +000078 - abc
79
80 * FinderTests [doc]
81 * LoaderTests [doc]
Brett Cannon2c318a12009-02-07 01:15:27 +000082
Brett Cannona2fcb1d2009-02-21 03:12:17 +000083* Remove ``import *`` from importlib.__init__.
84
85* Remove __all__ from importlib._bootstrap.
86
87* Add leading underscores to all objects in importlib._bootstrap that are not
88 publicly exposed.
89
Brett Cannondebb98d2009-02-16 04:18:01 +000090* Make sure that there is documentation *somewhere* fully explaining the
91semantics of import that can be referenced from the package's documentation
92(even if it is in the package documentation itself, although it might be best
93in the language specification).
94
Brett Cannon20b56e12009-02-01 05:55:23 +000095* Write benchmark suite.
96
97* OPTIMIZE!
98
Brett Cannon6411aa52009-02-06 00:07:49 +000099 + Fast path absolute name.
100 + Fast path pulling from sys.modules.
Brett Cannon20b56e12009-02-01 05:55:23 +0000101
Brett Cannon24b6a2c2009-01-18 00:36:55 +0000102* Bootstrap importlib as implementation of builtins.__import__
Brett Cannon438cecd2009-02-02 20:32:29 +0000103
104* Replace standard library modules.
105
106 + imp
107 + py_compile
108 + compileall