[IPython-dev] ipipe news

Fernando Perez Fernando.Perez at colorado.edu
Thu Mar 2 17:57:08 CST 2006


Walter Dörwald wrote:

>>I'd like to ask though, if I'm doing something wrong in trying to use 
>>it.  I simply read the 'ipipe?' docstring and typed the first example:
>>
>>In [1]: from ipipe import *
>>
>>In [2]: iwalk | ifilter("name.endswith('.py')") | isort("size")
>>
>>
>>It all seems to work (I saw a lot of network traffic, consistent with a 
>>directory traversal on our NFS-mounted filesystem).  But the curses 
>>browser doesn't show anything at all when it opens, and no error is 
>>printed.  It lists '0 objects' in the status line.  Am I missing 
>>something here?
> 
> 
> isort() of course first has to fetch the complete input, before it can 
> sort the objects, so this might take longer. Dropping the sort 
> expression should speed up the initial display.
> 
> But as you get '0 objects' this probably means that you don't have any 
> Python source files in your current directory.

No, that's not the case:

In [4]: ls *.py
argv.py*  cf.py   env.py*    exit2.py*     sciweave.py  vars.py
avg.py*   die.py  error.py*  exit.py*      scopes.py*   xplot.py*
bar.py    div.py  err.py     ramptest.py*  strings.py

And in addition, I thought it was recursive, so I thought it would work even 
if the parent directory had no .py files (as long as subdirs had them).

> What happens if you do a simple "iwalk"?

That works fine.  But

iwalk | ifilter("name.endswith('.py')")

gives an empty browser, and

iwalk | isort("size")

produces a lovely traceback (here's just the end of it, let me know if you 
want a full one in verbose mode, I'll attach it).

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
_dodisplay(self, scr)
    1854             self.levels = []
    1855             # enter the first level
-> 1856             self.enter(self.input, xiter(self.input, "default"), 
*self.attrs)
    1857
    1858             self._calcheaderlines(None)

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
enter(self, item, mode, *attrs)
    1799                     item,
    1800                     iterator,
-> 1801                     self.scrsizey-1-self._headerlines-2,
    1802                     *attrs
    1803                 )

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
__init__(self, browser, input, iterator, mainsizey, *attrs)
    1399             self.colwidths = {} # Maps attribute names to column widths
    1400
-> 1401             self.fetch(mainsizey)
    1402             self.calcdisplayattrs()
    1403             # formatted attributes for the items on screen

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
fetch(self, count)
    1414                 except StopIteration:
    1415                     self.exhausted = True
-> 1416                     break
    1417                 else:
    1418                     have += 1

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
__xiter__(self, mode)
     988                 xiter(self.input, mode),
     989                 key=key,
--> 990                 reverse=self.reverse
     991             )
     992         for item in items:

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
sorted(iterator, key, reverse)
      56         items = list(iterator)
      57         if key is not None:
---> 58             items.sort(lambda i1, i2: cmp(key(i1), key(i2)))
      59         else:
      60             items.sort()

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
<lambda>(i1, i2)
      56         items = list(iterator)
      57         if key is not None:
---> 58             items.sort(lambda i1, i2: cmp(key(i1), key(i2)))
      59         else:
      60             items.sort()

/home/fperez/usr/lib/python2.3/site-packages/IPython/Extensions/ipipe.py in 
key(item)
     984         else:
     985             def key(item):
--> 986                 return eval(self.key, globals(), _AttrNamespace(item))
     987             items = sorted(
     988                 xiter(self.input, mode),

TypeError: eval() argument 3 must be dict, not _AttrNamespace


Cheers,

f




More information about the IPython-dev mailing list