##// END OF EJS Templates
Clarifying what the sandbox is in reorg.txt.
Brian Granger -
Show More
@@ -1,225 +1,226 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.python`. This sub-package will contain anything that might
59 59 eventually be found in the Python standard library, like things in
60 60 :mod:`genutils`. Each sub-module in this sub-package should contain functions
61 61 and classes that serve a single purpose. Similar in purpose to
62 62 :mod:`twisted.python`. Could also call this :mod:`IPython.tools`,
63 63 :mod:`IPython.utils` or something similar.
64 64
65 65 * :mod:`IPython.sandbox`. This is for code that is untested and/or rotting and
66 66 needs to be removed from IPython. Eventually all this code will either i) be
67 67 revived by someone willing to maintain it with tests and docs and
68 68 re-included into IPython or 2) be removed from IPython proper, but put into
69 a separate top-level (not IPython) package that we keep around.
69 a separate top-level (not IPython) package that we keep around. No new code
70 will be allowed here, so maybe "sandbox" is not the best name.
70 71
71 72 Where things will be moved
72 73 ==========================
73 74
74 75 * :file:`ColorANSI.py`. Move to :file:`IPython/core/coloransi.py`. Maybe move to
75 76 :mod:`IPython.lib` or :mod:`IPython.python`?
76 77
77 78 * :file:`ConfigLoader.py`. Move to :file:`IPython/config/configloader.py`.
78 79
79 80 * :file:`CrashHandler.py`. Move to :file:`IPython/core/crashhandler`.
80 81
81 82 * :file:`DPyGetOpt.py`. Move to :mod:`IPython.sandbox` and replace with newer options parser.
82 83
83 84 * :file:`Debugger.py`. Move to :file:`IPython/core/debugger.py`.
84 85
85 86 * :file:`Extensions`. This needs to be gone through separately. Minimally,
86 87 the package should be renamed to :file:`extensions`.
87 88
88 89 * :file:`FakeModule.py`. Move to :file:`IPython/core/fakemodule.py`.
89 90
90 91 * :file:`Gnuplot2.py`. Move to :file:`IPython.sandbox`.
91 92
92 93 * :file:`GnuplotInteractive.py`. Move to :file:`IPython.sandbox`.
93 94
94 95 * :file:`GnuplotRuntime.py`. Move to :file:`IPython.sandbox`.
95 96
96 97 * :file:`Itpl.py`. Remove. Version already in :file:`IPython.external`.
97 98
98 99 * :file:`Logger.py`. Move to :file:`IPython/core/logger.py`.
99 100
100 101 * :file:`Magic.py`. Move to :file:`IPython/core/magic.py`.
101 102
102 103 * :file:`OInspect.py`. Move to :file:`IPython/core/oinspect.py`.
103 104
104 105 * :file:`OutputTrap.py`. Move to :file:`IPython/core/outputtrap.py`.
105 106
106 107 * :file:`Prompts.py`. Move to :file:`IPython/core/prompts.py` or
107 108 :file:`IPython/frontend/prompts.py`.
108 109
109 110 * :file:`PyColorize.py`. Replace with pygments? If not, move to
110 111 :file:`IPython/core/pycolorize.py`. Maybe move to :mod:`IPython.lib` or
111 112 :mod:`IPython.python`?
112 113
113 114 * :file:`Release.py`. Move to ??? or remove?
114 115
115 116 * :file:`Shell.py`. Move to :file:`IPython.core.shell.py` or
116 117 :file:`IPython/frontend/shell.py`.
117 118
118 119 * :file:`UserConfig`. Move to a subdirectory of :file:`IPython.config`.
119 120
120 121 * :file:`background_jobs.py`. Move to :file:`IPython/lib/backgroundjobs.py`.
121 122
122 123 * :file:`completer.py`. Move to :file:`IPython/core/completer.py`.
123 124
124 125 * :file:`config`. Good where it is!
125 126
126 127 * :file:`deep_reload.py`. Move to :file:`IPython/lib/deepreload.py`.
127 128
128 129 * :file:`demo.py`. Move to :file:`IPython/lib/demo.py`.
129 130
130 131 * :file:`dtutils.py`. Remove or move to :file:`IPython.testing` or
131 132 :file:`IPython.lib`.
132 133
133 134 * :file:`excolors.py`. Move to :file:`IPython.core` or :file:`IPython.config`.
134 135 Maybe move to :mod:`IPython.lib` or :mod:`IPython.python`?
135 136
136 137 * :file:`external`. Good where it is!
137 138
138 139 * :file:`frontend`. Good where it is!
139 140
140 141 * :file:`generics.py`. Move to :file:`IPython.python`.
141 142
142 143 * :file:`genutils.py`. Move to :file:`IPython.python` and break up into different
143 144 modules.
144 145
145 146 * :file:`gui`. Eventually this should be moved to a subdir of
146 147 :file:`IPython.frontend`.
147 148
148 149 * :file:`history.py`. Move to :file:`IPython.core`.
149 150
150 151 * :file:`hooks.py`. Move to :file:`IPython.core`.
151 152
152 153 * :file:`ipapi.py`. Move to :file:`IPython.core`.
153 154
154 155 * :file:`iplib.py`. Move to :file:`IPython.core`.
155 156
156 157 * :file:`ipmaker.py`: Move to :file:`IPython.core`.
157 158
158 159 * :file:`ipstruct.py`. Move to :file:`IPython.python`.
159 160
160 161 * :file:`irunner.py`. Move to :file:`IPython.scripts`.
161 162
162 163 * :file:`kernel`. Good where it is.
163 164
164 165 * :file:`macro.py`. Move to :file:`IPython.core`.
165 166
166 167 * :file:`numutils.py`. Move to :file:`IPython.sandbox`.
167 168
168 169 * :file:`platutils.py`. Move to :file:`IPython.python`.
169 170
170 171 * :file:`platutils_dummy.py`. Move to :file:`IPython.python`.
171 172
172 173 * :file:`platutils_posix.py`. Move to :file:`IPython.python`.
173 174
174 175 * :file:`platutils_win32.py`. Move to :file:`IPython.python`.
175 176
176 177 * :file:`prefilter.py`: Move to :file:`IPython.core`.
177 178
178 179 * :file:`rlineimpl.py`. Move to :file:`IPython.core`.
179 180
180 181 * :file:`shadowns.py`. Move to :file:`IPython.core`.
181 182
182 183 * :file:`shellglobals.py`. Move to :file:`IPython.core`.
183 184
184 185 * :file:`strdispatch.py`. Move to :file:`IPython.python`.
185 186
186 187 * :file:`testing`. Good where it is.
187 188
188 189 * :file:`tests`. Good where it is.
189 190
190 191 * :file:`tools`. Things in here need to be looked at and moved elsewhere like
191 192 :file:`IPython.python`.
192 193
193 194 * :file:`twshell.py`. Move to :file:`IPython.sandbox`.
194 195
195 196 * :file:`ultraTB.py`. Move to :file:`IPython/core/ultratb.py`.
196 197
197 198 * :file:`upgrade_dir.py`. Move to :file:`IPython/python/upgradedir.py`.
198 199
199 200 * :file:`usage.py`. Move to :file:`IPython.core`.
200 201
201 202 * :file:`wildcard.py`. Move to :file:`IPython.python` or :file:`IPython.core`.
202 203
203 204 * :file:`winconsole.py`. Move to :file:`IPython.lib`.
204 205
205 206 Other things
206 207 ============
207 208
208 209 When these files are moved around, a number of other things will happen at the same time:
209 210
210 211 1. Test files will be created for each module in IPython. Minimally, all
211 212 modules will be imported as a part of the test. This will serve as a
212 213 test of the module reorganization. These tests will be put into new
213 214 :file:`tests` subdirectories that each package will have.
214 215
215 216 2. PyFlakes and other code checkers will be run to look for problems.
216 217
217 218 3. Modules will be renamed to comply with PEP 8 naming conventions: all
218 219 lowercase and no special characters like ``-`` or ``_``.
219 220
220 221 4. Existing tests will be moved to the appropriate :file:`tests`
221 222 subdirectories.
222 223
223 224
224 225
225 226
General Comments 0
You need to be logged in to leave comments. Login now