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:
@@ -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):
|
||||
|
||||
20
ebook_converter/utils/encoding.py
Normal file
20
ebook_converter/utils/encoding.py
Normal 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
|
||||
@@ -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]
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user