Show More
@@ -83,7 +83,7 b' three extensions points (all of them optional):' | |||||
83 | """ |
|
83 | """ | |
84 |
|
84 | |||
85 | import sys, os, os.path, stat, glob, new, csv, datetime, types |
|
85 | import sys, os, os.path, stat, glob, new, csv, datetime, types | |
86 | import itertools, mimetypes |
|
86 | import itertools, mimetypes, StringIO | |
87 |
|
87 | |||
88 | try: # Python 2.3 compatibility |
|
88 | try: # Python 2.3 compatibility | |
89 | import collections |
|
89 | import collections | |
@@ -136,7 +136,7 b' import astyle' | |||||
136 | __all__ = [ |
|
136 | __all__ = [ | |
137 | "ifile", "ils", "iglob", "iwalk", "ipwdentry", "ipwd", "igrpentry", "igrp", |
|
137 | "ifile", "ils", "iglob", "iwalk", "ipwdentry", "ipwd", "igrpentry", "igrp", | |
138 | "icsv", "ix", "ichain", "isort", "ifilter", "ieval", "ienum", |
|
138 | "icsv", "ix", "ichain", "isort", "ifilter", "ieval", "ienum", | |
139 | "ienv", "ihist", "idump", "iless" |
|
139 | "ienv", "ihist", "icap", "idump", "iless" | |
140 | ] |
|
140 | ] | |
141 |
|
141 | |||
142 |
|
142 | |||
@@ -1966,6 +1966,81 b' class iless(Display):' | |||||
1966 | print "%s: %s" % (exc.__class__.__name__, str(exc)) |
|
1966 | print "%s: %s" % (exc.__class__.__name__, str(exc)) | |
1967 |
|
1967 | |||
1968 |
|
1968 | |||
|
1969 | class _RedirectIO(object): | |||
|
1970 | def __init__(self,*args,**kwargs): | |||
|
1971 | """ | |||
|
1972 | Map the system output streams to self. | |||
|
1973 | """ | |||
|
1974 | self.stream = StringIO.StringIO() | |||
|
1975 | self.stdout = sys.stdout | |||
|
1976 | sys.stdout = self | |||
|
1977 | self.stderr = sys.stderr | |||
|
1978 | sys.stderr = self | |||
|
1979 | ||||
|
1980 | def write(self, text): | |||
|
1981 | """ | |||
|
1982 | Write both to screen and to self. | |||
|
1983 | """ | |||
|
1984 | self.stream.write(text) | |||
|
1985 | self.stdout.write(text) | |||
|
1986 | if "\n" in text: | |||
|
1987 | self.stdout.flush() | |||
|
1988 | ||||
|
1989 | def writelines(self, lines): | |||
|
1990 | """ | |||
|
1991 | Write lines both to screen and to self. | |||
|
1992 | """ | |||
|
1993 | self.stream.writelines(lines) | |||
|
1994 | self.stdout.writelines(lines) | |||
|
1995 | self.stdout.flush() | |||
|
1996 | ||||
|
1997 | def restore(self): | |||
|
1998 | """ | |||
|
1999 | Restore the default system streams. | |||
|
2000 | """ | |||
|
2001 | self.stdout.flush() | |||
|
2002 | self.stderr.flush() | |||
|
2003 | sys.stdout = self.stdout | |||
|
2004 | sys.stderr = self.stderr | |||
|
2005 | ||||
|
2006 | ||||
|
2007 | class icap(Table): | |||
|
2008 | """ | |||
|
2009 | Execute a python string and capture any output to stderr/stdout. | |||
|
2010 | ||||
|
2011 | Examples: | |||
|
2012 | ||||
|
2013 | >>> import time | |||
|
2014 | >>> icap("for i in range(10): print i, time.sleep(0.1)") | |||
|
2015 | ||||
|
2016 | """ | |||
|
2017 | def __init__(self, expr, globals=None): | |||
|
2018 | self.expr = expr | |||
|
2019 | self.globals = globals | |||
|
2020 | log = _RedirectIO() | |||
|
2021 | try: | |||
|
2022 | exec(expr, getglobals(globals)) | |||
|
2023 | finally: | |||
|
2024 | log.restore() | |||
|
2025 | self.stream = log.stream | |||
|
2026 | ||||
|
2027 | def __iter__(self): | |||
|
2028 | self.stream.seek(0) | |||
|
2029 | for line in self.stream: | |||
|
2030 | yield line.rstrip("\r\n") | |||
|
2031 | ||||
|
2032 | def __xrepr__(self, mode="default"): | |||
|
2033 | if mode == "header" or mode == "footer": | |||
|
2034 | yield (astyle.style_default, | |||
|
2035 | "%s(%r)" % (self.__class__.__name__, self.expr)) | |||
|
2036 | else: | |||
|
2037 | yield (astyle.style_default, repr(self)) | |||
|
2038 | ||||
|
2039 | def __repr__(self): | |||
|
2040 | return "%s.%s(%r)" % \ | |||
|
2041 | (self.__class__.__module__, self.__class__.__name__, self.expr) | |||
|
2042 | ||||
|
2043 | ||||
1969 | def xformat(value, mode, maxlength): |
|
2044 | def xformat(value, mode, maxlength): | |
1970 | align = None |
|
2045 | align = None | |
1971 | full = True |
|
2046 | full = True |
@@ -1,3 +1,9 b'' | |||||
|
1 | 2007-06-05 Walter Doerwald <walter@livinglogic.de> | |||
|
2 | ||||
|
3 | * IPython/Extensions/ipipe.py: Added a new table icap, which executes a | |||
|
4 | Python string and captures the output. (Idea and original patch by | |||
|
5 | St�fan van der Walt) | |||
|
6 | ||||
1 | 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu> |
|
7 | 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu> | |
2 |
|
8 | |||
3 | * IPython/ultraTB.py (VerboseTB.text): update printing of |
|
9 | * IPython/ultraTB.py (VerboseTB.text): update printing of |
General Comments 0
You need to be logged in to leave comments.
Login now