diff options
author | Ivan Blinkov <ivan@blinkov.ru> | 2022-02-10 16:47:10 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:10 +0300 |
commit | 1aeb9a455974457866f78722ad98114bafc84e8a (patch) | |
tree | e4340eaf1668684d83a0a58c36947c5def5350ad /contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py | |
parent | bd5ef432f5cfb1e18851381329d94665a4c22470 (diff) | |
download | ydb-1aeb9a455974457866f78722ad98114bafc84e8a.tar.gz |
Restoring authorship annotation for Ivan Blinkov <ivan@blinkov.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py')
-rw-r--r-- | contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py | 236 |
1 files changed, 118 insertions, 118 deletions
diff --git a/contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py b/contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py index d1eb5f2730..ab971ee05c 100644 --- a/contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py +++ b/contrib/python/prompt-toolkit/py2/prompt_toolkit/history.py @@ -1,120 +1,120 @@ -from __future__ import unicode_literals -from abc import ABCMeta, abstractmethod -from six import with_metaclass - -import datetime -import os - -__all__ = ( - 'FileHistory', - 'History', - 'InMemoryHistory', -) - - -class History(with_metaclass(ABCMeta, object)): - """ - Base ``History`` interface. - """ - @abstractmethod - def append(self, string): - " Append string to history. " - - @abstractmethod - def __getitem__(self, key): - " Return one item of the history. It should be accessible like a `list`. " - - @abstractmethod - def __iter__(self): - " Iterate through all the items of the history. Cronologically. " - - @abstractmethod - def __len__(self): - " Return the length of the history. " - - def __bool__(self): - """ - Never evaluate to False, even when the history is empty. - (Python calls __len__ if __bool__ is not implemented.) - This is mainly to allow lazy evaluation:: - - x = history or InMemoryHistory() - """ - return True - - __nonzero__ = __bool__ # For Python 2. - - -class InMemoryHistory(History): - """ - :class:`.History` class that keeps a list of all strings in memory. - """ - def __init__(self): - self.strings = [] - - def append(self, string): - self.strings.append(string) - - def __getitem__(self, key): - return self.strings[key] - - def __iter__(self): - return iter(self.strings) - - def __len__(self): - return len(self.strings) - - -class FileHistory(History): - """ - :class:`.History` class that stores all strings in a file. - """ - def __init__(self, filename): - self.strings = [] - self.filename = filename - - self._load() - - def _load(self): - lines = [] - - def add(): - if lines: - # Join and drop trailing newline. - string = ''.join(lines)[:-1] - - self.strings.append(string) - - if os.path.exists(self.filename): - with open(self.filename, 'rb') as f: - for line in f: - line = line.decode('utf-8') - - if line.startswith('+'): - lines.append(line[1:]) - else: - add() - lines = [] - - add() - - def append(self, string): - self.strings.append(string) - - # Save to file. - with open(self.filename, 'ab') as f: +from __future__ import unicode_literals +from abc import ABCMeta, abstractmethod +from six import with_metaclass + +import datetime +import os + +__all__ = ( + 'FileHistory', + 'History', + 'InMemoryHistory', +) + + +class History(with_metaclass(ABCMeta, object)): + """ + Base ``History`` interface. + """ + @abstractmethod + def append(self, string): + " Append string to history. " + + @abstractmethod + def __getitem__(self, key): + " Return one item of the history. It should be accessible like a `list`. " + + @abstractmethod + def __iter__(self): + " Iterate through all the items of the history. Cronologically. " + + @abstractmethod + def __len__(self): + " Return the length of the history. " + + def __bool__(self): + """ + Never evaluate to False, even when the history is empty. + (Python calls __len__ if __bool__ is not implemented.) + This is mainly to allow lazy evaluation:: + + x = history or InMemoryHistory() + """ + return True + + __nonzero__ = __bool__ # For Python 2. + + +class InMemoryHistory(History): + """ + :class:`.History` class that keeps a list of all strings in memory. + """ + def __init__(self): + self.strings = [] + + def append(self, string): + self.strings.append(string) + + def __getitem__(self, key): + return self.strings[key] + + def __iter__(self): + return iter(self.strings) + + def __len__(self): + return len(self.strings) + + +class FileHistory(History): + """ + :class:`.History` class that stores all strings in a file. + """ + def __init__(self, filename): + self.strings = [] + self.filename = filename + + self._load() + + def _load(self): + lines = [] + + def add(): + if lines: + # Join and drop trailing newline. + string = ''.join(lines)[:-1] + + self.strings.append(string) + + if os.path.exists(self.filename): + with open(self.filename, 'rb') as f: + for line in f: + line = line.decode('utf-8') + + if line.startswith('+'): + lines.append(line[1:]) + else: + add() + lines = [] + + add() + + def append(self, string): + self.strings.append(string) + + # Save to file. + with open(self.filename, 'ab') as f: def write(t): f.write(t.encode('utf-8')) - - write('\n# %s\n' % datetime.datetime.now()) - for line in string.split('\n'): - write('+%s\n' % line) - - def __getitem__(self, key): - return self.strings[key] - - def __iter__(self): - return iter(self.strings) - - def __len__(self): - return len(self.strings) + + write('\n# %s\n' % datetime.datetime.now()) + for line in string.split('\n'): + write('+%s\n' % line) + + def __getitem__(self, key): + return self.strings[key] + + def __iter__(self): + return iter(self.strings) + + def __len__(self): + return len(self.strings) |