Show More
@@ -316,6 +316,6 b' def cd_completer(self, event):' | |||||
316 |
|
316 | |||
317 | return [compress_user(p, tilde_expand, tilde_val) for p in found] |
|
317 | return [compress_user(p, tilde_expand, tilde_val) for p in found] | |
318 |
|
318 | |||
319 |
def |
|
319 | def reset_completer(self, event): | |
320 |
"A completer for % |
|
320 | "A completer for %reset magic" | |
321 | return 'in out array dhist'.split() |
|
321 | return '-f -s in out array dhist'.split() |
@@ -1840,7 +1840,7 b' class InteractiveShell(SingletonConfigurable, Magic):' | |||||
1840 | """ |
|
1840 | """ | |
1841 | from IPython.core.completer import IPCompleter |
|
1841 | from IPython.core.completer import IPCompleter | |
1842 | from IPython.core.completerlib import (module_completer, |
|
1842 | from IPython.core.completerlib import (module_completer, | |
1843 |
magic_run_completer, cd_completer, |
|
1843 | magic_run_completer, cd_completer, reset_completer) | |
1844 |
|
1844 | |||
1845 | self.Completer = IPCompleter(shell=self, |
|
1845 | self.Completer = IPCompleter(shell=self, | |
1846 | namespace=self.user_ns, |
|
1846 | namespace=self.user_ns, | |
@@ -1860,7 +1860,7 b' class InteractiveShell(SingletonConfigurable, Magic):' | |||||
1860 | self.set_hook('complete_command', module_completer, str_key = 'from') |
|
1860 | self.set_hook('complete_command', module_completer, str_key = 'from') | |
1861 | self.set_hook('complete_command', magic_run_completer, str_key = '%run') |
|
1861 | self.set_hook('complete_command', magic_run_completer, str_key = '%run') | |
1862 | self.set_hook('complete_command', cd_completer, str_key = '%cd') |
|
1862 | self.set_hook('complete_command', cd_completer, str_key = '%cd') | |
1863 |
self.set_hook('complete_command', |
|
1863 | self.set_hook('complete_command', reset_completer, str_key = '%reset') | |
1864 |
|
1864 | |||
1865 | # Only configure readline if we truly are using readline. IPython can |
|
1865 | # Only configure readline if we truly are using readline. IPython can | |
1866 | # do tab-completion over the network, in GUIs, etc, where readline |
|
1866 | # do tab-completion over the network, in GUIs, etc, where readline |
@@ -960,7 +960,10 b' Currently the magic system has the following functions:\\n"""' | |||||
960 | print vstr[:25] + "<...>" + vstr[-25:] |
|
960 | print vstr[:25] + "<...>" + vstr[-25:] | |
961 |
|
961 | |||
962 | def magic_reset(self, parameter_s=''): |
|
962 | def magic_reset(self, parameter_s=''): | |
963 |
"""Resets the namespace by removing all names defined by the user |
|
963 | """Resets the namespace by removing all names defined by the user, if | |
|
964 | called without arguments, or by removing some types of objects, such | |||
|
965 | as everything currently in IPython's In[] and Out[] containers (see | |||
|
966 | the parameters for details). | |||
964 |
|
967 | |||
965 | Parameters |
|
968 | Parameters | |
966 | ---------- |
|
969 | ---------- | |
@@ -971,6 +974,18 b' Currently the magic system has the following functions:\\n"""' | |||||
971 | we do a 'hard' reset, giving you a new session and removing all |
|
974 | we do a 'hard' reset, giving you a new session and removing all | |
972 | references to objects from the current session. |
|
975 | references to objects from the current session. | |
973 |
|
976 | |||
|
977 | in : reset input history | |||
|
978 | ||||
|
979 | out : reset output history | |||
|
980 | ||||
|
981 | dhist : reset directory history | |||
|
982 | ||||
|
983 | array : reset only variables that are NumPy arrays | |||
|
984 | ||||
|
985 | See Also | |||
|
986 | -------- | |||
|
987 | %reset_selective | |||
|
988 | ||||
974 | Examples |
|
989 | Examples | |
975 | -------- |
|
990 | -------- | |
976 | In [6]: a = 1 |
|
991 | In [6]: a = 1 | |
@@ -986,13 +1001,20 b' Currently the magic system has the following functions:\\n"""' | |||||
986 | In [1]: 'a' in _ip.user_ns |
|
1001 | In [1]: 'a' in _ip.user_ns | |
987 | Out[1]: False |
|
1002 | Out[1]: False | |
988 |
|
1003 | |||
|
1004 | In [2]: %reset -f in | |||
|
1005 | Flushing input history | |||
|
1006 | ||||
|
1007 | In [3]: %reset -f dhist in | |||
|
1008 | Flushing directory history | |||
|
1009 | Flushing input history | |||
|
1010 | ||||
989 | Notes |
|
1011 | Notes | |
990 | ----- |
|
1012 | ----- | |
991 | Calling this magic from clients that do not implement standard input, |
|
1013 | Calling this magic from clients that do not implement standard input, | |
992 | such as the ipython notebook interface, will reset the namespace |
|
1014 | such as the ipython notebook interface, will reset the namespace | |
993 | without confirmation. |
|
1015 | without confirmation. | |
994 | """ |
|
1016 | """ | |
995 | opts, args = self.parse_options(parameter_s,'sf') |
|
1017 | opts, args = self.parse_options(parameter_s,'sf', mode='list') | |
996 | if 'f' in opts: |
|
1018 | if 'f' in opts: | |
997 | ans = True |
|
1019 | ans = True | |
998 | else: |
|
1020 | else: | |
@@ -1009,11 +1031,54 b' Currently the magic system has the following functions:\\n"""' | |||||
1009 | user_ns = self.shell.user_ns |
|
1031 | user_ns = self.shell.user_ns | |
1010 | for i in self.magic_who_ls(): |
|
1032 | for i in self.magic_who_ls(): | |
1011 | del(user_ns[i]) |
|
1033 | del(user_ns[i]) | |
1012 |
|
1034 | elif len(args) == 0: # Hard reset | ||
1013 | else: # Hard reset |
|
|||
1014 | self.shell.reset(new_session = False) |
|
1035 | self.shell.reset(new_session = False) | |
1015 |
|
1036 | |||
|
1037 | # reset in/out/dhist/array: previously extensinions/clearcmd.py | |||
|
1038 | ip = self.shell | |||
|
1039 | user_ns = self.user_ns # local lookup, heavily used | |||
|
1040 | ||||
|
1041 | for target in args: | |||
|
1042 | if target == 'out': | |||
|
1043 | print "Flushing output cache (%d entries)" % len(user_ns['_oh']) | |||
|
1044 | self.displayhook.flush() | |||
|
1045 | ||||
|
1046 | elif target == 'in': | |||
|
1047 | print "Flushing input history" | |||
|
1048 | pc = self.displayhook.prompt_count + 1 | |||
|
1049 | for n in range(1, pc): | |||
|
1050 | key = '_i'+repr(n) | |||
|
1051 | user_ns.pop(key,None) | |||
|
1052 | user_ns.update(dict(_i=u'',_ii=u'',_iii=u'')) | |||
|
1053 | hm = ip.history_manager | |||
|
1054 | # don't delete these, as %save and %macro depending on the length | |||
|
1055 | # of these lists to be preserved | |||
|
1056 | hm.input_hist_parsed[:] = [''] * pc | |||
|
1057 | hm.input_hist_raw[:] = [''] * pc | |||
|
1058 | # hm has internal machinery for _i,_ii,_iii, clear it out | |||
|
1059 | hm._i = hm._ii = hm._iii = hm._i00 = u'' | |||
|
1060 | ||||
|
1061 | elif target == 'array': | |||
|
1062 | # Support cleaning up numpy arrays | |||
|
1063 | try: | |||
|
1064 | from numpy import ndarray | |||
|
1065 | # This must be done with items and not iteritems because we're | |||
|
1066 | # going to modify the dict in-place. | |||
|
1067 | for x,val in user_ns.items(): | |||
|
1068 | if isinstance(val,ndarray): | |||
|
1069 | del user_ns[x] | |||
|
1070 | except ImportError: | |||
|
1071 | print "reset array only works if Numpy is available." | |||
|
1072 | ||||
|
1073 | elif target == 'dhist': | |||
|
1074 | print "Flushing directory history" | |||
|
1075 | del user_ns['_dh'][:] | |||
1016 |
|
1076 | |||
|
1077 | else: | |||
|
1078 | print "Don't know how to reset ", | |||
|
1079 | print target + ", please run `%reset?` for details" | |||
|
1080 | ||||
|
1081 | gc.collect() | |||
1017 |
|
1082 | |||
1018 | def magic_reset_selective(self, parameter_s=''): |
|
1083 | def magic_reset_selective(self, parameter_s=''): | |
1019 | """Resets the namespace by removing names defined by the user. |
|
1084 | """Resets the namespace by removing names defined by the user. | |
@@ -1027,6 +1092,10 b' Currently the magic system has the following functions:\\n"""' | |||||
1027 | Options |
|
1092 | Options | |
1028 | -f : force reset without asking for confirmation. |
|
1093 | -f : force reset without asking for confirmation. | |
1029 |
|
1094 | |||
|
1095 | See Also | |||
|
1096 | -------- | |||
|
1097 | %reset | |||
|
1098 | ||||
1030 | Examples |
|
1099 | Examples | |
1031 | -------- |
|
1100 | -------- | |
1032 |
|
1101 | |||
@@ -3698,60 +3767,4 b' Defaulting color scheme to \'NoColor\'"""' | |||||
3698 | except Exception as e: |
|
3767 | except Exception as e: | |
3699 | error(e) |
|
3768 | error(e) | |
3700 |
|
3769 | |||
3701 | def magic_clear(self, s): |
|
|||
3702 | """Clear various data (e.g. stored history data) |
|
|||
3703 |
|
||||
3704 | %clear in - clear input history |
|
|||
3705 | %clear out - clear output history |
|
|||
3706 | %clear dhist - clear dir history |
|
|||
3707 | %clear array - clear only variables that are NumPy arrays |
|
|||
3708 |
|
||||
3709 | Examples |
|
|||
3710 | -------- |
|
|||
3711 | :: |
|
|||
3712 |
|
||||
3713 | In [1]: clear in |
|
|||
3714 | Flushing input history |
|
|||
3715 |
|
||||
3716 | In [2]: clear dhist |
|
|||
3717 | Clearing directory history |
|
|||
3718 | """ |
|
|||
3719 | ip = self.shell |
|
|||
3720 | user_ns = self.user_ns # local lookup, heavily used |
|
|||
3721 |
|
||||
3722 | for target in s.split(): |
|
|||
3723 | if target == 'out': |
|
|||
3724 | print "Flushing output cache (%d entries)" % len(user_ns['_oh']) |
|
|||
3725 | self.displayhook.flush() |
|
|||
3726 |
|
||||
3727 | elif target == 'in': |
|
|||
3728 | print "Flushing input history" |
|
|||
3729 | pc = self.displayhook.prompt_count + 1 |
|
|||
3730 | for n in range(1, pc): |
|
|||
3731 | key = '_i'+repr(n) |
|
|||
3732 | user_ns.pop(key,None) |
|
|||
3733 | user_ns.update(dict(_i=u'',_ii=u'',_iii=u'')) |
|
|||
3734 | # don't delete these, as %save and %macro depending on the length |
|
|||
3735 | # of these lists to be preserved |
|
|||
3736 | self.history_manager.input_hist_parsed[:] = [''] * pc |
|
|||
3737 | self.history_manager.input_hist_raw[:] = [''] * pc |
|
|||
3738 |
|
||||
3739 | elif target == 'array': |
|
|||
3740 | # Support cleaning up numpy arrays |
|
|||
3741 | try: |
|
|||
3742 | from numpy import ndarray |
|
|||
3743 | # This must be done with items and not iteritems because we're |
|
|||
3744 | # going to modify the dict in-place. |
|
|||
3745 | for x,val in user_ns.items(): |
|
|||
3746 | if isinstance(val,ndarray): |
|
|||
3747 | del user_ns[x] |
|
|||
3748 | except ImportError: |
|
|||
3749 | print "Clear array only works if Numpy is available." |
|
|||
3750 |
|
||||
3751 | elif target == 'dhist': |
|
|||
3752 | print "Clearing directory history" |
|
|||
3753 | del user_ns['_dh'][:] |
|
|||
3754 |
|
||||
3755 | gc.collect() |
|
|||
3756 |
|
||||
3757 | # end Magic |
|
3770 | # end Magic |
@@ -185,44 +185,44 b' def test_macro_run():' | |||||
185 |
|
185 | |||
186 |
|
186 | |||
187 | @dec.skipif_not_numpy |
|
187 | @dec.skipif_not_numpy | |
188 |
def test_numpy_ |
|
188 | def test_numpy_reset_array_undec(): | |
189 |
"Test '% |
|
189 | "Test '%reset array' functionality" | |
190 | _ip.ex('import numpy as np') |
|
190 | _ip.ex('import numpy as np') | |
191 | _ip.ex('a = np.empty(2)') |
|
191 | _ip.ex('a = np.empty(2)') | |
192 | yield (nt.assert_true, 'a' in _ip.user_ns) |
|
192 | yield (nt.assert_true, 'a' in _ip.user_ns) | |
193 |
_ip.magic(' |
|
193 | _ip.magic('reset -f array') | |
194 | yield (nt.assert_false, 'a' in _ip.user_ns) |
|
194 | yield (nt.assert_false, 'a' in _ip.user_ns) | |
195 |
|
195 | |||
196 |
def test_ |
|
196 | def test_reset_args(): | |
197 |
"Test '% |
|
197 | "Test '%reset' magic with args which used to be extensions.clearcmd" | |
198 | _ip = get_ipython() |
|
198 | _ip = get_ipython() | |
199 | _ip.run_cell("parrot = 'dead'", store_history=True) |
|
199 | _ip.run_cell("parrot = 'dead'", store_history=True) | |
200 |
# test '% |
|
200 | # test '%reset -f out', make an Out prompt | |
201 | _ip.run_cell("parrot", store_history=True) |
|
201 | _ip.run_cell("parrot", store_history=True) | |
202 | nt.assert_true('dead' in [_ip.user_ns[x] for x in '_','__','___']) |
|
202 | nt.assert_true('dead' in [_ip.user_ns[x] for x in '_','__','___']) | |
203 |
_ip.magic(' |
|
203 | _ip.magic('reset -f out') | |
204 | nt.assert_false('dead' in [_ip.user_ns[x] for x in '_','__','___']) |
|
204 | nt.assert_false('dead' in [_ip.user_ns[x] for x in '_','__','___']) | |
205 | nt.assert_true(len(_ip.user_ns['Out']) == 0) |
|
205 | nt.assert_true(len(_ip.user_ns['Out']) == 0) | |
206 |
|
206 | |||
207 |
# test '% |
|
207 | # test '%reset -f in' | |
208 | _ip.run_cell("parrot", store_history=True) |
|
208 | _ip.run_cell("parrot", store_history=True) | |
209 | nt.assert_true('parrot' in [_ip.user_ns[x] for x in '_i','_ii','_iii']) |
|
209 | nt.assert_true('parrot' in [_ip.user_ns[x] for x in '_i','_ii','_iii']) | |
210 |
_ip.magic('% |
|
210 | _ip.magic('%reset -f in') | |
211 | nt.assert_false('parrot' in [_ip.user_ns[x] for x in '_i','_ii','_iii']) |
|
211 | nt.assert_false('parrot' in [_ip.user_ns[x] for x in '_i','_ii','_iii']) | |
212 | nt.assert_true(len(set(_ip.user_ns['In'])) == 1) |
|
212 | nt.assert_true(len(set(_ip.user_ns['In'])) == 1) | |
213 |
|
213 | |||
214 |
# test '% |
|
214 | # test '%reset -f dhist' | |
215 | _ip.run_cell("tmp = [d for d in _dh]") # copy before clearing |
|
215 | _ip.run_cell("tmp = [d for d in _dh]") # copy before clearing | |
216 | _ip.magic('cd') |
|
216 | _ip.magic('cd') | |
217 | _ip.magic('cd -') |
|
217 | _ip.magic('cd -') | |
218 | nt.assert_true(len(_ip.user_ns['_dh']) > 0) |
|
218 | nt.assert_true(len(_ip.user_ns['_dh']) > 0) | |
219 |
_ip.magic(' |
|
219 | _ip.magic('reset -f dhist') | |
220 | nt.assert_true(len(_ip.user_ns['_dh']) == 0) |
|
220 | nt.assert_true(len(_ip.user_ns['_dh']) == 0) | |
221 | _ip.run_cell("_dh = [d for d in tmp]") #restore |
|
221 | _ip.run_cell("_dh = [d for d in tmp]") #restore | |
222 |
|
222 | |||
223 | # test that In length is preserved for %macro |
|
223 | # test that In length is preserved for %macro | |
224 | _ip.run_cell("print 'foo'") |
|
224 | _ip.run_cell("print 'foo'") | |
225 |
_ip.run_cell(" |
|
225 | _ip.run_cell("reset -f in") | |
226 | nt.assert_true(len(_ip.user_ns['In']) == _ip.displayhook.prompt_count+1) |
|
226 | nt.assert_true(len(_ip.user_ns['In']) == _ip.displayhook.prompt_count+1) | |
227 |
|
227 | |||
228 | def test_time(): |
|
228 | def test_time(): |
General Comments 0
You need to be logged in to leave comments.
Login now