##// END OF EJS Templates
Created new sub-packages.
Brian Granger -
Show More
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
@@ -1,228 +1,228 b''
1 1 =============================
2 2 IPython module reorganization
3 3 =============================
4 4
5 5 Currently, IPython has many top-level modules that serve many different purposes.
6 6 The lack of organization make it very difficult for developers to work on IPython
7 7 and understand its design. This document contains notes about how we will reorganize
8 8 the modules into sub-packages.
9 9
10 10 .. warning::
11 11
12 12 This effort will possibly break third party packages that use IPython as
13 13 a library or hack on the IPython internals.
14 14
15 15 .. warning::
16 16
17 17 This effort will result in the removal from IPython of certain modules
18 18 that are not used anymore, don't currently work, are unmaintained, etc.
19 19
20 20
21 21 Current subpackges
22 22 ==================
23 23
24 24 IPython currently has the following sub-packages:
25 25
26 26 * :mod:`IPython.config`
27 27
28 28 * :mod:`IPython.Extensions`
29 29
30 30 * :mod:`IPython.external`
31 31
32 32 * :mod:`IPython.frontend`
33 33
34 34 * :mod:`IPython.gui`
35 35
36 36 * :mod:`IPython.kernel`
37 37
38 38 * :mod:`IPython.testing`
39 39
40 40 * :mod:`IPython.tests`
41 41
42 42 * :mod:`IPython.tools`
43 43
44 44 * :mod:`IPython.UserConfig`
45 45
46 46 New Subpackages to be created
47 47 =============================
48 48
49 49 We propose to create the following new sub-packages:
50 50
51 51 * :mod:`IPython.core`. This sub-package will contain the core of the IPython
52 52 interpreter, but none of its extended capabilities.
53 53
54 54 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
55 55 of the IPython core. These things will go here. Any better names than
56 56 :mod:`IPython.lib`?
57 57
58 58 * :mod:`IPython.utils`. This sub-package will contain anything that might
59 59 eventually be found in the Python standard library, like things in
60 :mod:`genutils`. Each sub-module in this sub-package should contain functions
61 and classes that serve a single purpose.
60 :mod:`genutils`. Each sub-module in this sub-package should contain
61 functions and classes that serve a single purpose.
62 62
63 63 * :mod:`IPython.deathrow`. This is for code that is untested and/or rotting
64 64 and needs to be removed from IPython. Eventually all this code will either
65 65 i) be revived by someone willing to maintain it with tests and docs and
66 66 re-included into IPython or 2) be removed from IPython proper, but put into
67 67 a separate top-level (not IPython) package that we keep around. No new code
68 68 will be allowed here.
69 69
70 70 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
71 71 standards, but that we plan on keeping. To be moved out of this sub-package
72 72 a module needs to have a maintainer, tests and documentation.
73 73
74 74 Where things will be moved
75 75 ==========================
76 76
77 77 * :file:`ColorANSI.py`. Move to :file:`IPython/core/coloransi.py`. Maybe move to
78 78 :mod:`IPython.lib` or :mod:`IPython.python`?
79 79
80 80 * :file:`ConfigLoader.py`. Move to :file:`IPython/config/configloader.py`.
81 81
82 82 * :file:`CrashHandler.py`. Move to :file:`IPython/core/crashhandler`.
83 83
84 84 * :file:`DPyGetOpt.py`. Move to :mod:`IPython.sandbox` and replace with newer options parser.
85 85
86 86 * :file:`Debugger.py`. Move to :file:`IPython/core/debugger.py`.
87 87
88 88 * :file:`Extensions`. This needs to be gone through separately. Minimally,
89 89 the package should be renamed to :file:`extensions`.
90 90
91 91 * :file:`FakeModule.py`. Move to :file:`IPython/core/fakemodule.py`.
92 92
93 93 * :file:`Gnuplot2.py`. Move to :file:`IPython.sandbox`.
94 94
95 95 * :file:`GnuplotInteractive.py`. Move to :file:`IPython.sandbox`.
96 96
97 97 * :file:`GnuplotRuntime.py`. Move to :file:`IPython.sandbox`.
98 98
99 99 * :file:`Itpl.py`. Remove. Version already in :file:`IPython.external`.
100 100
101 101 * :file:`Logger.py`. Move to :file:`IPython/core/logger.py`.
102 102
103 103 * :file:`Magic.py`. Move to :file:`IPython/core/magic.py`.
104 104
105 105 * :file:`OInspect.py`. Move to :file:`IPython/core/oinspect.py`.
106 106
107 107 * :file:`OutputTrap.py`. Move to :file:`IPython/core/outputtrap.py`.
108 108
109 109 * :file:`Prompts.py`. Move to :file:`IPython/core/prompts.py` or
110 110 :file:`IPython/frontend/prompts.py`.
111 111
112 112 * :file:`PyColorize.py`. Replace with pygments? If not, move to
113 113 :file:`IPython/core/pycolorize.py`. Maybe move to :mod:`IPython.lib` or
114 114 :mod:`IPython.python`?
115 115
116 116 * :file:`Release.py`. Move to ??? or remove?
117 117
118 118 * :file:`Shell.py`. Move to :file:`IPython.core.shell.py` or
119 119 :file:`IPython/frontend/shell.py`.
120 120
121 121 * :file:`UserConfig`. Move to a subdirectory of :file:`IPython.config`.
122 122
123 123 * :file:`background_jobs.py`. Move to :file:`IPython/lib/backgroundjobs.py`.
124 124
125 125 * :file:`completer.py`. Move to :file:`IPython/core/completer.py`.
126 126
127 127 * :file:`config`. Good where it is!
128 128
129 129 * :file:`deep_reload.py`. Move to :file:`IPython/lib/deepreload.py`.
130 130
131 131 * :file:`demo.py`. Move to :file:`IPython/lib/demo.py`.
132 132
133 133 * :file:`dtutils.py`. Remove or move to :file:`IPython.testing` or
134 134 :file:`IPython.lib`.
135 135
136 136 * :file:`excolors.py`. Move to :file:`IPython.core` or :file:`IPython.config`.
137 137 Maybe move to :mod:`IPython.lib` or :mod:`IPython.python`?
138 138
139 139 * :file:`external`. Good where it is!
140 140
141 141 * :file:`frontend`. Good where it is!
142 142
143 143 * :file:`generics.py`. Move to :file:`IPython.python`.
144 144
145 145 * :file:`genutils.py`. Move to :file:`IPython.python` and break up into different
146 146 modules.
147 147
148 148 * :file:`gui`. Eventually this should be moved to a subdir of
149 149 :file:`IPython.frontend`.
150 150
151 151 * :file:`history.py`. Move to :file:`IPython.core`.
152 152
153 153 * :file:`hooks.py`. Move to :file:`IPython.core`.
154 154
155 155 * :file:`ipapi.py`. Move to :file:`IPython.core`.
156 156
157 157 * :file:`iplib.py`. Move to :file:`IPython.core`.
158 158
159 159 * :file:`ipmaker.py`: Move to :file:`IPython.core`.
160 160
161 161 * :file:`ipstruct.py`. Move to :file:`IPython.python`.
162 162
163 163 * :file:`irunner.py`. Move to :file:`IPython.scripts`.
164 164
165 165 * :file:`kernel`. Good where it is.
166 166
167 167 * :file:`macro.py`. Move to :file:`IPython.core`.
168 168
169 169 * :file:`numutils.py`. Move to :file:`IPython.sandbox`.
170 170
171 171 * :file:`platutils.py`. Move to :file:`IPython.python`.
172 172
173 173 * :file:`platutils_dummy.py`. Move to :file:`IPython.python`.
174 174
175 175 * :file:`platutils_posix.py`. Move to :file:`IPython.python`.
176 176
177 177 * :file:`platutils_win32.py`. Move to :file:`IPython.python`.
178 178
179 179 * :file:`prefilter.py`: Move to :file:`IPython.core`.
180 180
181 181 * :file:`rlineimpl.py`. Move to :file:`IPython.core`.
182 182
183 183 * :file:`shadowns.py`. Move to :file:`IPython.core`.
184 184
185 185 * :file:`shellglobals.py`. Move to :file:`IPython.core`.
186 186
187 187 * :file:`strdispatch.py`. Move to :file:`IPython.python`.
188 188
189 189 * :file:`testing`. Good where it is.
190 190
191 191 * :file:`tests`. Good where it is.
192 192
193 193 * :file:`tools`. Things in here need to be looked at and moved elsewhere like
194 194 :file:`IPython.python`.
195 195
196 196 * :file:`twshell.py`. Move to :file:`IPython.sandbox`.
197 197
198 198 * :file:`ultraTB.py`. Move to :file:`IPython/core/ultratb.py`.
199 199
200 200 * :file:`upgrade_dir.py`. Move to :file:`IPython/python/upgradedir.py`.
201 201
202 202 * :file:`usage.py`. Move to :file:`IPython.core`.
203 203
204 204 * :file:`wildcard.py`. Move to :file:`IPython.python` or :file:`IPython.core`.
205 205
206 206 * :file:`winconsole.py`. Move to :file:`IPython.lib`.
207 207
208 208 Other things
209 209 ============
210 210
211 211 When these files are moved around, a number of other things will happen at the same time:
212 212
213 213 1. Test files will be created for each module in IPython. Minimally, all
214 214 modules will be imported as a part of the test. This will serve as a
215 215 test of the module reorganization. These tests will be put into new
216 216 :file:`tests` subdirectories that each package will have.
217 217
218 218 2. PyFlakes and other code checkers will be run to look for problems.
219 219
220 220 3. Modules will be renamed to comply with PEP 8 naming conventions: all
221 221 lowercase and no special characters like ``-`` or ``_``.
222 222
223 223 4. Existing tests will be moved to the appropriate :file:`tests`
224 224 subdirectories.
225 225
226 226
227 227
228 228
General Comments 0
You need to be logged in to leave comments. Login now