Show More
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | """Magic functions for InteractiveShell. |
|
3 | 3 | |
|
4 |
$Id: Magic.py 9 |
|
|
4 | $Id: Magic.py 990 2006-01-04 06:59:02Z fperez $""" | |
|
5 | 5 | |
|
6 | 6 | #***************************************************************************** |
|
7 | 7 | # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and |
@@ -424,11 +424,12 b' Currently the magic system has the following functions:\\n"""' | |||
|
424 | 424 | def magic_autocall(self, parameter_s = ''): |
|
425 | 425 | """Make functions callable without having to type parentheses. |
|
426 | 426 | |
|
427 |
This |
|
|
427 | This cycles the autocall command line through its three valid values | |
|
428 | (0->Off, 1->Smart, 2->Full)""" | |
|
428 | 429 | |
|
429 | 430 | rc = self.shell.rc |
|
430 | 431 | rc.autocall = not rc.autocall |
|
431 |
print "Automatic calling is:",['OFF',' |
|
|
432 | print "Automatic calling is:",['OFF','Smart','Full'][rc.autocall] | |
|
432 | 433 | |
|
433 | 434 | def magic_autoindent(self, parameter_s = ''): |
|
434 | 435 | """Toggle autoindent on/off (if available).""" |
@@ -1,5 +1,5 b'' | |||
|
1 | 1 | # -*- Mode: Shell-Script -*- Not really, but shows comments correctly |
|
2 |
# $Id: ipythonrc 9 |
|
|
2 | # $Id: ipythonrc 990 2006-01-04 06:59:02Z fperez $ | |
|
3 | 3 | |
|
4 | 4 | #*************************************************************************** |
|
5 | 5 | # |
@@ -37,8 +37,9 b' include' | |||
|
37 | 37 | # is encountered more than once, the last value remains, all earlier ones get |
|
38 | 38 | # discarded. |
|
39 | 39 | |
|
40 | # Automatic calling of callable objects. If set to true, callable objects are | |
|
41 | # automatically called when invoked at the command line, even if you don't | |
|
40 | ||
|
41 | # Automatic calling of callable objects. If set to 1 or 2, callable objects | |
|
42 | # are automatically called when invoked at the command line, even if you don't | |
|
42 | 43 | # type parentheses. IPython adds the parentheses for you. For example: |
|
43 | 44 | |
|
44 | 45 | #In [1]: str 45 |
@@ -48,7 +49,28 b' include' | |||
|
48 | 49 | # IPython reprints your line with '---->' indicating that it added |
|
49 | 50 | # parentheses. While this option is very convenient for interactive use, it |
|
50 | 51 | # may occasionally cause problems with objects which have side-effects if |
|
51 | # called unexpectedly. Set it to 0 if you want to disable it. | |
|
52 | # called unexpectedly. | |
|
53 | ||
|
54 | # The valid values for autocall are: | |
|
55 | ||
|
56 | # autocall 0 -> disabled (you can toggle it at runtime with the %autocall magic) | |
|
57 | ||
|
58 | # autocall 1 -> active, but do not apply if there are no arguments on the line. | |
|
59 | ||
|
60 | # In this mode, you get: | |
|
61 | ||
|
62 | #In [1]: callable | |
|
63 | #Out[1]: <built-in function callable> | |
|
64 | ||
|
65 | #In [2]: callable 'hello' | |
|
66 | #------> callable('hello') | |
|
67 | #Out[2]: False | |
|
68 | ||
|
69 | # 2 -> Active always. Even if no arguments are present, the callable object | |
|
70 | # is called: | |
|
71 | ||
|
72 | #In [4]: callable | |
|
73 | #------> callable() | |
|
52 | 74 | |
|
53 | 75 | # Note that even with autocall off, you can still use '/' at the start of a |
|
54 | 76 | # line to treat the first argument on the command line as a function and add |
@@ -73,6 +73,13 b' import readline' | |||
|
73 | 73 | import sys |
|
74 | 74 | import types |
|
75 | 75 | |
|
76 | # Python 2.4 offers sets as a builtin | |
|
77 | try: | |
|
78 | set([1,2]) | |
|
79 | except NameError: | |
|
80 | from sets import Set as set | |
|
81 | ||
|
82 | ||
|
76 | 83 | from IPython.genutils import shlex_split |
|
77 | 84 | |
|
78 | 85 | __all__ = ['Completer','IPCompleter'] |
@@ -192,11 +199,21 b' class Completer:' | |||
|
192 | 199 | except: |
|
193 | 200 | object = eval(expr, self.global_namespace) |
|
194 | 201 | |
|
202 | # Start building the attribute list via dir(), and then complete it | |
|
203 | # with a few extra special-purpose calls. | |
|
195 | 204 | words = dir(object) |
|
205 | ||
|
196 | 206 | if hasattr(object,'__class__'): |
|
197 | 207 | words.append('__class__') |
|
198 | 208 | words.extend(get_class_members(object.__class__)) |
|
199 | 209 | |
|
210 | # this is the 'dir' function for objects with Enthought's traits | |
|
211 | if hasattr(object, 'trait_names'): | |
|
212 | words.extend(object.trait_names()) | |
|
213 | # eliminate possible duplicates, as some traits may also appear as | |
|
214 | # normal attributes in the dir() call. | |
|
215 | words = set(words) | |
|
216 | ||
|
200 | 217 | # filter out non-string attributes which may be stuffed by dir() calls |
|
201 | 218 | # and poor coding in third-party modules |
|
202 | 219 | words = [w for w in words |
@@ -5,7 +5,7 b' General purpose utilities.' | |||
|
5 | 5 | This is a grab-bag of stuff I find useful in most programs I write. Some of |
|
6 | 6 | these things are also convenient when working at the command line. |
|
7 | 7 | |
|
8 |
$Id: genutils.py 9 |
|
|
8 | $Id: genutils.py 990 2006-01-04 06:59:02Z fperez $""" | |
|
9 | 9 | |
|
10 | 10 | #***************************************************************************** |
|
11 | 11 | # Copyright (C) 2001-2004 Fernando Perez. <fperez@colorado.edu> |
@@ -207,6 +207,18 b' def fatal(msg,exit_val=1):' | |||
|
207 | 207 | |
|
208 | 208 | warn(msg,exit_val=exit_val,level=4) |
|
209 | 209 | |
|
210 | ||
|
211 | # useful for debugging | |
|
212 | def debugp(expr): | |
|
213 | """Print the value of an expression from the caller's frame. | |
|
214 | ||
|
215 | Takes an expression, evaluates it in the caller's frame and prints both | |
|
216 | the given expression and the resulting value. The input must be of a form | |
|
217 | suitable for eval().""" | |
|
218 | ||
|
219 | cf = sys._getframe(1) | |
|
220 | print '[DBG] %s -> %r' % (expr,eval(expr,cf.f_globals,cf.f_locals)) | |
|
221 | ||
|
210 | 222 | #---------------------------------------------------------------------------- |
|
211 | 223 | StringTypes = types.StringTypes |
|
212 | 224 |
@@ -6,7 +6,7 b' Requires Python 2.1 or newer.' | |||
|
6 | 6 | |
|
7 | 7 | This file contains all the classes and helper functions specific to IPython. |
|
8 | 8 | |
|
9 |
$Id: iplib.py 9 |
|
|
9 | $Id: iplib.py 990 2006-01-04 06:59:02Z fperez $ | |
|
10 | 10 | """ |
|
11 | 11 | |
|
12 | 12 | #***************************************************************************** |
@@ -472,7 +472,7 b' class InteractiveShell(object,Magic):' | |||
|
472 | 472 | # RegExp to identify potential function names |
|
473 | 473 | self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$') |
|
474 | 474 | # RegExp to exclude strings with this start from autocalling |
|
475 | self.re_exclude_auto = re.compile('^[!=()<>,\*/\+-]|^is ') | |
|
475 | self.re_exclude_auto = re.compile('^[!=()\[\]<>,\*/\+-]|^is ') | |
|
476 | 476 | |
|
477 | 477 | # try to catch also methods for stuff in lists/tuples/dicts: off |
|
478 | 478 | # (experimental). For this to work, the line_split regexp would need |
@@ -1836,7 +1836,8 b' want to merge them back into the new files.""" % locals()' | |||
|
1836 | 1836 | self.re_fun_name.match(iFun) and \ |
|
1837 | 1837 | callable(oinfo['obj']) : |
|
1838 | 1838 | #print 'going auto' # dbg |
|
1839 |
return self.handle_auto(line,continue_prompt, |
|
|
1839 | return self.handle_auto(line,continue_prompt, | |
|
1840 | pre,iFun,theRest,oinfo['obj']) | |
|
1840 | 1841 | else: |
|
1841 | 1842 | #print 'was callable?', callable(oinfo['obj']) # dbg |
|
1842 | 1843 | return self.handle_normal(line,continue_prompt) |
@@ -1919,15 +1920,17 b' want to merge them back into the new files.""" % locals()' | |||
|
1919 | 1920 | return cmd |
|
1920 | 1921 | |
|
1921 | 1922 | def handle_auto(self, line, continue_prompt=None, |
|
1922 | pre=None,iFun=None,theRest=None): | |
|
1923 | pre=None,iFun=None,theRest=None,obj=None): | |
|
1923 | 1924 | """Hande lines which can be auto-executed, quoting if requested.""" |
|
1924 | 1925 | |
|
1925 | 1926 | #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg |
|
1926 | 1927 | |
|
1927 | 1928 | # This should only be active for single-line input! |
|
1928 | 1929 | if continue_prompt: |
|
1930 | self.log(line,continue_prompt) | |
|
1929 | 1931 | return line |
|
1930 | 1932 | |
|
1933 | auto_rewrite = True | |
|
1931 | 1934 | if pre == self.ESC_QUOTE: |
|
1932 | 1935 | # Auto-quote splitting on whitespace |
|
1933 | 1936 | newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) ) |
@@ -1935,19 +1938,31 b' want to merge them back into the new files.""" % locals()' | |||
|
1935 | 1938 | # Auto-quote whole string |
|
1936 | 1939 | newcmd = '%s("%s")' % (iFun,theRest) |
|
1937 | 1940 | else: |
|
1938 | # Auto-paren | |
|
1939 | if theRest[0:1] in ('=','['): | |
|
1940 | # Don't autocall in these cases. They can be either | |
|
1941 | # rebindings of an existing callable's name, or item access | |
|
1942 | # for an object which is BOTH callable and implements | |
|
1943 | # __getitem__. | |
|
1944 | return '%s %s' % (iFun,theRest) | |
|
1945 | if theRest.endswith(';'): | |
|
1946 | newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1]) | |
|
1941 | # Auto-paren. | |
|
1942 | # We only apply it to argument-less calls if the autocall | |
|
1943 | # parameter is set to 2. We only need to check that autocall is < | |
|
1944 | # 2, since this function isn't called unless it's at least 1. | |
|
1945 | if not theRest and self.rc.autocall < 2: | |
|
1946 | newcmd = '%s %s' % (iFun,theRest) | |
|
1947 | auto_rewrite = False | |
|
1947 | 1948 | else: |
|
1948 | newcmd = '%s(%s)' % (iFun.rstrip(),theRest) | |
|
1949 | if theRest.startswith('['): | |
|
1950 | if hasattr(obj,'__getitem__'): | |
|
1951 | # Don't autocall in this case: item access for an object | |
|
1952 | # which is BOTH callable and implements __getitem__. | |
|
1953 | newcmd = '%s %s' % (iFun,theRest) | |
|
1954 | auto_rewrite = False | |
|
1955 | else: | |
|
1956 | # if the object doesn't support [] access, go ahead and | |
|
1957 | # autocall | |
|
1958 | newcmd = '%s(%s)' % (iFun.rstrip(),theRest) | |
|
1959 | elif theRest.endswith(';'): | |
|
1960 | newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1]) | |
|
1961 | else: | |
|
1962 | newcmd = '%s(%s)' % (iFun.rstrip(),theRest) | |
|
1949 | 1963 | |
|
1950 | print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd | |
|
1964 | if auto_rewrite: | |
|
1965 | print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd | |
|
1951 | 1966 | # log what is now valid Python, not the actual user input (without the |
|
1952 | 1967 | # final newline) |
|
1953 | 1968 | self.log(newcmd,continue_prompt) |
@@ -6,7 +6,7 b' Requires Python 2.1 or better.' | |||
|
6 | 6 | |
|
7 | 7 | This file contains the main make_IPython() starter function. |
|
8 | 8 | |
|
9 |
$Id: ipmaker.py 9 |
|
|
9 | $Id: ipmaker.py 990 2006-01-04 06:59:02Z fperez $""" | |
|
10 | 10 | |
|
11 | 11 | #***************************************************************************** |
|
12 | 12 | # Copyright (C) 2001-2004 Fernando Perez. <fperez@colorado.edu> |
@@ -147,7 +147,7 b" object? -> Details about 'object'. ?object also works, ?? prints more." | |||
|
147 | 147 | # DPyGetOpt syntax (=s,=i,:f,etc). |
|
148 | 148 | |
|
149 | 149 | # Make sure there's a space before each end of line (they get auto-joined!) |
|
150 |
cmdline_opts = ('autocall |
|
|
150 | cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i ' | |
|
151 | 151 | 'c=s classic|cl color_info! colors=s confirm_exit! ' |
|
152 | 152 | 'debug! deep_reload! editor=s log|l messages! nosep pdb! ' |
|
153 | 153 | 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s ' |
@@ -6,7 +6,7 b'' | |||
|
6 | 6 | # the file COPYING, distributed as part of this software. |
|
7 | 7 | #***************************************************************************** |
|
8 | 8 | |
|
9 |
# $Id: usage.py 9 |
|
|
9 | # $Id: usage.py 990 2006-01-04 06:59:02Z fperez $ | |
|
10 | 10 | |
|
11 | 11 | from IPython import Release |
|
12 | 12 | __author__ = '%s <%s>' % Release.authors['Fernando'] |
@@ -144,10 +144,14 b' REGULAR OPTIONS' | |||
|
144 | 144 | to correctly execute (without blocking) any matplotlib-based |
|
145 | 145 | script which calls show() at the end. |
|
146 | 146 | |
|
147 |
- |
|
|
148 |
Make |
|
|
149 |
didn |
|
|
150 |
|
|
|
147 | -autocall <val> | |
|
148 | Make IPython automatically call any callable object even if you | |
|
149 | didn't type explicit parentheses. For example, 'str 43' becomes | |
|
150 | 'str(43)' automatically. The value can be '0' to disable the | |
|
151 | feature, '1' for 'smart' autocall, where it is not applied if | |
|
152 | there are no more arguments on the line, and '2' for 'full' | |
|
153 | autocall, where all callable objects are automatically called | |
|
154 | (even if no arguments are present). The default is '1'. | |
|
151 | 155 | |
|
152 | 156 | -[no]autoindent |
|
153 | 157 | Turn automatic indentation on/off. |
@@ -1,3 +1,17 b'' | |||
|
1 | 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu> | |
|
2 | ||
|
3 | * IPython/iplib.py (handle_auto): changed autocall semantics to | |
|
4 | include 'smart' mode, where the autocall transformation is NOT | |
|
5 | applied if there are no arguments on the line. This allows you to | |
|
6 | just type 'foo' if foo is a callable to see its internal form, | |
|
7 | instead of having it called with no arguments (typically a | |
|
8 | mistake). The old 'full' autocall still exists: for that, you | |
|
9 | need to set the 'autocall' parameter to 2 in your ipythonrc file. | |
|
10 | ||
|
11 | * IPython/completer.py (Completer.attr_matches): add | |
|
12 | tab-completion support for Enthoughts' traits. After a report by | |
|
13 | Arnd and a patch by Prabhu. | |
|
14 | ||
|
1 | 15 | 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu> |
|
2 | 16 | |
|
3 | 17 | * IPython/ultraTB.py (_fixed_getinnerframes): added Alex |
@@ -115,9 +115,14 b' All options with a [no] prepended can be specified in negated form' | |||
|
115 | 115 | .B \-h, \-\-help |
|
116 | 116 | Show summary of options. |
|
117 | 117 | .TP |
|
118 |
.B \- |
|
|
118 | .B \-autocall <val> | |
|
119 | 119 | Make IPython automatically call any callable object even if you didn't type |
|
120 |
explicit parentheses. For example, 'str 43' becomes |
|
|
120 | explicit parentheses. For example, 'str 43' becomes | |
|
121 | 'str(43)' automatically. The value can be '0' to disable the | |
|
122 | feature, '1' for 'smart' autocall, where it is not applied if | |
|
123 | there are no more arguments on the line, and '2' for 'full' | |
|
124 | autocall, where all callable objects are automatically called | |
|
125 | (even if no arguments are present). The default is '1'. | |
|
121 | 126 | .TP |
|
122 | 127 | .B \-[no]autoindent |
|
123 | 128 | Turn automatic indentation on/off. |
@@ -2686,12 +2686,24 b' show()' | |||
|
2686 | 2686 | |
|
2687 | 2687 | \family typewriter |
|
2688 | 2688 | \series bold |
|
2689 |
- |
|
|
2689 | -autocall <val>: | |
|
2690 | 2690 | \family default |
|
2691 | 2691 | \series default |
|
2692 | 2692 | Make IPython automatically call any callable object even if you didn't |
|
2693 | 2693 | type explicit parentheses. |
|
2694 | 2694 | For example, `str 43' becomes `str(43)' automatically. |
|
2695 | The value can be `0' to disable the feature, `1' for | |
|
2696 | \emph on | |
|
2697 | smart | |
|
2698 | \emph default | |
|
2699 | autocall, where it is not applied if there are no more arguments on the | |
|
2700 | line, and `2' for | |
|
2701 | \emph on | |
|
2702 | full | |
|
2703 | \emph default | |
|
2704 | autocall, where all callable objects are automatically called (even if | |
|
2705 | no arguments are present). | |
|
2706 | The default is `1'. | |
|
2695 | 2707 | \layout List |
|
2696 | 2708 | \labelwidthstring 00.00.0000 |
|
2697 | 2709 |
General Comments 0
You need to be logged in to leave comments.
Login now