Work on removing use of _ from builtins

This commit is contained in:
Kovid Goyal 2023-01-10 08:46:42 +05:30
parent 36ff53ca30
commit 8b71e251c4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
53 changed files with 180 additions and 117 deletions

View File

@ -7,7 +7,7 @@ from operator import itemgetter
from qt.core import ( from qt.core import (
QAbstractItemView, QAction, QComboBox, QGridLayout, QHBoxLayout, QIcon, QAbstractItemView, QAction, QComboBox, QGridLayout, QHBoxLayout, QIcon,
QInputDialog, QItemSelectionModel, QLabel, QListWidget, QListWidgetItem, QInputDialog, QItemSelectionModel, QLabel, QListWidget, QListWidgetItem,
QPushButton, Qt, QWidget, pyqtSignal QPushButton, Qt, QWidget, pyqtSignal,
) )
from calibre.gui2 import choose_files, choose_save_file from calibre.gui2 import choose_files, choose_save_file
@ -17,6 +17,7 @@ from calibre.gui2.viewer.shortcuts import get_shortcut_for
from calibre.gui2.viewer.web_view import vprefs from calibre.gui2.viewer.web_view import vprefs
from calibre.utils.date import EPOCH, utcnow from calibre.utils.date import EPOCH, utcnow
from calibre.utils.icu import primary_sort_key from calibre.utils.icu import primary_sort_key
from calibre.utils.localization import _
class BookmarksList(QListWidget): class BookmarksList(QListWidget):

View File

@ -28,7 +28,7 @@ from calibre.gui2.viewer.config import vprefs
from calibre.gui2.viewer.search import SearchInput from calibre.gui2.viewer.search import SearchInput
from calibre.gui2.viewer.shortcuts import get_shortcut_for, index_to_key_sequence from calibre.gui2.viewer.shortcuts import get_shortcut_for, index_to_key_sequence
from calibre.gui2.widgets2 import Dialog from calibre.gui2.widgets2 import Dialog
from calibre.utils.localization import ngettext from calibre.utils.localization import _, ngettext
from calibre_extensions.progress_indicator import set_no_activate_on_click from calibre_extensions.progress_indicator import set_no_activate_on_click
decoration_cache = {} decoration_cache = {}

View File

@ -18,7 +18,7 @@ from calibre import prints, random_user_agent
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
from calibre.gui2.viewer.web_view import apply_font_settings, vprefs from calibre.gui2.viewer.web_view import apply_font_settings, vprefs
from calibre.gui2.widgets2 import Dialog from calibre.gui2.widgets2 import Dialog
from calibre.utils.localization import canonicalize_lang, get_lang, lang_as_iso639_1 from calibre.utils.localization import _, canonicalize_lang, get_lang, lang_as_iso639_1
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from calibre.utils.webengine import ( from calibre.utils.webengine import (
create_script, insert_scripts, secure_webengine, setup_profile, create_script, insert_scripts, secure_webengine, setup_profile,

View File

@ -16,6 +16,7 @@ from calibre.gui2.viewer.ui import EbookViewer, is_float
from calibre.ptempfile import reset_base_dir from calibre.ptempfile import reset_base_dir
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.ipc import viewer_socket_address from calibre.utils.ipc import viewer_socket_address
from calibre.utils.localization import _
singleinstance_name = 'calibre_viewer' singleinstance_name = 'calibre_viewer'
@ -168,6 +169,7 @@ def run_gui(app, opts, args, internal_book_data, listener=None):
def main(args=sys.argv): def main(args=sys.argv):
from calibre.utils.webengine import setup_fake_protocol from calibre.utils.webengine import setup_fake_protocol
# Ensure viewer can continue to function if GUI is closed # Ensure viewer can continue to function if GUI is closed
os.environ.pop('CALIBRE_WORKER_TEMP_DIR', None) os.environ.pop('CALIBRE_WORKER_TEMP_DIR', None)
reset_base_dir() reset_base_dir()

View File

@ -5,18 +5,16 @@
import os import os
import subprocess import subprocess
import sys import sys
from threading import Thread
from qt.core import ( from qt.core import (
QCheckBox, QDoubleSpinBox, QFormLayout, QHBoxLayout, QIcon, QLabel, QDialog, QCheckBox, QDialog, QDoubleSpinBox, QFormLayout, QHBoxLayout, QIcon, QLabel,
QLineEdit, QPageSize, QProgressDialog, QTimer, QToolButton, QVBoxLayout QLineEdit, QPageSize, QProgressDialog, QTimer, QToolButton, QVBoxLayout,
) )
from threading import Thread
from calibre import sanitize_file_name from calibre import sanitize_file_name
from calibre.ebooks.conversion.plugins.pdf_output import PAPER_SIZES from calibre.ebooks.conversion.plugins.pdf_output import PAPER_SIZES
from calibre.gui2 import ( from calibre.gui2 import (
Application, choose_save_file, dynamic, elided_text, error_dialog, Application, choose_save_file, dynamic, elided_text, error_dialog, open_local_file,
open_local_file
) )
from calibre.gui2.widgets import PaperSizes from calibre.gui2.widgets import PaperSizes
from calibre.gui2.widgets2 import Dialog from calibre.gui2.widgets2 import Dialog
@ -24,9 +22,9 @@ from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.filenames import expanduser from calibre.utils.filenames import expanduser
from calibre.utils.ipc.simple_worker import start_pipe_worker from calibre.utils.ipc.simple_worker import start_pipe_worker
from calibre.utils.localization import _
from calibre.utils.serialize import msgpack_dumps, msgpack_loads from calibre.utils.serialize import msgpack_dumps, msgpack_loads
vprefs = JSONConfig('viewer') vprefs = JSONConfig('viewer')

View File

@ -19,7 +19,7 @@ from calibre.gui2.viewer.config import vprefs
from calibre.gui2.viewer.web_view import get_data, get_manifest from calibre.gui2.viewer.web_view import get_data, get_manifest
from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox
from calibre.utils.icu import primary_collator_without_punctuation from calibre.utils.icu import primary_collator_without_punctuation
from calibre.utils.localization import ngettext from calibre.utils.localization import _, ngettext
from polyglot.builtins import iteritems from polyglot.builtins import iteritems
from polyglot.functools import lru_cache from polyglot.functools import lru_cache
from polyglot.queue import Queue from polyglot.queue import Queue

View File

@ -6,14 +6,15 @@ import re
from functools import partial from functools import partial
from qt.core import ( from qt.core import (
QAbstractItemView, QApplication, QEvent, QFont, QHBoxLayout, QIcon, QMenu, QAbstractItemView, QApplication, QEvent, QFont, QHBoxLayout, QIcon, QMenu,
QModelIndex, QStandardItem, QStandardItemModel, QStyledItemDelegate, QModelIndex, QStandardItem, QStandardItemModel, QStyledItemDelegate, Qt,
Qt, QToolButton, QToolTip, QTreeView, QWidget, pyqtSignal QToolButton, QToolTip, QTreeView, QWidget, pyqtSignal,
) )
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
from calibre.gui2.search_box import SearchBox2
from calibre.gui2.gestures import GestureManager from calibre.gui2.gestures import GestureManager
from calibre.gui2.search_box import SearchBox2
from calibre.utils.icu import primary_contains from calibre.utils.icu import primary_contains
from calibre.utils.localization import _
class Delegate(QStyledItemDelegate): class Delegate(QStyledItemDelegate):

View File

@ -19,6 +19,7 @@ from calibre.gui2.viewer.web_view import set_book_path, vprefs
from calibre.gui2.widgets2 import Dialog from calibre.gui2.widgets2 import Dialog
from calibre.startup import connect_lambda from calibre.startup import connect_lambda
from calibre.utils.icu import primary_sort_key from calibre.utils.icu import primary_sort_key
from calibre.utils.localization import _
class Action: class Action:

View File

@ -6,6 +6,7 @@ from qt.core import QDialog, QDialogButtonBox, QObject, QVBoxLayout, pyqtSignal
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
from calibre.gui2.viewer.config import get_pref_group, vprefs from calibre.gui2.viewer.config import get_pref_group, vprefs
from calibre.gui2.widgets2 import Dialog from calibre.gui2.widgets2 import Dialog
from calibre.utils.localization import _
def set_sync_override(allowed): def set_sync_override(allowed):

View File

@ -48,6 +48,7 @@ from calibre.startup import connect_lambda
from calibre.utils.date import utcnow from calibre.utils.date import utcnow
from calibre.utils.img import image_from_path from calibre.utils.img import image_from_path
from calibre.utils.ipc.simple_worker import WorkerError from calibre.utils.ipc.simple_worker import WorkerError
from calibre.utils.localization import _
from polyglot.builtins import as_bytes, as_unicode, iteritems, itervalues from polyglot.builtins import as_bytes, as_unicode, iteritems, itervalues

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net> # License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
import os import os
import shutil import shutil
import sys import sys
@ -28,7 +27,7 @@ from calibre.gui2.viewer.config import viewer_config_dir, vprefs
from calibre.gui2.viewer.tts import TTS from calibre.gui2.viewer.tts import TTS
from calibre.gui2.webengine import RestartingWebEngineView from calibre.gui2.webengine import RestartingWebEngineView
from calibre.srv.code import get_translations_data from calibre.srv.code import get_translations_data
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import _, localize_user_manual_link
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from calibre.utils.serialize import json_loads from calibre.utils.serialize import json_loads
from calibre.utils.shared_file import share_open from calibre.utils.shared_file import share_open

View File

@ -2,13 +2,13 @@
# License: GPL v3 Copyright: 2020, Kovid Goyal <kovid at kovidgoyal.net> # License: GPL v3 Copyright: 2020, Kovid Goyal <kovid at kovidgoyal.net>
import re import re
from qt.core import ( from qt.core import (
QAction, QFont, QFontMetrics, QStyle, QStyledItemDelegate, Qt, pyqtSignal, QPalette QAction, QFont, QFontMetrics, QPalette, QStyle, QStyledItemDelegate, Qt, pyqtSignal,
) )
from calibre.gui2 import QT_HIDDEN_CLEAR_ACTION from calibre.gui2 import QT_HIDDEN_CLEAR_ACTION
from calibre.gui2.widgets2 import HistoryComboBox from calibre.gui2.widgets2 import HistoryComboBox
from calibre.utils.localization import _
class ResultsDelegate(QStyledItemDelegate): # {{{ class ResultsDelegate(QStyledItemDelegate): # {{{

View File

@ -25,7 +25,7 @@ from calibre.gui2.filename_pattern_ui import Ui_Form
from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator
from calibre.startup import connect_lambda from calibre.startup import connect_lambda
from calibre.utils.config import XMLConfig, prefs from calibre.utils.config import XMLConfig, prefs
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import _, localize_user_manual_link
from polyglot.builtins import native_string_type from polyglot.builtins import native_string_type
history = XMLConfig('history') history = XMLConfig('history')

View File

@ -4,13 +4,13 @@
import weakref import weakref
from qt.core import ( from qt.core import (
QApplication, QBrush, QByteArray, QCalendarWidget, QCheckBox, QColor, QApplication, QBrush, QByteArray, QCalendarWidget, QCheckBox, QColor, QColorDialog,
QColorDialog, QComboBox, QDate, QDateTime, QDateTimeEdit, QDialog, QComboBox, QDate, QDateTime, QDateTimeEdit, QDialog, QDialogButtonBox, QFont,
QDialogButtonBox, QFont, QFontInfo, QFontMetrics, QFrame, QIcon, QKeySequence, QFontInfo, QFontMetrics, QFrame, QIcon, QKeySequence, QLabel, QLayout, QMenu,
QLabel, QLayout, QMenu, QMimeData, QPainter, QPalette, QPixmap, QPoint, QMimeData, QPainter, QPalette, QPixmap, QPoint, QPushButton, QRect, QScrollArea,
QPushButton, QRect, QScrollArea, QSize, QSizePolicy, QStyle, QStyledItemDelegate, QSize, QSizePolicy, QStyle, QStyledItemDelegate, QStyleOptionToolButton,
QStyleOptionToolButton, QStylePainter, Qt, QTabWidget, QTextBrowser, QTextCursor, QStylePainter, Qt, QTabWidget, QTextBrowser, QTextCursor, QToolButton, QUndoCommand,
QToolButton, QUndoCommand, QUndoStack, QUrl, QWidget, pyqtSignal QUndoStack, QUrl, QWidget, pyqtSignal,
) )
from calibre.ebooks.metadata import rating_to_stars from calibre.ebooks.metadata import rating_to_stars
@ -19,6 +19,7 @@ from calibre.gui2.complete2 import EditWithComplete, LineEdit
from calibre.gui2.widgets import history from calibre.gui2.widgets import history
from calibre.utils.config_base import tweaks from calibre.utils.config_base import tweaks
from calibre.utils.date import UNDEFINED_DATE from calibre.utils.date import UNDEFINED_DATE
from calibre.utils.localization import _
from polyglot.functools import lru_cache from polyglot.functools import lru_cache

View File

@ -6,11 +6,11 @@ import os
import struct import struct
import subprocess import subprocess
import sys import sys
from contextlib import suppress
from threading import Thread from threading import Thread
from uuid import uuid4 from uuid import uuid4
from contextlib import suppress
from calibre.utils.localization import _
from polyglot.builtins import string_or_bytes from polyglot.builtins import string_or_bytes
base = sys.extensions_location if hasattr(sys, 'new_app_layout') else os.path.dirname(sys.executable) base = sys.extensions_location if hasattr(sys, 'new_app_layout') else os.path.dirname(sys.executable)

View File

@ -10,8 +10,8 @@ import re
import traceback import traceback
from contextlib import closing, suppress from contextlib import closing, suppress
from qt.core import ( from qt.core import (
QAbstractListModel, QDir, QIcon, QItemSelection, QItemSelectionModel, Qt, QAbstractListModel, QDir, QIcon, QItemSelection, QItemSelectionModel, Qt, QWizard,
QWizard, QWizardPage, pyqtSignal QWizardPage, pyqtSignal,
) )
from calibre import __appname__ from calibre import __appname__
@ -24,7 +24,7 @@ from calibre.gui2.wizard.library_ui import Ui_WizardPage as LibraryUI
from calibre.gui2.wizard.send_email import smtp_prefs from calibre.gui2.wizard.send_email import smtp_prefs
from calibre.gui2.wizard.stanza_ui import Ui_WizardPage as StanzaUI from calibre.gui2.wizard.stanza_ui import Ui_WizardPage as StanzaUI
from calibre.utils.config import dynamic, prefs from calibre.utils.config import dynamic, prefs
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import _, localize_user_manual_link
from polyglot.builtins import iteritems from polyglot.builtins import iteritems
# Devices {{{ # Devices {{{
@ -717,7 +717,7 @@ class LibraryPage(QWizardPage, LibraryUI):
self.language.blockSignals(True) self.language.blockSignals(True)
self.language.clear() self.language.clear()
from calibre.utils.localization import ( from calibre.utils.localization import (
available_translations, get_lang, get_language, get_lc_messages_path available_translations, get_lang, get_language, get_lc_messages_path,
) )
lang = get_lang() lang = get_lang()
lang = get_lc_messages_path(lang) if lang else lang lang = get_lc_messages_path(lang) if lang else lang

View File

@ -7,17 +7,17 @@ __docformat__ = 'restructuredtext en'
import sys import sys
from functools import partial from functools import partial
from qt.core import (
QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QHBoxLayout, QIcon, QLabel,
QLineEdit, QPlainTextEdit, QPushButton, Qt, QVBoxLayout, QWidget, pyqtSignal,
)
from threading import Thread from threading import Thread
from qt.core import (
QWidget, pyqtSignal, QDialog, Qt, QLabel, QLineEdit, QDialogButtonBox,
QGridLayout, QCheckBox, QIcon, QVBoxLayout, QPushButton, QPlainTextEdit,
QHBoxLayout)
from calibre import prints from calibre import prints
from calibre.gui2.wizard.send_email_ui import Ui_Form
from calibre.utils.smtp import config as smtp_prefs
from calibre.gui2 import error_dialog, question_dialog from calibre.gui2 import error_dialog, question_dialog
from calibre.gui2.wizard.send_email_ui import Ui_Form
from calibre.utils.localization import _
from calibre.utils.smtp import config as smtp_prefs
from polyglot.binary import as_hex_unicode, from_hex_unicode from polyglot.binary import as_hex_unicode, from_hex_unicode
from polyglot.io import PolyglotStringIO from polyglot.io import PolyglotStringIO
@ -211,7 +211,7 @@ class SendEmail(QWidget, Ui_Form):
def test_email_settings(self, to): def test_email_settings(self, to):
opts = smtp_prefs().parse() opts = smtp_prefs().parse()
from calibre.utils.smtp import sendmail, create_mail from calibre.utils.smtp import create_mail, sendmail
buf = PolyglotStringIO() buf = PolyglotStringIO()
debug_out = partial(prints, file=buf) debug_out = partial(prints, file=buf)
oout, oerr = sys.stdout, sys.stderr oout, oerr = sys.stdout, sys.stderr

View File

@ -85,6 +85,7 @@ def is_possible_media_pack_error(e):
def show_media_pack_error(): def show_media_pack_error():
import traceback import traceback
from calibre.gui2 import error_dialog, Application from calibre.gui2 import error_dialog, Application
from calibre.utils.localization import _
app = Application([]) app = Application([])
error_dialog(None, _('Required component missing'), '<p>' + _( error_dialog(None, _('Required component missing'), '<p>' + _(
'This computer is missing the Windows MediaPack, which is needed for calibre. Instructions' 'This computer is missing the Windows MediaPack, which is needed for calibre. Instructions'

View File

@ -20,7 +20,7 @@ from calibre.ebooks.metadata.opf2 import metadata_to_opf
from calibre.utils.config import prefs, tweaks from calibre.utils.config import prefs, tweaks
from calibre.utils.date import UNDEFINED_DATE, clean_date_for_sort, now, parse_date from calibre.utils.date import UNDEFINED_DATE, clean_date_for_sort, now, parse_date
from calibre.utils.icu import lower as icu_lower from calibre.utils.icu import lower as icu_lower
from calibre.utils.localization import canonicalize_lang, get_udc, lang_map from calibre.utils.localization import _, canonicalize_lang, get_udc, lang_map
from calibre.utils.search_query_parser import ParseException, SearchQueryParser from calibre.utils.search_query_parser import ParseException, SearchQueryParser
from polyglot.builtins import cmp, iteritems, itervalues, string_or_bytes from polyglot.builtins import cmp, iteritems, itervalues, string_or_bytes

View File

@ -16,6 +16,7 @@ from calibre.customize import CatalogPlugin
from calibre.customize.conversion import DummyReporter from calibre.customize.conversion import DummyReporter
from calibre.ebooks.metadata import format_isbn from calibre.ebooks.metadata import format_isbn
from calibre.library.catalogs import FIELDS, TEMPLATE_ALLOWED_FIELDS from calibre.library.catalogs import FIELDS, TEMPLATE_ALLOWED_FIELDS
from calibre.utils.localization import _
from polyglot.builtins import string_or_bytes from polyglot.builtins import string_or_bytes

View File

@ -5,12 +5,15 @@ __license__ = 'GPL v3'
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import re, codecs, os import codecs
import os
import re
from collections import namedtuple from collections import namedtuple
from calibre.customize import CatalogPlugin from calibre.customize import CatalogPlugin
from calibre.library.catalogs import FIELDS
from calibre.customize.conversion import DummyReporter from calibre.customize.conversion import DummyReporter
from calibre.library.catalogs import FIELDS
from calibre.utils.localization import _
class CSV_XML(CatalogPlugin): class CSV_XML(CatalogPlugin):
@ -50,12 +53,13 @@ class CSV_XML(CatalogPlugin):
"Applies to: CSV, XML output formats"))] "Applies to: CSV, XML output formats"))]
def run(self, path_to_output, opts, db, notification=DummyReporter()): def run(self, path_to_output, opts, db, notification=DummyReporter()):
from lxml import etree
from calibre.ebooks.metadata import authors_to_string
from calibre.library import current_library_name from calibre.library import current_library_name
from calibre.utils.date import isoformat from calibre.utils.date import isoformat
from calibre.utils.html2text import html2text from calibre.utils.html2text import html2text
from calibre.utils.logging import default_log as log from calibre.utils.logging import default_log as log
from lxml import etree
from calibre.ebooks.metadata import authors_to_string
self.fmt = path_to_output.rpartition('.')[2] self.fmt = path_to_output.rpartition('.')[2]
self.notification = notification self.notification = notification

View File

@ -5,16 +5,20 @@ __license__ = 'GPL v3'
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import datetime, os, time import datetime
import os
import time
from collections import namedtuple from collections import namedtuple
from calibre import strftime from calibre import strftime
from calibre.customize import CatalogPlugin from calibre.customize import CatalogPlugin
from calibre.customize.conversion import OptionRecommendation, DummyReporter from calibre.customize.conversion import DummyReporter, OptionRecommendation
from calibre.library import current_library_name from calibre.library import current_library_name
from calibre.library.catalogs import AuthorSortMismatchException, EmptyCatalogException from calibre.library.catalogs import AuthorSortMismatchException, EmptyCatalogException
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.localization import calibre_langcode_to_name, canonicalize_lang, get_lang from calibre.utils.localization import (
_, calibre_langcode_to_name, canonicalize_lang, get_lang,
)
Option = namedtuple('Option', 'option, default, dest, action, help') Option = namedtuple('Option', 'option, default, dest, action, help')
@ -190,8 +194,8 @@ class EPUB_MOBI(CatalogPlugin):
def run(self, path_to_output, opts, db, notification=DummyReporter()): def run(self, path_to_output, opts, db, notification=DummyReporter()):
from calibre.library.catalogs.epub_mobi_builder import CatalogBuilder from calibre.library.catalogs.epub_mobi_builder import CatalogBuilder
from calibre.utils.logging import default_log as log
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.logging import default_log as log
# If preset specified from the cli, insert stored options from JSON file # If preset specified from the cli, insert stored options from JSON file
if hasattr(opts, 'preset') and opts.preset: if hasattr(opts, 'preset') and opts.preset:

View File

@ -38,7 +38,7 @@ from calibre.utils.formatter import TemplateFormatter
from calibre.utils.icu import ( from calibre.utils.icu import (
capitalize, collation_order, sort_key, title_case as icu_title, upper as icu_upper, capitalize, collation_order, sort_key, title_case as icu_title, upper as icu_upper,
) )
from calibre.utils.localization import get_lang, lang_as_iso639_1, ngettext from calibre.utils.localization import _, get_lang, lang_as_iso639_1, ngettext
from calibre.utils.resources import get_image_path as I, get_path as P from calibre.utils.resources import get_image_path as I, get_path as P
from calibre.utils.xml_parse import safe_xml_fromstring from calibre.utils.xml_parse import safe_xml_fromstring
from calibre.utils.zipfile import ZipFile from calibre.utils.zipfile import ZipFile

View File

@ -5,11 +5,15 @@ __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import re, os, traceback, fnmatch import fnmatch
import os
import re
import traceback
from calibre import isbytestring from calibre import isbytestring
from calibre.constants import filesystem_encoding from calibre.constants import filesystem_encoding
from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks import BOOK_EXTENSIONS
from calibre.utils.localization import _
from polyglot.builtins import iteritems from polyglot.builtins import iteritems
EBOOK_EXTENSIONS = frozenset(BOOK_EXTENSIONS) EBOOK_EXTENSIONS = frozenset(BOOK_EXTENSIONS)

View File

@ -6,6 +6,7 @@ import json
import re import re
from textwrap import dedent from textwrap import dedent
from calibre.utils.localization import _
from polyglot.binary import as_hex_unicode, from_hex_bytes from polyglot.binary import as_hex_unicode, from_hex_bytes
color_row_key = '*row' color_row_key = '*row'

View File

@ -5,14 +5,17 @@ __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import json, re, numbers import json
import numbers
import re
from functools import partial from functools import partial
from calibre import prints, force_unicode from calibre import force_unicode, prints
from calibre.constants import preferred_encoding from calibre.constants import preferred_encoding
from calibre.library.field_metadata import FieldMetadata from calibre.library.field_metadata import FieldMetadata
from calibre.utils.date import parse_date
from calibre.utils.config import tweaks from calibre.utils.config import tweaks
from calibre.utils.date import parse_date
from calibre.utils.localization import _
from polyglot.builtins import string_or_bytes from polyglot.builtins import string_or_bytes
@ -217,7 +220,7 @@ class CustomColumns:
if data['display'].get('sort_alpha', False): if data['display'].get('sort_alpha', False):
ans.sort(key=lambda x:x.lower()) ans.sort(key=lambda x:x.lower())
if data['datatype'] == 'datetime' and isinstance(ans, string_or_bytes): if data['datatype'] == 'datetime' and isinstance(ans, string_or_bytes):
from calibre.db.tables import c_parse, UNDEFINED_DATE from calibre.db.tables import UNDEFINED_DATE, c_parse
ans = c_parse(ans) ans = c_parse(ans)
if ans is UNDEFINED_DATE: if ans is UNDEFINED_DATE:
ans = None ans = None
@ -249,7 +252,7 @@ class CustomColumns:
if data['display'].get('sort_alpha', False): if data['display'].get('sort_alpha', False):
ans.sort(key=lambda x: x.lower()) ans.sort(key=lambda x: x.lower())
if data['datatype'] == 'datetime' and isinstance(ans, string_or_bytes): if data['datatype'] == 'datetime' and isinstance(ans, string_or_bytes):
from calibre.db.tables import c_parse, UNDEFINED_DATE from calibre.db.tables import UNDEFINED_DATE, c_parse
ans = c_parse(ans) ans = c_parse(ans)
if ans is UNDEFINED_DATE: if ans is UNDEFINED_DATE:
ans = None ans = None

View File

@ -5,14 +5,16 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
Backend that implements storage of ebooks in an sqlite database. Backend that implements storage of ebooks in an sqlite database.
''' '''
import datetime
import re
import sqlite3 as sqlite import sqlite3 as sqlite
import datetime, re, sre_constants import sre_constants
from zlib import compress, decompress from zlib import compress, decompress
from calibre.ebooks.metadata import MetaInformation
from calibre.ebooks.metadata import string_to_authors
from calibre.utils.serialize import pickle_loads, pickle_dumps
from calibre import isbytestring from calibre import isbytestring
from calibre.ebooks.metadata import MetaInformation, string_to_authors
from calibre.utils.localization import _
from calibre.utils.serialize import pickle_dumps, pickle_loads
class Concatenate: class Concatenate:
@ -980,7 +982,7 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE;
data = self.conn.get('SELECT data FROM covers WHERE book=?', (id,), all=False) data = self.conn.get('SELECT data FROM covers WHERE book=?', (id,), all=False)
if not data: if not data:
return None return None
return(decompress(data)) return decompress(data)
def tags(self, index, index_is_id=False): def tags(self, index, index_is_id=False):
'''tags as a comma separated list or None''' '''tags as a comma separated list or None'''

View File

@ -60,7 +60,7 @@ from calibre.utils.filenames import (
from calibre.utils.formatter_functions import load_user_template_functions from calibre.utils.formatter_functions import load_user_template_functions
from calibre.utils.icu import lower, lower as icu_lower, sort_key, strcmp from calibre.utils.icu import lower, lower as icu_lower, sort_key, strcmp
from calibre.utils.img import save_cover_data_to from calibre.utils.img import save_cover_data_to
from calibre.utils.localization import calibre_langcode_to_name, canonicalize_lang from calibre.utils.localization import _, calibre_langcode_to_name, canonicalize_lang
from calibre.utils.recycle_bin import delete_file, delete_tree from calibre.utils.recycle_bin import delete_file, delete_tree
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from calibre.utils.search_query_parser import saved_searches, set_saved_searches from calibre.utils.search_query_parser import saved_searches, set_saved_searches

View File

@ -9,7 +9,7 @@ from collections import OrderedDict
from calibre.utils.config_base import tweaks from calibre.utils.config_base import tweaks
from calibre.utils.icu import lower as icu_lower from calibre.utils.icu import lower as icu_lower
from calibre.utils.localization import ngettext from calibre.utils.localization import _, ngettext
from polyglot.builtins import iteritems, itervalues from polyglot.builtins import iteritems, itervalues
category_icon_map = { category_icon_map = {

View File

@ -5,17 +5,21 @@ __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import re, os, traceback, shutil import os
from threading import Thread import re
import shutil
import traceback
from operator import itemgetter from operator import itemgetter
from threading import Thread
from calibre.ptempfile import TemporaryDirectory from calibre import isbytestring
from calibre.constants import filesystem_encoding
from calibre.ebooks.metadata.opf2 import OPF from calibre.ebooks.metadata.opf2 import OPF
from calibre.library.database2 import LibraryDatabase2 from calibre.library.database2 import LibraryDatabase2
from calibre.library.prefs import DBPrefs from calibre.library.prefs import DBPrefs
from calibre.constants import filesystem_encoding from calibre.ptempfile import TemporaryDirectory
from calibre.utils.date import utcfromtimestamp from calibre.utils.date import utcfromtimestamp
from calibre import isbytestring from calibre.utils.localization import _
from polyglot.builtins import iteritems from polyglot.builtins import iteritems
NON_EBOOK_EXTENSIONS = frozenset([ NON_EBOOK_EXTENSIONS = frozenset([

View File

@ -5,19 +5,21 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, traceback, re, errno import errno
import os
import re
import traceback
from calibre.constants import DEBUG from calibre import prints, sanitize_file_name, strftime
from calibre.constants import DEBUG, preferred_encoding
from calibre.db.errors import NoSuchFormat from calibre.db.errors import NoSuchFormat
from calibre.utils.config import Config, StringConfig, tweaks
from calibre.utils.formatter import TemplateFormatter
from calibre.utils.filenames import shorten_components_to, ascii_filename
from calibre.constants import preferred_encoding
from calibre.ebooks.metadata import fmt_sidx
from calibre.ebooks.metadata import title_sort
from calibre.utils.date import as_local_time
from calibre import strftime, prints, sanitize_file_name
from calibre.db.lazy import FormatsList from calibre.db.lazy import FormatsList
from calibre.ebooks.metadata import fmt_sidx, title_sort
from calibre.utils.config import Config, StringConfig, tweaks
from calibre.utils.date import as_local_time
from calibre.utils.filenames import ascii_filename, shorten_components_to
from calibre.utils.formatter import TemplateFormatter
from calibre.utils.localization import _
plugboard_any_device_value = 'any device' plugboard_any_device_value = 'any device'
plugboard_any_format_value = 'any format' plugboard_any_format_value = 'any format'

View File

@ -15,6 +15,7 @@ from calibre import CurrentDir, __appname__, guess_type, prints
from calibre.constants import isbsd, islinux from calibre.constants import isbsd, islinux
from calibre.customize.ui import all_input_formats from calibre.customize.ui import all_input_formats
from calibre.ptempfile import TemporaryDirectory from calibre.ptempfile import TemporaryDirectory
from calibre.utils.localization import _
from calibre.utils.resources import get_image_path as I, get_path as P from calibre.utils.resources import get_image_path as I, get_path as P
from polyglot.builtins import iteritems from polyglot.builtins import iteritems

View File

@ -16,7 +16,7 @@ from calibre.constants import config_dir, filesystem_encoding, iswindows
from calibre.spell import parse_lang_code from calibre.spell import parse_lang_code
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.icu import capitalize from calibre.utils.icu import capitalize
from calibre.utils.localization import get_lang, get_system_locale from calibre.utils.localization import _, get_lang, get_system_locale
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from polyglot.builtins import iteritems, itervalues from polyglot.builtins import iteritems, itervalues

View File

@ -5,21 +5,24 @@ __license__ = 'GPL v3'
__copyright__ = '2015, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2015, Kovid Goyal <kovid at kovidgoyal.net>'
from functools import partial from functools import partial
from polyglot.builtins import iteritems, itervalues, string_or_bytes
from itertools import cycle from itertools import cycle
from calibre import force_unicode from calibre import force_unicode
from calibre.library.field_metadata import category_icon_map
from calibre.db.view import sanitize_sort_field_name from calibre.db.view import sanitize_sort_field_name
from calibre.ebooks.metadata import title_sort from calibre.ebooks.metadata import title_sort
from calibre.ebooks.metadata.book.json_codec import JsonCodec from calibre.ebooks.metadata.book.json_codec import JsonCodec
from calibre.srv.errors import HTTPNotFound, BookNotFound from calibre.library.field_metadata import category_icon_map
from calibre.srv.routes import endpoint, json
from calibre.srv.content import get as get_content, icon as get_icon from calibre.srv.content import get as get_content, icon as get_icon
from calibre.srv.utils import http_date, custom_fields_to_display, encode_name, decode_name, get_db from calibre.srv.errors import BookNotFound, HTTPNotFound
from calibre.srv.routes import endpoint, json
from calibre.srv.utils import (
custom_fields_to_display, decode_name, encode_name, get_db, http_date,
)
from calibre.utils.config import prefs, tweaks from calibre.utils.config import prefs, tweaks
from calibre.utils.date import isoformat, timestampfromdt from calibre.utils.date import isoformat, timestampfromdt
from calibre.utils.icu import numeric_sort_key as sort_key from calibre.utils.icu import numeric_sort_key as sort_key
from calibre.utils.localization import _
from polyglot.builtins import iteritems, itervalues, string_or_bytes
def ensure_val(x, *allowed): def ensure_val(x, *allowed):
@ -126,9 +129,10 @@ def book_to_json(ctx, rd, db, book_id,
data['_series_sort_'] = series data['_series_sort_'] = series
if device_for_template: if device_for_template:
import posixpath import posixpath
from calibre.customize.ui import device_plugins
from calibre.devices.utils import create_upload_path from calibre.devices.utils import create_upload_path
from calibre.utils.filenames import ascii_filename as sanitize from calibre.utils.filenames import ascii_filename as sanitize
from calibre.customize.ui import device_plugins
for device_class in device_plugins(): for device_class in device_plugins():
if device_class.__class__.__name__ == device_for_template: if device_class.__class__.__name__ == device_for_template:

View File

@ -21,6 +21,7 @@ from calibre.srv.render_book import RENDER_VERSION
from calibre.srv.routes import endpoint, json from calibre.srv.routes import endpoint, json
from calibre.srv.utils import get_db, get_library_data from calibre.srv.utils import get_db, get_library_data
from calibre.utils.filenames import rmtree from calibre.utils.filenames import rmtree
from calibre.utils.localization import _
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from calibre.utils.serialize import json_dumps from calibre.utils.serialize import json_dumps
from polyglot.builtins import as_unicode, itervalues from polyglot.builtins import as_unicode, itervalues

View File

@ -27,7 +27,7 @@ from calibre.srv.utils import get_library_data, get_use_roman
from calibre.utils.config import prefs, tweaks from calibre.utils.config import prefs, tweaks
from calibre.utils.icu import numeric_sort_key, sort_key from calibre.utils.icu import numeric_sort_key, sort_key
from calibre.utils.localization import ( from calibre.utils.localization import (
get_lang, lang_code_for_user_manual, lang_map_for_ui, localize_website_link, _, get_lang, lang_code_for_user_manual, lang_map_for_ui, localize_website_link,
) )
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from calibre.utils.search_query_parser import ParseException from calibre.utils.search_query_parser import ParseException

View File

@ -28,6 +28,7 @@ from calibre.utils.config_base import tweaks
from calibre.utils.date import timestampfromdt from calibre.utils.date import timestampfromdt
from calibre.utils.filenames import ascii_filename, atomic_rename from calibre.utils.filenames import ascii_filename, atomic_rename
from calibre.utils.img import image_from_data, scale_image from calibre.utils.img import image_from_data, scale_image
from calibre.utils.localization import _
from calibre.utils.resources import get_image_path as I, get_path as P from calibre.utils.resources import get_image_path as I, get_path as P
from calibre.utils.shared_file import share_open from calibre.utils.shared_file import share_open
from polyglot.binary import as_hex_unicode from polyglot.binary import as_hex_unicode

View File

@ -13,6 +13,7 @@ from calibre.srv.changes import formats_added
from calibre.srv.errors import BookNotFound, HTTPNotFound from calibre.srv.errors import BookNotFound, HTTPNotFound
from calibre.srv.routes import endpoint, json from calibre.srv.routes import endpoint, json
from calibre.srv.utils import get_library_data from calibre.srv.utils import get_library_data
from calibre.utils.localization import _
from calibre.utils.monotonic import monotonic from calibre.utils.monotonic import monotonic
from calibre.utils.shared_file import share_open from calibre.utils.shared_file import share_open
from polyglot.builtins import iteritems from polyglot.builtins import iteritems
@ -120,9 +121,9 @@ def convert_book(path_to_ebook, opf_path, cover_path, output_fmt, recs):
def queue_job(ctx, rd, library_id, db, fmt, book_id, conversion_data): def queue_job(ctx, rd, library_id, db, fmt, book_id, conversion_data):
from calibre.ebooks.metadata.opf2 import metadata_to_opf
from calibre.ebooks.conversion.config import GuiRecommendations, save_specifics
from calibre.customize.conversion import OptionRecommendation from calibre.customize.conversion import OptionRecommendation
from calibre.ebooks.conversion.config import GuiRecommendations, save_specifics
from calibre.ebooks.metadata.opf2 import metadata_to_opf
tdir = tempfile.mkdtemp(dir=rd.tdir) tdir = tempfile.mkdtemp(dir=rd.tdir)
with tempfile.NamedTemporaryFile(prefix='', suffix=('.' + fmt.lower()), dir=tdir, delete=False) as src_file: with tempfile.NamedTemporaryFile(prefix='', suffix=('.' + fmt.lower()), dir=tdir, delete=False) as src_file:
db.copy_format_to(book_id, fmt, src_file) db.copy_format_to(book_id, fmt, src_file)
@ -202,10 +203,12 @@ def conversion_status(ctx, rd, job_id):
def get_conversion_options(input_fmt, output_fmt, book_id, db): def get_conversion_options(input_fmt, output_fmt, book_id, db):
from calibre.ebooks.conversion.plumber import create_dummy_plumber
from calibre.ebooks.conversion.config import (
load_specifics, load_defaults, OPTIONS, options_for_input_fmt, options_for_output_fmt)
from calibre.customize.conversion import OptionRecommendation from calibre.customize.conversion import OptionRecommendation
from calibre.ebooks.conversion.config import (
OPTIONS, load_defaults, load_specifics, options_for_input_fmt,
options_for_output_fmt,
)
from calibre.ebooks.conversion.plumber import create_dummy_plumber
plumber = create_dummy_plumber(input_fmt, output_fmt) plumber = create_dummy_plumber(input_fmt, output_fmt)
specifics = load_specifics(db, book_id) specifics = load_specifics(db, book_id)
ans = {'options': {}, 'disabled': set(), 'defaults': {}, 'help': {}} ans = {'options': {}, 'disabled': set(), 'defaults': {}, 'help': {}}
@ -265,7 +268,8 @@ def profiles():
@endpoint('/conversion/book-data/{book_id}', postprocess=json, types={'book_id': int}) @endpoint('/conversion/book-data/{book_id}', postprocess=json, types={'book_id': int})
def conversion_data(ctx, rd, book_id): def conversion_data(ctx, rd, book_id):
from calibre.ebooks.conversion.config import ( from calibre.ebooks.conversion.config import (
NoSupportedInputFormats, get_input_format_for_book, get_sorted_output_formats) NoSupportedInputFormats, get_input_format_for_book, get_sorted_output_formats,
)
db = get_library_data(ctx, rd)[0] db = get_library_data(ctx, rd)[0]
if not ctx.has_id(rd, db, book_id): if not ctx.has_id(rd, db, book_id):
raise BookNotFound(book_id, db) raise BookNotFound(book_id, db)

View File

@ -3,7 +3,6 @@
from functools import partial from functools import partial
from lxml.html import tostring from lxml.html import tostring
from lxml.html.builder import E as E_ from lxml.html.builder import E as E_
@ -17,7 +16,8 @@ from calibre.srv.routes import endpoint
from calibre.srv.utils import get_library_data, http_date from calibre.srv.utils import get_library_data, http_date
from calibre.utils.cleantext import clean_xml_chars from calibre.utils.cleantext import clean_xml_chars
from calibre.utils.date import dt_as_local, is_date_undefined, timestampfromdt from calibre.utils.date import dt_as_local, is_date_undefined, timestampfromdt
from polyglot.builtins import iteritems, string_or_bytes, as_bytes from calibre.utils.localization import _
from polyglot.builtins import as_bytes, iteritems, string_or_bytes
from polyglot.urllib import urlencode from polyglot.urllib import urlencode
# /mobile {{{ # /mobile {{{

View File

@ -11,7 +11,7 @@ import socket
import ssl import ssl
import traceback import traceback
from contextlib import suppress from contextlib import suppress
from functools import partial, lru_cache from functools import lru_cache, partial
from io import BytesIO from io import BytesIO
from calibre import as_unicode from calibre import as_unicode
@ -23,8 +23,9 @@ from calibre.srv.opts import Options
from calibre.srv.pool import PluginPool, ThreadPool from calibre.srv.pool import PluginPool, ThreadPool
from calibre.srv.utils import ( from calibre.srv.utils import (
DESIRED_SEND_BUFFER_SIZE, HandleInterrupt, create_sock_pair, socket_errors_eintr, DESIRED_SEND_BUFFER_SIZE, HandleInterrupt, create_sock_pair, socket_errors_eintr,
socket_errors_nonblocking, socket_errors_socket_closed, start_cork, stop_cork socket_errors_nonblocking, socket_errors_socket_closed, start_cork, stop_cork,
) )
from calibre.utils.localization import _
from calibre.utils.logging import ThreadSafeLog from calibre.utils.logging import ThreadSafeLog
from calibre.utils.mdns import get_external_ip from calibre.utils.mdns import get_external_ip
from calibre.utils.monotonic import monotonic from calibre.utils.monotonic import monotonic

View File

@ -7,7 +7,7 @@ from functools import partial
from calibre import prints from calibre import prints
from calibre.constants import iswindows, preferred_encoding from calibre.constants import iswindows, preferred_encoding
from calibre.utils.config import OptionParser from calibre.utils.config import OptionParser
from calibre.utils.localization import ngettext from calibre.utils.localization import _, ngettext
from polyglot.builtins import iteritems from polyglot.builtins import iteritems

View File

@ -19,7 +19,7 @@ from calibre.utils.date import UNDEFINED_DATE, isoformat, local_tz
from calibre.utils.file_type_icons import EXT_MAP from calibre.utils.file_type_icons import EXT_MAP
from calibre.utils.formatter import EvalFormatter from calibre.utils.formatter import EvalFormatter
from calibre.utils.icu import collation_order_for_partitioning, upper as icu_upper from calibre.utils.icu import collation_order_for_partitioning, upper as icu_upper
from calibre.utils.localization import calibre_langcode_to_name from calibre.utils.localization import _, calibre_langcode_to_name
from polyglot.builtins import iteritems, itervalues from polyglot.builtins import iteritems, itervalues
from polyglot.urllib import quote from polyglot.urllib import quote

View File

@ -24,7 +24,7 @@ from calibre.srv.utils import Offsets, get_library_data, http_date
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre.utils.date import as_utc, is_date_undefined, timestampfromdt from calibre.utils.date import as_utc, is_date_undefined, timestampfromdt
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.utils.localization import ngettext from calibre.utils.localization import _, ngettext
from calibre.utils.search_query_parser import ParseException from calibre.utils.search_query_parser import ParseException
from calibre.utils.xml_parse import safe_xml_fromstring from calibre.utils.xml_parse import safe_xml_fromstring
from polyglot.binary import as_hex_unicode, from_hex_unicode from polyglot.binary import as_hex_unicode, from_hex_unicode

View File

@ -21,10 +21,10 @@ from calibre.srv.opts import opts_to_parser
from calibre.srv.users import connect from calibre.srv.users import connect
from calibre.srv.utils import HandleInterrupt, RotatingLog from calibre.srv.utils import HandleInterrupt, RotatingLog
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import _, localize_user_manual_link
from calibre.utils.lock import singleinstance from calibre.utils.lock import singleinstance
from polyglot.builtins import error_message
from calibre_extensions import speedup from calibre_extensions import speedup
from polyglot.builtins import error_message
def daemonize(): # {{{ def daemonize(): # {{{

View File

@ -12,6 +12,7 @@ from io import BytesIO
from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.meta import get_metadata
from calibre.srv.tests.base import LibraryBaseTest from calibre.srv.tests.base import LibraryBaseTest
from calibre.utils.localization import _
from polyglot.binary import as_base64_bytes from polyglot.binary import as_base64_bytes
from polyglot.http_client import FORBIDDEN, NOT_FOUND, OK from polyglot.http_client import FORBIDDEN, NOT_FOUND, OK
from polyglot.urllib import quote, urlencode from polyglot.urllib import quote, urlencode

View File

@ -12,6 +12,7 @@ from threading import RLock
from calibre import as_unicode from calibre import as_unicode
from calibre.constants import config_dir from calibre.constants import config_dir
from calibre.utils.config import from_json, to_json from calibre.utils.config import from_json, to_json
from calibre.utils.localization import _
from polyglot.builtins import iteritems from polyglot.builtins import iteritems

View File

@ -8,6 +8,7 @@ from calibre import as_unicode
from calibre.srv.errors import HTTPBadRequest, HTTPForbidden from calibre.srv.errors import HTTPBadRequest, HTTPForbidden
from calibre.srv.routes import endpoint from calibre.srv.routes import endpoint
from calibre.srv.users import validate_password from calibre.srv.users import validate_password
from calibre.utils.localization import _
@endpoint('/users/change-pw', methods={'POST'}) @endpoint('/users/change-pw', methods={'POST'})

View File

@ -11,13 +11,14 @@ import os
from copy import deepcopy from copy import deepcopy
from calibre.constants import ( from calibre.constants import (
CONFIG_DIR_MODE, __appname__, __author__, config_dir, get_version, iswindows CONFIG_DIR_MODE, __appname__, __author__, config_dir, get_version, iswindows,
) )
from calibre.utils.config_base import ( from calibre.utils.config_base import (
Config, ConfigInterface, ConfigProxy, Option, OptionSet, OptionValues, Config, ConfigInterface, ConfigProxy, Option, OptionSet, OptionValues, StringConfig,
StringConfig, commit_data, from_json, json_dumps, json_loads, make_config_dir, commit_data, from_json, json_dumps, json_loads, make_config_dir, plugin_dir, prefs,
plugin_dir, prefs, read_data, to_json, tweaks read_data, to_json, tweaks,
) )
from calibre.utils.localization import _
from polyglot.builtins import native_string_type, string_or_bytes from polyglot.builtins import native_string_type, string_or_bytes
# optparse uses gettext.gettext instead of _ from builtins, so we # optparse uses gettext.gettext instead of _ from builtins, so we

View File

@ -17,6 +17,7 @@ from calibre.constants import (
CONFIG_DIR_MODE, config_dir, filesystem_encoding, get_umask, iswindows, CONFIG_DIR_MODE, config_dir, filesystem_encoding, get_umask, iswindows,
preferred_encoding, preferred_encoding,
) )
from calibre.utils.localization import _
from calibre.utils.resources import get_path as P from calibre.utils.resources import get_path as P
from polyglot.builtins import iteritems from polyglot.builtins import iteritems

View File

@ -2,20 +2,30 @@
# License: GPLv3 Copyright: 2015, Kovid Goyal <kovid at kovidgoyal.net> # License: GPLv3 Copyright: 2015, Kovid Goyal <kovid at kovidgoyal.net>
import os, json, struct, hashlib, sys, errno, tempfile, time, shutil, uuid import errno
import hashlib
import json
import os
import shutil
import struct
import sys
import tempfile
import time
import uuid
from collections import Counter from collections import Counter
from calibre import prints from calibre import prints
from calibre.constants import config_dir, iswindows, filesystem_encoding from calibre.constants import config_dir, filesystem_encoding, iswindows
from calibre.utils.config_base import prefs, StringConfig, create_global_prefs
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.config_base import StringConfig, create_global_prefs, prefs
from calibre.utils.filenames import samefile from calibre.utils.filenames import samefile
from polyglot.builtins import iteritems, error_message from calibre.utils.localization import _
from polyglot.binary import as_hex_unicode from polyglot.binary import as_hex_unicode
from polyglot.builtins import error_message, iteritems
# Export {{{ # Export {{{
def send_file(from_obj, to_obj, chunksize=1<<20): def send_file(from_obj, to_obj, chunksize=1<<20):
m = hashlib.sha1() m = hashlib.sha1()
while True: while True:
@ -169,8 +179,8 @@ def all_known_libraries():
def export(destdir, library_paths=None, dbmap=None, progress1=None, progress2=None, abort=None): def export(destdir, library_paths=None, dbmap=None, progress1=None, progress2=None, abort=None):
from calibre.db.cache import Cache
from calibre.db.backend import DB from calibre.db.backend import DB
from calibre.db.cache import Cache
if library_paths is None: if library_paths is None:
library_paths = all_known_libraries() library_paths = all_known_libraries()
dbmap = dbmap or {} dbmap = dbmap or {}

View File

@ -7,14 +7,14 @@ import errno
import os import os
import shutil import shutil
import time import time
from contextlib import closing, suppress
from math import ceil from math import ceil
from contextlib import suppress, closing
from calibre import force_unicode, isbytestring, prints, sanitize_file_name from calibre import force_unicode, isbytestring, prints, sanitize_file_name
from calibre.constants import ( from calibre.constants import (
filesystem_encoding, iswindows, preferred_encoding, ismacos filesystem_encoding, ismacos, iswindows, preferred_encoding,
) )
from calibre.utils.localization import get_udc from calibre.utils.localization import _, get_udc
from polyglot.builtins import iteritems, itervalues from polyglot.builtins import iteritems, itervalues
@ -331,6 +331,7 @@ class WindowsAtomicFolderMove:
def __init__(self, path): def __init__(self, path):
from collections import defaultdict from collections import defaultdict
from calibre_extensions import winutil from calibre_extensions import winutil
self.handle_map = {} self.handle_map = {}

View File

@ -2,6 +2,9 @@
# License: GPLv3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net> # License: GPLv3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net>
from calibre.utils.localization import _
def html2text(html, single_line_break=True): def html2text(html, single_line_break=True):
from html2text import HTML2Text from html2text import HTML2Text
import re import re

View File

@ -6,14 +6,15 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import time, io import io
import time
from itertools import count from itertools import count
from calibre import prints from calibre import prints
from calibre.constants import DEBUG from calibre.constants import DEBUG
from polyglot.queue import Queue, Empty from calibre.utils.localization import _
from polyglot.builtins import cmp from polyglot.builtins import cmp
from polyglot.queue import Empty, Queue
job_counter = count() job_counter = count()