diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index b8528b743e..9b78feb4bc 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -138,79 +138,7 @@ def sanitize_file_name(name, substitute='_'): sanitize_file_name2 = sanitize_file_name_unicode = sanitize_file_name - - -def prints(*args, **kwargs): - ''' - Print unicode arguments safely by encoding them to preferred_encoding - Has the same signature as the print function from Python 3, except for the - additional keyword argument safe_encode, which if set to True will cause the - function to use repr when encoding fails. - - Returns the number of bytes written. - ''' - file = kwargs.get('file', sys.stdout) - file = getattr(file, 'buffer', file) - enc = 'utf-8' if hasenv('CALIBRE_WORKER') else preferred_encoding - sep = kwargs.get('sep', ' ') - if not isinstance(sep, bytes): - sep = sep.encode(enc) - end = kwargs.get('end', '\n') - if not isinstance(end, bytes): - end = end.encode(enc) - safe_encode = kwargs.get('safe_encode', False) - count = 0 - for i, arg in enumerate(args): - if isinstance(arg, unicode_type): - if iswindows: - from calibre.utils.terminal import Detect - cs = Detect(file) - if cs.is_console: - cs.write_unicode_text(arg) - count += len(arg) - if i != len(args)-1: - file.write(sep) - count += len(sep) - continue - try: - arg = arg.encode(enc) - except UnicodeEncodeError: - try: - arg = arg.encode('utf-8') - except: - if not safe_encode: - raise - arg = repr(arg) - if not isinstance(arg, bytes): - try: - arg = native_string_type(arg) - except ValueError: - arg = unicode_type(arg) - if isinstance(arg, unicode_type): - try: - arg = arg.encode(enc) - except UnicodeEncodeError: - try: - arg = arg.encode('utf-8') - except: - if not safe_encode: - raise - arg = repr(arg) - - try: - file.write(arg) - count += len(arg) - except: - from polyglot import reprlib - arg = reprlib.repr(arg) - file.write(arg) - count += len(arg) - if i != len(args)-1: - file.write(sep) - count += len(sep) - file.write(end) - count += len(end) - return count +prints = print class CommandLineError(Exception): diff --git a/src/calibre/ebooks/metadata/cli.py b/src/calibre/ebooks/metadata/cli.py index 15b9612602..80b131d625 100644 --- a/src/calibre/ebooks/metadata/cli.py +++ b/src/calibre/ebooks/metadata/cli.py @@ -186,7 +186,7 @@ def main(args=sys.argv): metadata = unicode_type(mi) if trying_to_set: metadata = '\t'+'\n\t'.join(metadata.split('\n')) - prints(metadata, safe_encode=True) + prints(metadata) if trying_to_set: with open(path, 'r+b') as stream: @@ -202,7 +202,7 @@ def main(args=sys.argv): prints('\n' + _('Changed metadata') + '::') metadata = unicode_type(mi) metadata = '\t'+'\n\t'.join(metadata.split('\n')) - prints(metadata, safe_encode=True) + prints(metadata) if lrf is not None: prints('\tBookID:', lrf.book_id) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index 1bca2347d5..f087aeae0c 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -59,8 +59,7 @@ class DeviceJob(BaseJob): # {{{ def start_work(self): if DEBUG: - prints('Job:', self.id, self.description, 'started', - safe_encode=True) + prints('Job:', self.id, self.description, 'started') self.start_time = time.time() self.job_manager.changed_queue.put(self) @@ -69,7 +68,7 @@ class DeviceJob(BaseJob): # {{{ self.percent = 1 if DEBUG: prints('DeviceJob:', self.id, self.description, - 'done, calling callback', safe_encode=True) + 'done, calling callback') try: self.callback_on_done(self) @@ -77,7 +76,7 @@ class DeviceJob(BaseJob): # {{{ pass if DEBUG: prints('DeviceJob:', self.id, self.description, - 'callback returned', safe_encode=True) + 'callback returned') self.job_manager.changed_queue.put(self) def report_progress(self, percent, msg=''): diff --git a/src/calibre/srv/utils.py b/src/calibre/srv/utils.py index 50bd480535..eb51943ffd 100644 --- a/src/calibre/srv/utils.py +++ b/src/calibre/srv/utils.py @@ -328,7 +328,6 @@ class RotatingStream(object): self.stream.flush() def prints(self, level, *args, **kwargs): - kwargs['safe_encode'] = True kwargs['file'] = self.stream self.current_pos += prints(*args, **kwargs) # line bufferring only works with text mode streams diff --git a/src/calibre/utils/ipc/job.py b/src/calibre/utils/ipc/job.py index a36de1a276..59465b7bb7 100644 --- a/src/calibre/utils/ipc/job.py +++ b/src/calibre/utils/ipc/job.py @@ -60,10 +60,8 @@ class BaseJob(object): self._status_text = _('Error') if self.failed else _('Finished') if DEBUG: try: - prints('Job:', self.id, self.description, 'finished', - safe_encode=True) - prints('\t'.join(self.details.splitlines(True)), - safe_encode=True) + prints('Job:', self.id, self.description, 'finished') + prints('\t'.join(self.details.splitlines(True))) except: pass if not self._done_called: diff --git a/src/calibre/utils/logging.py b/src/calibre/utils/logging.py index e6449caf3f..7affa7b3d6 100644 --- a/src/calibre/utils/logging.py +++ b/src/calibre/utils/logging.py @@ -24,7 +24,7 @@ class Stream(object): if stream is None: stream = io.BytesIO() self.stream = getattr(stream, 'buffer', stream) - self._prints = partial(prints, safe_encode=True, file=stream) + self._prints = partial(prints, file=stream) def flush(self): self.stream.flush()