From be671ef2d8f91934e32ed7b2af137e681db615b0 Mon Sep 17 00:00:00 2001 From: gryf Date: Sun, 14 Jun 2020 12:10:40 +0200 Subject: [PATCH] Removed isbytestring function --- ebook_converter/__init__.py | 14 +++++--------- ebook_converter/ebooks/conversion/plumber.py | 7 +++---- ebook_converter/ebooks/metadata/book/json_codec.py | 7 +++---- ebook_converter/ebooks/metadata/html.py | 4 ++-- ebook_converter/ebooks/metadata/meta.py | 3 +-- ebook_converter/ebooks/oeb/base.py | 4 ++-- ebook_converter/ebooks/oeb/stylizer.py | 4 ++-- ebook_converter/ebooks/txt/processor.py | 10 +++------- ebook_converter/utils/filenames.py | 12 ++++++------ ebook_converter/utils/logging.py | 4 ++-- 10 files changed, 29 insertions(+), 40 deletions(-) diff --git a/ebook_converter/__init__.py b/ebook_converter/__init__.py index 9564a1b..4b9a076 100644 --- a/ebook_converter/__init__.py +++ b/ebook_converter/__init__.py @@ -117,9 +117,9 @@ def sanitize_file_name(name, substitute='_'): **WARNING:** This function also replaces path separators, so only pass file names and not full paths to it. ''' - if isbytestring(name): + if isinstance(name, bytes): name = name.decode(filesystem_encoding, 'replace') - if isbytestring(substitute): + if isinstance(substitute, bytes): substitute = substitute.decode(filesystem_encoding, 'replace') chars = (substitute if c in _filename_sanitize_unicode else c for c in name) one = ''.join(chars) @@ -569,12 +569,8 @@ def prepare_string_for_xml(raw, attribute=False): return raw -def isbytestring(obj): - return isinstance(obj, bytes) - - def force_unicode(obj, enc=preferred_encoding): - if isbytestring(obj): + if isinstance(obj, bytes): try: obj = obj.decode(enc) except Exception: @@ -586,13 +582,13 @@ def force_unicode(obj, enc=preferred_encoding): obj = obj.decode('utf-8') except Exception: obj = repr(obj) - if isbytestring(obj): + if isinstance(obj, bytes): obj = obj.decode('utf-8') return obj def as_unicode(obj, enc=preferred_encoding): - if not isbytestring(obj): + if not isinstance(obj, bytes): try: obj = str(obj) except Exception: diff --git a/ebook_converter/ebooks/conversion/plumber.py b/ebook_converter/ebooks/conversion/plumber.py index 2d9323c..e294835 100644 --- a/ebook_converter/ebooks/conversion/plumber.py +++ b/ebook_converter/ebooks/conversion/plumber.py @@ -14,8 +14,7 @@ from ebook_converter.ebooks.conversion.preprocess import HTMLPreProcessor from ebook_converter.ptempfile import PersistentTemporaryDirectory from ebook_converter.utils.date import parse_date from ebook_converter.utils.zipfile import ZipFile -from ebook_converter import (extract, walk, isbytestring, filesystem_encoding, - get_types_map) +from ebook_converter import extract, walk, filesystem_encoding, get_types_map from ebook_converter.constants_old import __version__ @@ -88,9 +87,9 @@ class Plumber(object): :param input: Path to input file. :param output: Path to output file/directory ''' - if isbytestring(input): + if isinstance(input, bytes): input = input.decode(filesystem_encoding) - if isbytestring(output): + if isinstance(output, bytes): output = output.decode(filesystem_encoding) self.original_input_arg = input self.for_regex_wizard = for_regex_wizard diff --git a/ebook_converter/ebooks/metadata/book/json_codec.py b/ebook_converter/ebooks/metadata/book/json_codec.py index 6dcdb62..7d1c90e 100644 --- a/ebook_converter/ebooks/metadata/book/json_codec.py +++ b/ebook_converter/ebooks/metadata/book/json_codec.py @@ -9,7 +9,6 @@ from datetime import datetime, time from ebook_converter.ebooks.metadata.book import SERIALIZABLE_FIELDS from ebook_converter.constants_old import filesystem_encoding, preferred_encoding from ebook_converter.library.field_metadata import FieldMetadata -from ebook_converter import isbytestring from ebook_converter.polyglot.builtins import as_bytes from ebook_converter.polyglot.binary import as_base64_unicode, from_base64_bytes @@ -73,10 +72,10 @@ def object_to_unicode(obj, enc=preferred_encoding): def dec(x): return x.decode(enc, 'replace') - if isbytestring(obj): + if isinstance(obj, bytes): return dec(obj) if isinstance(obj, (list, tuple)): - return [dec(x) if isbytestring(x) else object_to_unicode(x) for x in obj] + return [dec(x) if isinstance(x, bytes) else object_to_unicode(x) for x in obj] if isinstance(obj, dict): ans = {} for k, v in obj.items(): @@ -163,7 +162,7 @@ class JsonCodec(object): value = book.get(key) if key == 'thumbnail': return encode_thumbnail(value) - elif isbytestring(value): # str includes bytes + elif isinstance(value, bytes): # str includes bytes enc = filesystem_encoding if key == 'lpath' else preferred_encoding return object_to_unicode(value, enc=enc) elif datatype == 'datetime': diff --git a/ebook_converter/ebooks/metadata/html.py b/ebook_converter/ebooks/metadata/html.py index 67b69a0..46dcb95 100644 --- a/ebook_converter/ebooks/metadata/html.py +++ b/ebook_converter/ebooks/metadata/html.py @@ -11,7 +11,7 @@ from lxml.etree import Comment from ebook_converter.ebooks.metadata import string_to_authors, authors_to_string from ebook_converter.ebooks.metadata.book.base import Metadata from ebook_converter.ebooks.chardet import xml_to_unicode -from ebook_converter import replace_entities, isbytestring +from ebook_converter import replace_entities from ebook_converter.utils.date import parse_date, is_date_undefined @@ -128,7 +128,7 @@ def get_metadata_(src, encoding=None): # Meta data definitions as in # https://www.mobileread.com/forums/showpost.php?p=712544&postcount=9 - if isbytestring(src): + if isinstance(src, bytes): if not encoding: src = xml_to_unicode(src)[0] else: diff --git a/ebook_converter/ebooks/metadata/meta.py b/ebook_converter/ebooks/metadata/meta.py index 131e14e..8be7321 100644 --- a/ebook_converter/ebooks/metadata/meta.py +++ b/ebook_converter/ebooks/metadata/meta.py @@ -3,7 +3,6 @@ import os, re, collections from ebook_converter.utils.config import prefs from ebook_converter.constants_old import filesystem_encoding from ebook_converter.ebooks.metadata.opf2 import OPF -from ebook_converter import isbytestring from ebook_converter.customize.ui import get_file_type_metadata, set_file_type_metadata from ebook_converter.ebooks.metadata import MetaInformation, string_to_authors @@ -126,7 +125,7 @@ def set_metadata(stream, mi, stream_type='lrf', report_error=None): def metadata_from_filename(name, pat=None, fallback_pat=None): - if isbytestring(name): + if isinstance(name, bytes): name = name.decode(filesystem_encoding, 'replace') name = name.rpartition('.')[0] mi = MetaInformation(None, None) diff --git a/ebook_converter/ebooks/oeb/base.py b/ebook_converter/ebooks/oeb/base.py index 769c87b..a76b100 100644 --- a/ebook_converter/ebooks/oeb/base.py +++ b/ebook_converter/ebooks/oeb/base.py @@ -20,7 +20,7 @@ from ebook_converter import force_unicode from ebook_converter.constants_old import filesystem_encoding, __version__ from ebook_converter.ebooks.chardet import xml_to_unicode from ebook_converter.ebooks.conversion.preprocess import CSSPreProcessor -from ebook_converter import (isbytestring, as_unicode, get_types_map) +from ebook_converter import as_unicode, get_types_map from ebook_converter.ebooks.oeb import parse_utils from ebook_converter.utils.cleantext import clean_xml_chars from ebook_converter.utils.short_uuid import uuid4 @@ -501,7 +501,7 @@ class DirContainer(object): def __init__(self, path, log, ignore_opf=False): self.log = log - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) self.opfname = None ext = os.path.splitext(path)[1].lower() diff --git a/ebook_converter/ebooks/oeb/stylizer.py b/ebook_converter/ebooks/oeb/stylizer.py index cfef868..f187d2d 100644 --- a/ebook_converter/ebooks/oeb/stylizer.py +++ b/ebook_converter/ebooks/oeb/stylizer.py @@ -12,7 +12,7 @@ from css_parser import (profile as cssprofiles, parseString, parseStyle, log as css_parser_log, CSSParser, profiles, replaceUrls) from ebook_converter import constants as const -from ebook_converter import force_unicode, as_unicode +from ebook_converter import force_unicode from ebook_converter.ebooks import unit_convert from ebook_converter.ebooks.oeb import base from ebook_converter.ebooks.oeb.normalize_css import DEFAULTS, normalizers @@ -303,7 +303,7 @@ class Stylizer(object): try: matches = tuple(select(text)) except SelectorError as err: - self.logger.error('Ignoring CSS rule with invalid selector: %r (%s)' % (text, as_unicode(err))) + self.logger.error('Ignoring CSS rule with invalid selector: %r (%s)' % (text, err)) continue if fl is not None: diff --git a/ebook_converter/ebooks/txt/processor.py b/ebook_converter/ebooks/txt/processor.py index 6b8f32a..579159b 100644 --- a/ebook_converter/ebooks/txt/processor.py +++ b/ebook_converter/ebooks/txt/processor.py @@ -3,17 +3,13 @@ Read content from txt file. """ import os, re -from ebook_converter import prepare_string_for_xml, isbytestring +from ebook_converter import prepare_string_for_xml from ebook_converter.ebooks.metadata.opf2 import OPFCreator from ebook_converter.ebooks.conversion.preprocess import DocAnalysis from ebook_converter.utils.cleantext import clean_ascii_chars -__license__ = 'GPL v3' -__copyright__ = '2009, John Schember ' -__docformat__ = 'restructuredtext en' - HTML_TEMPLATE = '%s \n%s\n' @@ -22,7 +18,7 @@ def clean_txt(txt): Run transformations on the text to put it into consistent state. ''' - if isbytestring(txt): + if isinstance(txt, bytes): txt = txt.decode('utf-8', 'replace') # Strip whitespace from the end of the line. Also replace # all line breaks with \n. @@ -69,7 +65,7 @@ def split_txt(txt, epub_split_size_kb=0): txt = b'\n\n'.join([ split_string_separator(line, chunk_size) for line in parts ]) - if isbytestring(txt): + if isinstance(txt, bytes): txt = txt.decode('utf-8') return txt diff --git a/ebook_converter/utils/filenames.py b/ebook_converter/utils/filenames.py index c37d439..7e590c6 100644 --- a/ebook_converter/utils/filenames.py +++ b/ebook_converter/utils/filenames.py @@ -8,7 +8,7 @@ import shutil import time from math import ceil -from ebook_converter import force_unicode, isbytestring, prints, sanitize_file_name +from ebook_converter import force_unicode, prints, sanitize_file_name from ebook_converter.constants_old import ( filesystem_encoding, iswindows, plugins, preferred_encoding, isosx ) @@ -145,7 +145,7 @@ def case_preserving_open_file(path, mode='wb', mkdir_mode=0o777): mkdir_mode specifies the mode with which any missing directories in path are created. ''' - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) path = os.path.abspath(path) @@ -220,7 +220,7 @@ def windows_get_fileid(path): all hardlinks to a file). Similar to inode number on linux. ''' import win32file from pywintypes import error - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) try: h = win32file.CreateFileW(path, 0, 0, None, win32file.OPEN_EXISTING, @@ -278,7 +278,7 @@ def windows_get_size(path): not in the directory entry (which could be out of date). So we open the file, and get the actual size. ''' import win32file - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) h = win32file.CreateFileW( path, 0, win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE | win32file.FILE_SHARE_DELETE, @@ -331,7 +331,7 @@ def windows_fast_hardlink(src, dest): def windows_nlinks(path): import win32file dwFlagsAndAttributes = win32file.FILE_FLAG_BACKUP_SEMANTICS if os.path.isdir(path) else 0 - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) handle = win32file.CreateFileW(path, win32file.GENERIC_READ, win32file.FILE_SHARE_READ, None, win32file.OPEN_EXISTING, dwFlagsAndAttributes, None) try: @@ -357,7 +357,7 @@ class WindowsAtomicFolderMove(object): from pywintypes import error from collections import defaultdict - if isbytestring(path): + if isinstance(path, bytes): path = path.decode(filesystem_encoding) if not os.path.exists(path): diff --git a/ebook_converter/utils/logging.py b/ebook_converter/utils/logging.py index 58c676c..c1f2398 100644 --- a/ebook_converter/utils/logging.py +++ b/ebook_converter/utils/logging.py @@ -5,7 +5,7 @@ import sys, traceback, io from functools import partial from threading import Lock -from ebook_converter import isbytestring, force_unicode, as_unicode, prints +from ebook_converter import force_unicode, as_unicode, prints __license__ = 'GPL 3' @@ -108,7 +108,7 @@ class UnicodeHTMLStream(HTMLStream): end = kwargs.get(u'end', u'\n') for arg in args: - if isbytestring(arg): + if isinstance(arg, bytes): arg = force_unicode(arg) elif not isinstance(arg, str): arg = as_unicode(arg)