Show More
@@ -1052,6 +1052,27 b' class InteractiveShell(Component, Magic):' | |||
|
1052 | 1052 | # Restore the default and user aliases |
|
1053 | 1053 | self.alias_manager.init_aliases() |
|
1054 | 1054 | |
|
1055 | def reset_selective(self, regex=None): | |
|
1056 | """Clear selective variables from internal namespaces based on a specified regular expression. | |
|
1057 | ||
|
1058 | Parameters | |
|
1059 | ---------- | |
|
1060 | regex : string or compiled pattern, optional | |
|
1061 | A regular expression pattern that will be used in searching variable names in the users | |
|
1062 | namespaces. | |
|
1063 | """ | |
|
1064 | if regex is not None: | |
|
1065 | try: | |
|
1066 | m = re.compile(regex) | |
|
1067 | except TypeError: | |
|
1068 | raise TypeError('regex must be a string or compiled pattern') | |
|
1069 | # Search for keys in each namespace that match the given regex | |
|
1070 | # If a match is found, delete the key/value pair. | |
|
1071 | for ns in self.ns_refs_table: | |
|
1072 | for var in ns: | |
|
1073 | if m.search(var): | |
|
1074 | del ns[var] | |
|
1075 | ||
|
1055 | 1076 | def push(self, variables, interactive=True): |
|
1056 | 1077 | """Inject a group of variables into the IPython user namespace. |
|
1057 | 1078 |
@@ -1112,6 +1112,71 b' Currently the magic system has the following functions:\\n"""' | |||
|
1112 | 1112 | # execution protection |
|
1113 | 1113 | self.shell.clear_main_mod_cache() |
|
1114 | 1114 | |
|
1115 | def magic_reset_selective(self, parameter_s=''): | |
|
1116 | """Resets the namespace by removing names defined by the user. | |
|
1117 | ||
|
1118 | Input/Output history are left around in case you need them. | |
|
1119 | ||
|
1120 | %reset_selective [-f] regex | |
|
1121 | ||
|
1122 | No action is taken if regex is not included | |
|
1123 | ||
|
1124 | Options | |
|
1125 | -f : force reset without asking for confirmation. | |
|
1126 | ||
|
1127 | Examples | |
|
1128 | -------- | |
|
1129 | ||
|
1130 | In [1]: a=1; b=2; c=3; b1m=4; b2m=5; b3m=6; b4m=7; b2s=8 | |
|
1131 | ||
|
1132 | In [2]: who_ls | |
|
1133 | Out[2]: ['a', 'b', 'b1', 'b1m', 'b2m', 'b2s', 'b3m', 'b4m', 'c'] | |
|
1134 | ||
|
1135 | In [3]: %reset_selective -f b[2-3]m | |
|
1136 | ||
|
1137 | In [4]: who_ls | |
|
1138 | Out[4]: ['a', 'b', 'b1', 'b1m', 'b2s', 'c'] | |
|
1139 | ||
|
1140 | In [5]: %reset_selective -f d | |
|
1141 | ||
|
1142 | In [6]: who_ls | |
|
1143 | Out[6]: ['a', 'b', 'b1', 'b1m', 'b2s', 'c'] | |
|
1144 | ||
|
1145 | In [7]: %reset_selective -f c | |
|
1146 | ||
|
1147 | In [8]: who_ls | |
|
1148 | Out[8]:['a', 'b', 'b1', 'b1m', 'b2s'] | |
|
1149 | ||
|
1150 | In [9]: %reset_selective -f b | |
|
1151 | ||
|
1152 | In [10]: who_ls | |
|
1153 | Out[10]: ['a'] | |
|
1154 | ||
|
1155 | """ | |
|
1156 | ||
|
1157 | opts, regex = self.parse_options(parameter_s,'f') | |
|
1158 | ||
|
1159 | if opts.has_key('f'): | |
|
1160 | ans = True | |
|
1161 | else: | |
|
1162 | ans = self.shell.ask_yes_no( | |
|
1163 | "Once deleted, variables cannot be recovered. Proceed (y/[n])? ") | |
|
1164 | if not ans: | |
|
1165 | print 'Nothing done.' | |
|
1166 | return | |
|
1167 | user_ns = self.shell.user_ns | |
|
1168 | if not regex: | |
|
1169 | print 'No regex pattern specified. Nothing done.' | |
|
1170 | return | |
|
1171 | else: | |
|
1172 | try: | |
|
1173 | m = re.compile(regex) | |
|
1174 | except TypeError: | |
|
1175 | raise TypeError('regex must be a string or compiled pattern') | |
|
1176 | for i in self.magic_who_ls(): | |
|
1177 | if m.search(i): | |
|
1178 | del(user_ns[i]) | |
|
1179 | ||
|
1115 | 1180 | def magic_logstart(self,parameter_s=''): |
|
1116 | 1181 | """Start logging anywhere in a session. |
|
1117 | 1182 |
General Comments 0
You need to be logged in to leave comments.
Login now