##// END OF EJS Templates
Merge pull request #1495 from rkern/fix-hyperobject-pprint...
Merge pull request #1495 from rkern/fix-hyperobject-pprint BUG: Fix pretty-printing for overzealous objects Some classes use __getattr__ to automatically create requested attributes. The recent trend of LINQ-like query objects is what I ran into. This confuses the pretty-printing machinery that tests for _repr_pretty_. This pull request fixes many of these problems by simply testing if the _repr_pretty_ attribute is callable. This may still be confused by certain mocking frameworks, but it's a good start.

File last commit:

r2267:928c921b
r6272:873e3647 merge
Show More
ipy_which.py
76 lines | 1.9 KiB | text/x-python | PythonLexer
vivainio
crlf cleanup
r680 r""" %which magic command
%which <cmd> => search PATH for files matching PATH. Also scans aliases
"""
Brian Granger
ipapi.py => core/ipapi.py and imports updated.
r2027 from IPython.core import ipapi
ip = ipapi.get()
vivainio
crlf cleanup
r680
import os,sys
from fnmatch import fnmatch
def which(fname):
fullpath = filter(os.path.isdir,os.environ['PATH'].split(os.pathsep))
if '.' not in fullpath:
fullpath = ['.'] + fullpath
fn = fname
for p in fullpath:
for f in os.listdir(p):
head, ext = os.path.splitext(f)
if f == fn or fnmatch(head, fn):
yield os.path.join(p,f)
return
def which_alias(fname):
Brian Granger
Continuing a massive refactor of everything.
r2205 for al, tgt in ip.alias_table.items():
vivainio
crlf cleanup
r680 if not (al == fname or fnmatch(al, fname)):
continue
vivainio
improve callable alias inspection
r831 if callable(tgt):
print "Callable alias",tgt
d = tgt.__doc__
if d:
print "Docstring:\n",d
continue
vivainio
crlf cleanup
r680 trg = tgt[1]
trans = ip.expand_alias(trg)
cmd = trans.split(None,1)[0]
print al,"->",trans
for realcmd in which(cmd):
print " ==",realcmd
def which_f(self, arg):
r""" %which <cmd> => search PATH for files matching cmd. Also scans aliases.
Traverses PATH and prints all files (not just executables!) that match the
pattern on command line. Probably more useful in finding stuff
interactively than 'which', which only prints the first matching item.
Also discovers and expands aliases, so you'll see what will be executed
when you call an alias.
Example:
[~]|62> %which d
d -> ls -F --color=auto
== c:\cygwin\bin\ls.exe
c:\cygwin\bin\d.exe
[~]|64> %which diff*
diff3 -> diff3
== c:\cygwin\bin\diff3.exe
diff -> diff
== c:\cygwin\bin\diff.exe
c:\cygwin\bin\diff.exe
c:\cygwin\bin\diff3.exe
"""
which_alias(arg)
for e in which(arg):
print e
Brian Granger
Continuing a massive refactor of everything.
r2205 ip.define_magic("which",which_f)
vivainio
crlf cleanup
r680