Show More
@@ -41,6 +41,7 b' from IPython.utils.wildcard import list_namespace' | |||
|
41 | 41 | from IPython.utils.coloransi import TermColors, ColorScheme, ColorSchemeTable |
|
42 | 42 | from IPython.utils.py3compat import cast_unicode, string_types, PY3 |
|
43 | 43 | from IPython.utils.colorable import Colorable |
|
44 | from IPython.utils.decorators import undoc | |
|
44 | 45 | |
|
45 | 46 | from pygments import highlight |
|
46 | 47 | from pygments.lexers import PythonLexer |
@@ -231,31 +232,12 b' def format_argspec(argspec):' | |||
|
231 | 232 | return inspect.formatargspec(argspec['args'], argspec['varargs'], |
|
232 | 233 | argspec['varkw'], argspec['defaults']) |
|
233 | 234 | |
|
234 | ||
|
235 | @undoc | |
|
235 | 236 | def call_tip(oinfo, format_call=True): |
|
236 | """Extract call tip data from an oinfo dict. | |
|
237 | ||
|
238 | Parameters | |
|
239 | ---------- | |
|
240 | oinfo : dict | |
|
241 | ||
|
242 | format_call : bool, optional | |
|
243 | If True, the call line is formatted and returned as a string. If not, a | |
|
244 | tuple of (name, argspec) is returned. | |
|
245 | ||
|
246 | Returns | |
|
247 | ------- | |
|
248 | call_info : None, str or (str, dict) tuple. | |
|
249 | When format_call is True, the whole call information is formattted as a | |
|
250 | single string. Otherwise, the object's name and its argspec dict are | |
|
251 | returned. If no call information is available, None is returned. | |
|
252 | ||
|
253 | docstring : str or None | |
|
254 | The most relevant docstring for calling purposes is returned, if | |
|
255 | available. The priority is: call docstring for callable instances, then | |
|
256 | constructor docstring for classes, then main object's docstring otherwise | |
|
257 | (regular functions). | |
|
237 | """DEPRECATED. Extract call tip data from an oinfo dict. | |
|
258 | 238 | """ |
|
239 | warnings.warn('`call_tip` function is deprecated as of IPython 5.2 ' | |
|
240 | 'and will have no effects.', DeprecationWarning, stacklevel=2) | |
|
259 | 241 | # Get call definition |
|
260 | 242 | argspec = oinfo.get('argspec') |
|
261 | 243 | if argspec is None: |
@@ -206,69 +206,10 b' class SerialLiar(object):' | |||
|
206 | 206 | def __getattr__(self, item): |
|
207 | 207 | return SerialLiar(self.max_fibbing_twig, self.lies_told + 1) |
|
208 | 208 | |
|
209 | ||
|
210 | def check_calltip(obj, name, call, docstring): | |
|
211 | """Generic check pattern all calltip tests will use""" | |
|
212 | info = inspector.info(obj, name) | |
|
213 | call_line, ds = oinspect.call_tip(info) | |
|
214 | nt.assert_equal(call_line, call) | |
|
215 | nt.assert_equal(ds, docstring) | |
|
216 | ||
|
217 | 209 | #----------------------------------------------------------------------------- |
|
218 | 210 | # Tests |
|
219 | 211 | #----------------------------------------------------------------------------- |
|
220 | 212 | |
|
221 | def test_calltip_class(): | |
|
222 | check_calltip(Call, 'Call', 'Call(x, y=1)', Call.__init__.__doc__) | |
|
223 | ||
|
224 | ||
|
225 | def test_calltip_instance(): | |
|
226 | c = Call(1) | |
|
227 | check_calltip(c, 'c', 'c(*a, **kw)', c.__call__.__doc__) | |
|
228 | ||
|
229 | ||
|
230 | def test_calltip_method(): | |
|
231 | c = Call(1) | |
|
232 | check_calltip(c.method, 'c.method', 'c.method(x, z=2)', c.method.__doc__) | |
|
233 | ||
|
234 | ||
|
235 | def test_calltip_function(): | |
|
236 | check_calltip(f, 'f', 'f(x, y=2, *a, **kw)', f.__doc__) | |
|
237 | ||
|
238 | ||
|
239 | def test_calltip_function2(): | |
|
240 | check_calltip(g, 'g', 'g(y, z=3, *a, **kw)', '<no docstring>') | |
|
241 | ||
|
242 | ||
|
243 | @skipif(sys.version_info >= (3, 5)) | |
|
244 | def test_calltip_builtin(): | |
|
245 | check_calltip(sum, 'sum', None, sum.__doc__) | |
|
246 | ||
|
247 | ||
|
248 | def test_calltip_line_magic(): | |
|
249 | check_calltip(lmagic, 'lmagic', 'lmagic(line)', "A line magic") | |
|
250 | ||
|
251 | ||
|
252 | def test_calltip_cell_magic(): | |
|
253 | check_calltip(cmagic, 'cmagic', 'cmagic(line, cell)', "A cell magic") | |
|
254 | ||
|
255 | ||
|
256 | def test_calltip_line_cell_magic(): | |
|
257 | check_calltip(lcmagic, 'lcmagic', 'lcmagic(line, cell=None)', | |
|
258 | "A line/cell magic") | |
|
259 | ||
|
260 | ||
|
261 | def test_class_magics(): | |
|
262 | cm = SimpleMagics(ip) | |
|
263 | ip.register_magics(cm) | |
|
264 | check_calltip(cm.Clmagic, 'Clmagic', 'Clmagic(cline)', | |
|
265 | "A class-based line magic") | |
|
266 | check_calltip(cm.Ccmagic, 'Ccmagic', 'Ccmagic(cline, ccell)', | |
|
267 | "A class-based cell magic") | |
|
268 | check_calltip(cm.Clcmagic, 'Clcmagic', 'Clcmagic(cline, ccell=None)', | |
|
269 | "A class-based line/cell magic") | |
|
270 | ||
|
271 | ||
|
272 | 213 | def test_info(): |
|
273 | 214 | "Check that Inspector.info fills out various fields as expected." |
|
274 | 215 | i = inspector.info(Call, oname='Call') |
General Comments 0
You need to be logged in to leave comments.
Login now