From be75583546d9a941e99f84d1f8221403ab02b7c9 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Fri, 27 Dec 2013 23:56:25 +0100 Subject: [PATCH 01/15] Remove unused imports --- picard/acoustid.py | 2 +- picard/cluster.py | 3 +-- picard/config.py | 2 +- picard/const.py | 1 - picard/coverart.py | 3 +-- picard/file.py | 2 -- picard/formats/mutagenext/compatid3.py | 2 +- picard/releasegroup.py | 3 +-- picard/tagger.py | 2 -- picard/ui/infostatus.py | 1 - picard/ui/mainwindow.py | 1 - picard/ui/options/dialog.py | 1 - picard/ui/options/fingerprinting.py | 2 +- picard/ui/options/metadata.py | 1 - picard/ui/passworddialog.py | 2 +- picard/util/thread.py | 2 +- 16 files changed, 9 insertions(+), 21 deletions(-) diff --git a/picard/acoustid.py b/picard/acoustid.py index 2d7b526f1..c50c7e532 100644 --- a/picard/acoustid.py +++ b/picard/acoustid.py @@ -21,7 +21,7 @@ from collections import deque from functools import partial from PyQt4 import QtCore from picard import config, log -from picard.const import ACOUSTID_KEY, FPCALC_NAMES +from picard.const import FPCALC_NAMES from picard.util import find_executable from picard.webservice import XmlNode diff --git a/picard/cluster.py b/picard/cluster.py index c14e47818..0977b6672 100644 --- a/picard/cluster.py +++ b/picard/cluster.py @@ -24,10 +24,9 @@ from heapq import heappush, heappop from PyQt4 import QtCore from picard import config from picard.metadata import Metadata -from picard.similarity import similarity2, similarity +from picard.similarity import similarity from picard.ui.item import Item from picard.util import format_time -from picard.mbxml import artist_credit_from_node class Cluster(QtCore.QObject, Item): diff --git a/picard/config.py b/picard/config.py index 5a4f8c176..983091980 100644 --- a/picard/config.py +++ b/picard/config.py @@ -20,7 +20,7 @@ from operator import itemgetter from PyQt4 import QtCore from picard import (PICARD_APP_NAME, PICARD_ORG_NAME, PICARD_VERSION, - version_to_string, version_from_string, log) + version_to_string, version_from_string) from picard.util import LockableObject, rot13 diff --git a/picard/const.py b/picard/const.py index 31152db57..68af4f98b 100644 --- a/picard/const.py +++ b/picard/const.py @@ -19,7 +19,6 @@ import os import sys -import re # Install gettext "noop" function in case const.py gets imported directly. import __builtin__ diff --git a/picard/coverart.py b/picard/coverart.py index df5cac28d..a71264f0f 100644 --- a/picard/coverart.py +++ b/picard/coverart.py @@ -24,10 +24,9 @@ import json import re import traceback -import picard.webservice from functools import partial from picard import config, log -from picard.metadata import Metadata, is_front_image +from picard.metadata import is_front_image from picard.util import mimetype, parse_amazon_url from picard.const import CAA_HOST, CAA_PORT from PyQt4.QtCore import QUrl, QObject diff --git a/picard/file.py b/picard/file.py index 3536ddce6..a9c7f8cf3 100644 --- a/picard/file.py +++ b/picard/file.py @@ -29,11 +29,9 @@ from operator import itemgetter from collections import defaultdict from PyQt4 import QtCore from picard import config, log -from picard.track import Track from picard.metadata import Metadata from picard.ui.item import Item from picard.script import ScriptParser -from picard.similarity import similarity2 from picard.util import ( decode_filename, encode_filename, diff --git a/picard/formats/mutagenext/compatid3.py b/picard/formats/mutagenext/compatid3.py index aa3612645..a3098c5eb 100644 --- a/picard/formats/mutagenext/compatid3.py +++ b/picard/formats/mutagenext/compatid3.py @@ -22,7 +22,7 @@ import struct from struct import pack, unpack import mutagen from mutagen._util import insert_bytes -from mutagen.id3 import ID3, Frame, Frames, Frames_2_2, TextFrame, TORY, \ +from mutagen.id3 import ID3, Frames, Frames_2_2, TextFrame, TORY, \ TYER, TIME, APIC, IPLS, TDAT, BitPaddedInt, MakeID3v1 diff --git a/picard/releasegroup.py b/picard/releasegroup.py index 70d4bc031..274ecba28 100644 --- a/picard/releasegroup.py +++ b/picard/releasegroup.py @@ -21,8 +21,7 @@ import traceback from collections import defaultdict from functools import partial from itertools import combinations -from PyQt4 import QtCore -from picard import config, log +from picard import log from picard.metadata import Metadata from picard.dataobj import DataObject from picard.mbxml import media_formats_from_node, label_info_from_node diff --git a/picard/tagger.py b/picard/tagger.py index b2d2208af..f5904fa51 100644 --- a/picard/tagger.py +++ b/picard/tagger.py @@ -26,7 +26,6 @@ import re import shutil import signal import sys -from collections import deque from functools import partial from itertools import chain @@ -61,7 +60,6 @@ from picard.track import Track, NonAlbumTrack from picard.releasegroup import ReleaseGroup from picard.collection import load_user_collections from picard.ui.mainwindow import MainWindow -from picard.ui.itemviews import BaseTreeView from picard.plugin import PluginManager from picard.acoustidmanager import AcoustIDManager from picard.util import ( diff --git a/picard/ui/infostatus.py b/picard/ui/infostatus.py index 769a5b9db..bfb1c8dce 100644 --- a/picard/ui/infostatus.py +++ b/picard/ui/infostatus.py @@ -18,7 +18,6 @@ from PyQt4 import QtCore, QtGui from PyQt4.QtGui import QIcon -from picard import config from picard.util import icontheme from picard.ui.ui_infostatus import Ui_InfoStatus diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index 6d4ad1c2d..3e27eafc7 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -22,7 +22,6 @@ from PyQt4 import QtCore, QtGui import sys import os.path -from functools import partial from picard import config, log from picard.file import File from picard.track import Track diff --git a/picard/ui/options/dialog.py b/picard/ui/options/dialog.py index 6a27b107b..9c49cfeb7 100644 --- a/picard/ui/options/dialog.py +++ b/picard/ui/options/dialog.py @@ -19,7 +19,6 @@ from PyQt4 import QtCore, QtGui from picard import config -from picard.plugin import ExtensionPoint from picard.util import webbrowser2 from picard.ui.util import StandardButton from picard.ui.options import ( diff --git a/picard/ui/options/fingerprinting.py b/picard/ui/options/fingerprinting.py index 52f0bc355..3a3e434ce 100644 --- a/picard/ui/options/fingerprinting.py +++ b/picard/ui/options/fingerprinting.py @@ -18,7 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import os -from PyQt4 import QtCore, QtGui +from PyQt4 import QtGui from picard import config from picard.util import webbrowser2, find_executable from picard.const import FPCALC_NAMES diff --git a/picard/ui/options/metadata.py b/picard/ui/options/metadata.py index 6ee2eba21..410535844 100644 --- a/picard/ui/options/metadata.py +++ b/picard/ui/options/metadata.py @@ -17,7 +17,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -from PyQt4 import QtCore from picard import config from picard.ui.options import OptionsPage, register_options_page from picard.ui.ui_options_metadata import Ui_MetadataOptionsPage diff --git a/picard/ui/passworddialog.py b/picard/ui/passworddialog.py index 804e7e062..32335f519 100644 --- a/picard/ui/passworddialog.py +++ b/picard/ui/passworddialog.py @@ -17,7 +17,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -from PyQt4 import QtCore, QtGui +from PyQt4 import QtGui from picard import config from picard.ui.ui_passworddialog import Ui_PasswordDialog from picard.util import rot13 diff --git a/picard/util/thread.py b/picard/util/thread.py index 8c9b36fbf..095f8bbab 100644 --- a/picard/util/thread.py +++ b/picard/util/thread.py @@ -19,7 +19,7 @@ import sys import traceback -from PyQt4.QtCore import QThreadPool, QRunnable, QCoreApplication, QEvent +from PyQt4.QtCore import QRunnable, QCoreApplication, QEvent class ProxyToMainEvent(QEvent): From 1b84102265937425c5a9476f1092d8b14de3a9cc Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Fri, 27 Dec 2013 23:15:22 +0100 Subject: [PATCH 02/15] Remove unused code --- picard/util/bytes2human.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/picard/util/bytes2human.py b/picard/util/bytes2human.py index bfc7ceca7..34dc33459 100644 --- a/picard/util/bytes2human.py +++ b/picard/util/bytes2human.py @@ -18,8 +18,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import locale -import picard.i18n - """ Helper class to convert bytes to human-readable form @@ -118,8 +116,3 @@ def calc_unit(number, multiple=1000): return (sign * n, suffix) else: n /= multiple - - -if __name__ == "__main__": - import doctest - doctest.testmod() From 7c6d3e9c3bfee7caf51c83e6acb28465ac0fc94f Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Fri, 27 Dec 2013 23:16:31 +0100 Subject: [PATCH 03/15] decimal(): fix missing parameter `prec` and update tests --- picard/util/bytes2human.py | 2 +- test/test_bytes2human.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/picard/util/bytes2human.py b/picard/util/bytes2human.py index 34dc33459..9b31c23b3 100644 --- a/picard/util/bytes2human.py +++ b/picard/util/bytes2human.py @@ -51,7 +51,7 @@ def decimal(number, prec=1): >>> [decimal(n) for n in [1000, 1024, 15500]] ['1 kB', '1 kB', '15.5 kB'] """ - return short_string(int(number), 1000) + return short_string(int(number), 1000, prec) def binary(number, prec=1): diff --git a/test/test_bytes2human.py b/test/test_bytes2human.py index 7a37737c2..9f8d53305 100644 --- a/test/test_bytes2human.py +++ b/test/test_bytes2human.py @@ -30,8 +30,11 @@ class Testbytes2human(unittest.TestCase): self.assertEqual(bytes2human.binary(45682), '44.6 KiB') self.assertEqual(bytes2human.binary(-45682), '-44.6 KiB') + self.assertEqual(bytes2human.binary(-45682, 2), '-44.61 KiB') self.assertEqual(bytes2human.decimal(45682), '45.7 kB') + self.assertEqual(bytes2human.decimal(45682, 2), '45.68 kB') self.assertEqual(bytes2human.decimal(9223372036854775807), '9223.4 PB') + self.assertEqual(bytes2human.decimal(9223372036854775807, 3), '9223.372 PB') self.assertEqual(bytes2human.decimal(123.6), '123 B') self.assertRaises(ValueError, bytes2human.decimal, 'xxx') self.assertRaises(ValueError, bytes2human.decimal, '123.6') From 5a02f9d719c1a0588d5eff675371265682782e29 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 02:16:05 +0100 Subject: [PATCH 04/15] `prec` -> `scale` --- picard/util/bytes2human.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/picard/util/bytes2human.py b/picard/util/bytes2human.py index 9b31c23b3..ea8fb4eb2 100644 --- a/picard/util/bytes2human.py +++ b/picard/util/bytes2human.py @@ -44,26 +44,26 @@ _BYTES_STRINGS_I18N = ( ) -def decimal(number, prec=1): +def decimal(number, scale=1): """ Convert bytes to short human-readable string, decimal mode >>> [decimal(n) for n in [1000, 1024, 15500]] ['1 kB', '1 kB', '15.5 kB'] """ - return short_string(int(number), 1000, prec) + return short_string(int(number), 1000, scale) -def binary(number, prec=1): +def binary(number, scale=1): """ Convert bytes to short human-readable string, binary mode >>> [binary(n) for n in [1000, 1024, 15500]] ['1000 B', '1 KiB', '15.1 KiB'] """ - return short_string(int(number), 1024, prec) + return short_string(int(number), 1024, scale) -def short_string(number, multiple, prec=1): +def short_string(number, multiple, scale=1): """ Returns short human-readable string for `number` bytes >>> [short_string(n, 1024, 2) for n in [1000, 1100, 15500]] @@ -73,12 +73,12 @@ def short_string(number, multiple, prec=1): """ num, unit = calc_unit(number, multiple) n = int(num) - nr = round(num, prec) + nr = round(num, scale) if n == nr or unit == 'B': fmt = '%d' num = n else: - fmt = '%%0.%df' % prec + fmt = '%%0.%df' % scale num = nr fmtnum = locale.format(fmt, num) return _("%s " + unit) % fmtnum From ff0de4e38250487939789c538738f81ab3ec4778 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 10:52:34 +0100 Subject: [PATCH 05/15] ClusterEngine.cluster(): remove unused return value --- picard/cluster.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/picard/cluster.py b/picard/cluster.py index c14e47818..9ce6afac7 100644 --- a/picard/cluster.py +++ b/picard/cluster.py @@ -190,10 +190,10 @@ class Cluster(QtCore.QObject, Item): albumDict.add(album))) artist_cluster_engine = ClusterEngine(artistDict) - artist_cluster = artist_cluster_engine.cluster(threshold) + artist_cluster_engine.cluster(threshold) album_cluster_engine = ClusterEngine(albumDict) - album_cluster = album_cluster_engine.cluster(threshold) + album_cluster_engine.cluster(threshold) # Arrange tracks into albums albums = {} @@ -459,7 +459,5 @@ class ClusterEngine(object): self.idClusterIndex[match] = match0 del self.clusterBins[match1] - return self.clusterBins - def can_refresh(self): return False From 4b0239fc0c0e626a179fd93952538af9d074e36f Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 11:56:34 +0100 Subject: [PATCH 06/15] get_cdrom_drives(): code cleanup --- picard/util/cdrom.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/picard/util/cdrom.py b/picard/util/cdrom.py index 64ae157d3..4b0cef41b 100644 --- a/picard/util/cdrom.py +++ b/picard/util/cdrom.py @@ -79,10 +79,11 @@ elif sys.platform == 'linux2' and QFile.exists(LINUX_CDROM_INFO): elif key == 'Can play audio': drive_audio_caps = [v == '1' for v in QString(values).trimmed().split(QRegExp("\\s+"), QString.SkipEmptyParts)] + break # no need to continue passed this line line = cdinfo.readLine() # Show only drives that are capable of playing audio - for drive in drive_names: - if drive_audio_caps[drive_names.indexOf(drive)]: + for index, drive in enumerate(drive_names): + if drive_audio_caps[index]: device = u'/dev/%s' % drive symlink_target = QFile.symLinkTarget(device) if symlink_target != '': From e4852cf0d4d5bf73ed99d0d6cc2d57f7c8039f4e Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:02:06 +0100 Subject: [PATCH 07/15] File._load(): makes proto matches subclass definitions, add filename parameter --- picard/file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/file.py b/picard/file.py index 3536ddce6..620bcfa59 100644 --- a/picard/file.py +++ b/picard/file.py @@ -144,7 +144,7 @@ class File(QtCore.QObject, Item): def has_error(self): return self.state == File.ERROR - def _load(self): + def _load(self, filename): """Load metadata from the file.""" raise NotImplementedError From 17bb6df137dcef73cdaaaf834ddbb4eee4a9b82d Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:36:41 +0100 Subject: [PATCH 08/15] Indentation fix --- picard/file.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/picard/file.py b/picard/file.py index 620bcfa59..041bc7621 100644 --- a/picard/file.py +++ b/picard/file.py @@ -359,8 +359,8 @@ class File(QtCore.QObject, Item): # image multiple times if (os.path.exists(new_filename) and os.path.getsize(new_filename) == len(data)): - log.debug("Identical file size, not saving %r", image_filename) - continue + log.debug("Identical file size, not saving %r", image_filename) + continue log.debug("Saving cover images to %r", image_filename) new_dirname = os.path.dirname(image_filename) if not os.path.isdir(new_dirname): From cac1e3dd895858535872a288391db4bf78ea7d24 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:37:07 +0100 Subject: [PATCH 09/15] Unused variable `e` removed --- picard/log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/log.py b/picard/log.py index d4faef298..1f4317f37 100644 --- a/picard/log.py +++ b/picard/log.py @@ -62,7 +62,7 @@ class Logger(object): for func in self._receivers: try: thread.to_main(func, level, time, message) - except Exception as e: + except: import traceback traceback.print_exc() From b84380fd70ecc7a299509a7eaf1fb2fe396aa416 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:37:59 +0100 Subject: [PATCH 10/15] Rewrite loop as expression value is unused --- picard/ui/cdlookup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/picard/ui/cdlookup.py b/picard/ui/cdlookup.py index cc5bd4810..cd9355590 100644 --- a/picard/ui/cdlookup.py +++ b/picard/ui/cdlookup.py @@ -50,7 +50,8 @@ class CDLookupDialog(QtGui.QDialog): item.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(release.id)) self.ui.release_list.setCurrentItem(self.ui.release_list.topLevelItem(0)) self.ui.ok_button.setEnabled(True) - [self.ui.release_list.resizeColumnToContents(i) for i in range(self.ui.release_list.columnCount() - 1)] + for i in range(self.ui.release_list.columnCount() - 1): + self.ui.release_list.resizeColumnToContents(i) # Sort by descending date, then ascending country self.ui.release_list.sortByColumn(3, QtCore.Qt.AscendingOrder) self.ui.release_list.sortByColumn(2, QtCore.Qt.DescendingOrder) From 60b6cbddab7725ba4cdbf4bfaf6977d9ac2c1141 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:38:28 +0100 Subject: [PATCH 11/15] Rewrite test as expression value is unused --- picard/ui/itemviews.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index 1a6d759d7..9b5d52ec8 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -308,7 +308,9 @@ class BaseTreeView(QtGui.QTreeWidget): action.setChecked(True) action.triggered.connect(partial(obj.switch_release_version, version["id"])) - _add_other_versions() if obj.release_group.loaded else \ + if obj.release_group.loaded: + _add_other_versions() + else: obj.release_group.load_versions(_add_other_versions) releases_menu.setEnabled(True) else: From 88ae83de7891fc4349ff599a295e76b1809a1b23 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 12:38:34 +0100 Subject: [PATCH 12/15] Rewrite loop as expression value is unused --- picard/ui/metadatabox.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/picard/ui/metadatabox.py b/picard/ui/metadatabox.py index bec999ff0..94b7d08ba 100644 --- a/picard/ui/metadatabox.py +++ b/picard/ui/metadatabox.py @@ -290,7 +290,9 @@ class MetadataBox(QtGui.QTableWidget): self.set_tag_values(tag, [""]) def remove_selected_tags(self): - (self.remove_tag(tag) for tag in self.selected_tags() if self.tag_is_removable(tag)) + for tag in self.selected_tags(): + if self.tag_is_removable(tag): + self.remove_tag(tag) def tag_is_removable(self, tag): return self.tag_diff.status[tag] & TagStatus.NotRemovable == 0 From aed7091c3a762e867d00a2f04e5164143189cb6c Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 13:22:49 +0100 Subject: [PATCH 13/15] Add missing header --- picard/i18n.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/picard/i18n.py b/picard/i18n.py index 8520ee252..03b61850e 100644 --- a/picard/i18n.py +++ b/picard/i18n.py @@ -1,3 +1,22 @@ +# -*- coding: utf-8 -*- +# +# Picard, the next-generation MusicBrainz tagger +# Copyright (C) 2013 Laurent Monin +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + import gettext import locale import os.path From 220710b046039b24cdf553bb287f4eb55bd35a0b Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sat, 28 Dec 2013 13:23:47 +0100 Subject: [PATCH 14/15] coding: UTF-8 -> coding: utf-8, as all other files --- picard/ui/filebrowser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/ui/filebrowser.py b/picard/ui/filebrowser.py index c469aaa67..310a2f567 100644 --- a/picard/ui/filebrowser.py +++ b/picard/ui/filebrowser.py @@ -1,4 +1,4 @@ -# -*- coding: UTF-8 -*- +# -*- coding: utf-8 -*- # # Picard, the next-generation MusicBrainz tagger # Copyright (C) 2006-2007 Lukáš Lalinský From f79f981ac4d862e6897f73d8dfcda6920b235312 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Sun, 29 Dec 2013 01:27:27 +0100 Subject: [PATCH 15/15] Fix encoding of limit parameter value in webservice query (limit=%19) This is a very old bug it seems, it was indirectly introduced by commit 9092a7abcae5254e581497b346b2167a5e37cb26 The missing str() was causing integer value 25 to be encoded as ascii char 25, then, after percent encoding, limit=%19 in the search url. --- picard/webservice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/webservice.py b/picard/webservice.py index d9b17b8b8..721d34617 100644 --- a/picard/webservice.py +++ b/picard/webservice.py @@ -392,7 +392,7 @@ class XmlWebService(QtCore.QObject): query = [] for name, value in kwargs.items(): if name == 'limit': - filters.append((name, value)) + filters.append((name, str(value))) else: value = _escape_lucene_query(value).strip().lower() if value: