##// END OF EJS Templates
Important changes to simplify traitlets....
Important changes to simplify traitlets. Some aspect of traitlets were a bit too magical for us. Thus, we have simplified certain things to make it more straitforward: * Default values are always validated, but now, this is done when the HasTraitlets.__new__ is called. We used to do this the first time __get__ was called. * The klass argument of Type and Instance traitlets must be a class. Unlike enthought.traits, we are no longer accepting class names as str or instances. * The args and kw arguments to Instance.__init__ are now handled in better manner, but that is quite different from enthought.traits. * More tests of edge cases.

File last commit:

r2027:bff26de7
r2182:4cfda302
Show More
generics.py
54 lines | 1.7 KiB | text/x-python | PythonLexer
Fernando Perez
Small doc cleanup.
r1229 ''' 'Generic' functions for extending IPython.
vivainio
crlf normalization
r851
Fernando Perez
Small doc cleanup.
r1229 See http://cheeseshop.python.org/pypi/simplegeneric.
vivainio
crlf normalization
r851
Fernando Perez
Small doc cleanup.
r1229 Here is an example from genutils.py:
vivainio
crlf normalization
r851
def print_lsstring(arg):
Fernando Perez
Small doc cleanup.
r1229 "Prettier (non-repr-like) and more informative printer for LSString"
vivainio
crlf normalization
r851 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
Fernando Perez
Small doc cleanup.
r1229 can use the niftier decorator syntax introduced in Python 2.4).
vivainio
crlf normalization
r851 '''
Brian Granger
ipapi.py => core/ipapi.py and imports updated.
r2027 from IPython.core.ipapi import TryNext
Fernando Perez
Small doc cleanup.
r1229 from IPython.external.simplegeneric import generic
vivainio
crlf normalization
r851 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
vivainio
implement complete_object(obj, prev_completions) generic function to provide custom completers for python object attributes (as opposed to string dispatching)
r908 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)