|
25 | 25 |
|
26 | 26 | from __future__ import unicode_literals
|
27 | 27 | import io
|
28 |
| -import linecache |
29 | 28 | import os
|
30 | 29 | import stat
|
31 | 30 | from itertools import islice
|
@@ -233,74 +232,3 @@ def append_reload_and_write(self, s, filename, encoding):
|
233 | 232 | # Make sure that entries contains at least one element. If the
|
234 | 233 | # file and s are empty, this can occur.
|
235 | 234 | self.entries = ['']
|
236 |
| - |
237 |
| -class BPythonLinecache(dict): |
238 |
| - """Replaces the cache dict in the standard-library linecache module, |
239 |
| - to also remember (in an unerasable way) bpython console input.""" |
240 |
| - |
241 |
| - def __init__(self, *args, **kwargs): |
242 |
| - dict.__init__(self, *args, **kwargs) |
243 |
| - self.bpython_history = [] |
244 |
| - |
245 |
| - def is_bpython_filename(self, fname): |
246 |
| - try: |
247 |
| - return fname.startswith('<bpython-input-') |
248 |
| - except AttributeError: |
249 |
| - # In case the key isn't a string |
250 |
| - return False |
251 |
| - |
252 |
| - def get_bpython_history(self, key): |
253 |
| - """Given a filename provided by remember_bpython_input, |
254 |
| - returns the associated source string.""" |
255 |
| - try: |
256 |
| - idx = int(key.split('-')[2][:-1]) |
257 |
| - return self.bpython_history[idx] |
258 |
| - except (IndexError, ValueError): |
259 |
| - raise KeyError |
260 |
| - |
261 |
| - def remember_bpython_input(self, source): |
262 |
| - """Remembers a string of source code, and returns |
263 |
| - a fake filename to use to retrieve it later.""" |
264 |
| - filename = '<bpython-input-%s>' % len(self.bpython_history) |
265 |
| - self.bpython_history.append((len(source), None, |
266 |
| - source.splitlines(True), filename)) |
267 |
| - return filename |
268 |
| - |
269 |
| - def __getitem__(self, key): |
270 |
| - if self.is_bpython_filename(key): |
271 |
| - return self.get_bpython_history(key) |
272 |
| - return dict.__getitem__(self, key) |
273 |
| - |
274 |
| - def __contains__(self, key): |
275 |
| - if self.is_bpython_filename(key): |
276 |
| - try: |
277 |
| - self.get_bpython_history(key) |
278 |
| - return True |
279 |
| - except KeyError: |
280 |
| - return False |
281 |
| - return dict.__contains__(self, key) |
282 |
| - |
283 |
| - def __delitem__(self, key): |
284 |
| - if not self.is_bpython_filename(key): |
285 |
| - return dict.__delitem__(self, key) |
286 |
| - |
287 |
| -def _bpython_clear_linecache(): |
288 |
| - try: |
289 |
| - bpython_history = linecache.cache.bpython_history |
290 |
| - except AttributeError: |
291 |
| - bpython_history = [] |
292 |
| - linecache.cache = BPythonLinecache() |
293 |
| - linecache.cache.bpython_history = bpython_history |
294 |
| - |
295 |
| -# Monkey-patch the linecache module so that we're able |
296 |
| -# to hold our command history there and have it persist |
297 |
| -linecache.cache = BPythonLinecache(linecache.cache) |
298 |
| -linecache.clearcache = _bpython_clear_linecache |
299 |
| - |
300 |
| -def filename_for_console_input(code_string): |
301 |
| - """Remembers a string of source code, and returns |
302 |
| - a fake filename to use to retrieve it later.""" |
303 |
| - try: |
304 |
| - return linecache.cache.remember_bpython_input(code_string) |
305 |
| - except AttributeError: |
306 |
| - return '<input>' |
0 commit comments