##// END OF EJS Templates
Ensure that, with autocall off, attribute access will never be performed...
fperez -
Show More
@@ -6,7 +6,7 b' Requires Python 2.1 or newer.'
6
6
7 This file contains all the classes and helper functions specific to IPython.
7 This file contains all the classes and helper functions specific to IPython.
8
8
9 $Id: iplib.py 975 2005-12-29 23:50:22Z fperez $
9 $Id: iplib.py 976 2005-12-30 01:02:09Z fperez $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
@@ -1744,7 +1744,21 b' want to merge them back into the new files.""" % locals()'
1744 return self.handle_normal(line,continue_prompt)
1744 return self.handle_normal(line,continue_prompt)
1745
1745
1746 if oinfo is None:
1746 if oinfo is None:
1747 # let's try to ensure that _oinfo is ONLY called when autocall is
1748 # on. Since it has inevitable potential side effects, at least
1749 # having autocall off should be a guarantee to the user that no
1750 # weird things will happen.
1751
1752 if self.rc.autocall:
1747 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1753 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1754 else:
1755 # in this case, all that's left is either an alias or
1756 # processing the line normally.
1757 if iFun in self.alias_table:
1758 return self.handle_alias(line,continue_prompt,
1759 pre,iFun,theRest)
1760 else:
1761 return self.handle_normal(line,continue_prompt)
1748
1762
1749 if not oinfo['found']:
1763 if not oinfo['found']:
1750 return self.handle_normal(line,continue_prompt)
1764 return self.handle_normal(line,continue_prompt)
@@ -3,6 +3,12 b''
3 * IPython/iplib.py (showtraceback): remove use of the
3 * IPython/iplib.py (showtraceback): remove use of the
4 sys.last_{type/value/traceback} structures, which are non
4 sys.last_{type/value/traceback} structures, which are non
5 thread-safe.
5 thread-safe.
6 (_prefilter): change control flow to ensure that we NEVER
7 introspect objects when autocall is off. This will guarantee that
8 having an input line of the form 'x.y', where access to attribute
9 'y' has side effects, doesn't trigger the side effect TWICE. It
10 is important to note that, with autocall on, these side effects
11 can still happen.
6
12
7 * IPython/macro.py (Macro.__init__): moved macros to a standalone
13 * IPython/macro.py (Macro.__init__): moved macros to a standalone
8 file. Now that they'll be more likely to be used with the
14 file. Now that they'll be more likely to be used with the
General Comments 0
You need to be logged in to leave comments. Login now