[IPython-user] [Python-Dev] a quit that actually quits
Walter Dörwald
walter at livinglogic.de
Wed Jan 4 16:35:07 CST 2006
Ville Vainio wrote:
> On 1/4/06, Fernando Perez <Fernando.Perez at colorado.edu> wrote:
>
>> Neat! This is a nice hack, I've saved it and will play with it later. Ville,
>> who's one of our resident ipython-as-shell diehards, might even 'ipythonize' it :)
>
> There certainly is potential for interesting uses... for the pipeline
> manipulation of "tables" that is.
>
> E.g. I'm thinking of
>
> findfiles('/tmp') / tablefilter('size > 10000 and
> name.lower().endswith(".cpp")')
>
> Where findfiles would output a "table" that it fills with all the
> basic file name & stat info, and "tablefilter" would dump all fields
> into locals() namespace and pass through only "lines" that pass
> "eval"-ing the argument string.
Or tablefilter could take a callable that gets passed the attributes as
keyword arguments than I could do:
def bigcpp(size, name, **rest):
return size>10000 and name.lower().endswith(".cpp")
findfiles('/tmp') / tablefilter(bigcpp)
Maybe we should have both. callables for building reusable components
and 'eval'ed strings for ad hoc filter expressions.
But of course it should be simple to define a tablefilter that takes a
callable, i.e. something like:
class tablefilter(Filter):
def __init__(self, func):
self.func = func
def filter(self, item):
attrs = dict((f, getattr(item, f)) for f in item.__shattrs__)
return func(**attrs)
> It's interesting to see how the idea evolves. It's certainly a step
> into a more "structured" shell-like behaviour. In addition to
> findfiles() we could have table-emitting methods like getsvninfo() for
> version control stuff, mp3files() that would tabulate id3 info from
> all mp3 files etc...
And if we get the API right, it should be easily extensible with new
functionality.
Bye,
Walter Dörwald
More information about the IPython-user
mailing list