1
0
mirror of https://github.com/gryf/ebook-converter.git synced 2026-04-03 19:23:32 +02:00

Move force_uniceode to utils package

This commit is contained in:
2020-11-11 19:30:50 +01:00
parent 35c34c3b45
commit 3152c52839
16 changed files with 72 additions and 60 deletions

View File

@@ -7,10 +7,11 @@ import json
import numbers
import os
import pickle
import pkg_resources
import re
import traceback
import pkg_resources
from ebook_converter.constants_old import config_dir
from ebook_converter.constants_old import filesystem_encoding
from ebook_converter.constants_old import preferred_encoding
@@ -75,7 +76,8 @@ def from_json(obj):
return obj
def force_unicode(x):
def _force_unicode(x):
# TODO(gryf): eliminate cases, when this kind of functions are needed.
try:
return x.decode(preferred_encoding)
except UnicodeDecodeError:
@@ -87,7 +89,7 @@ def force_unicode(x):
def force_unicode_recursive(obj):
if isinstance(obj, bytes):
return force_unicode(obj)
return _force_unicode(obj)
if isinstance(obj, (list, tuple)):
return type(obj)(map(force_unicode_recursive, obj))
if isinstance(obj, dict):

View File

@@ -0,0 +1,20 @@
from ebook_converter import constants_old
def force_unicode(obj, enc=constants_old.preferred_encoding):
if isinstance(obj, bytes):
try:
obj = obj.decode(enc)
except Exception:
try:
obj = obj.decode(constants_old.filesystem_encoding
if enc == constants_old.preferred_encoding
else constants_old.preferred_encoding)
except Exception:
try:
obj = obj.decode('utf-8')
except Exception:
obj = repr(obj)
if isinstance(obj, bytes):
obj = obj.decode('utf-8')
return obj

View File

@@ -9,9 +9,9 @@ import shutil
from math import ceil
from ebook_converter import constants_old
from ebook_converter import force_unicode
from ebook_converter.constants_old import (filesystem_encoding,
preferred_encoding)
from ebook_converter.utils import encoding as uenc
from ebook_converter.utils.localization import get_udc
@@ -183,7 +183,7 @@ def case_preserving_open_file(path, mode='wb', mkdir_mode=0o777):
path = os.path.abspath(path)
sep = force_unicode(os.sep, 'ascii')
sep = uenc.force_unicode(os.sep, 'ascii')
if path.endswith(sep):
path = path[:-1]

View File

@@ -12,11 +12,11 @@ from threading import Thread
#from PyQt5.QtCore import QBuffer, QByteArray, Qt
#from PyQt5.QtGui import QColor, QImage, QImageReader, QImageWriter, QPixmap, QTransform
from ebook_converter import force_unicode
from ebook_converter.constants_old import plugins
from ebook_converter.ptempfile import TemporaryDirectory
from ebook_converter.utils.config_base import tweaks
from ebook_converter.utils.filenames import atomic_rename
from ebook_converter.utils import encoding as uenc
from ebook_converter.utils.imghdr import what
# Utilities {{{
@@ -586,7 +586,7 @@ def run_optimizer(file_path, cmd, as_filter=False, input_data=None):
outw = Thread(name='CopyOutput', target=copy, args=(p.stdout, outf))
outw.daemon = True
outw.start()
raw = force_unicode(stderr.read())
raw = uenc.force_unicode(stderr.read())
if p.wait() != 0:
return raw
else: