generics.py
55 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
/ IPython / generics.py
ville
|
r988 | from IPython.ipapi import TryNext | ||
from IPython.external.simplegeneric import generic | ||||
''' 'Generic' functions for extending IPython | ||||
See http://cheeseshop.python.org/pypi/simplegeneric | ||||
Here's an example from genutils.py: | ||||
def print_lsstring(arg): | ||||
""" Prettier (non-repr-like) and more informative printer for LSString """ | ||||
print "LSString (.p, .n, .l, .s available). Value:" | ||||
print arg | ||||
print_lsstring = result_display.when_type(LSString)(print_lsstring) | ||||
(Yes, the nasty syntax is for python 2.3 compatibility. Your own extensions | ||||
can use the niftier decorator syntax) | ||||
''' | ||||
def result_display(result): | ||||
""" print the result of computation """ | ||||
raise TryNext | ||||
result_display = generic(result_display) | ||||
def inspect_object(obj): | ||||
""" Called when you do obj? """ | ||||
raise TryNext | ||||
inspect_object = generic(inspect_object) | ||||
def complete_object(obj, prev_completions): | ||||
""" Custom completer dispatching for python objects | ||||
obj is the object itself. | ||||
prev_completions is the list of attributes discovered so far. | ||||
This should return the list of attributes in obj. If you only wish to | ||||
add to the attributes already discovered normally, return | ||||
own_attrs + prev_completions. | ||||
""" | ||||
raise TryNext | ||||
complete_object = generic(complete_object) | ||||
#import os | ||||
#def my_demo_complete_object(obj, prev_completions): | ||||
# """ Demo completer that adds 'foobar' to the completions suggested | ||||
# for any object that has attribute (path), e.g. 'os'""" | ||||
# if hasattr(obj,'path'): | ||||
# return prev_completions + ['foobar'] | ||||
# raise TryNext | ||||
# | ||||
#my_demo_complete_object = complete_object.when_type(type(os))(my_demo_complete_object) | ||||