diff --git a/.isort.cfg b/.isort.cfg index 3fa2b751d..7f85c9269 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -24,3 +24,4 @@ skip_glob=**/picard/ui/ui_*.py skip=./tagger.py,picard/const/attributes.py,picard/const/countries.py,picard/resources.py,scripts/picard.in,picard/const/__init__.py,picard/formats/__init__.py,picard/coverart/providers/__init__.py not_skip=__init__.py use_parentheses=1 +lines_after_imports=2 diff --git a/picard/__init__.py b/picard/__init__.py index d52183baa..ac5bcdd9e 100644 --- a/picard/__init__.py +++ b/picard/__init__.py @@ -19,6 +19,7 @@ import re + PICARD_ORG_NAME = "MusicBrainz" PICARD_APP_NAME = "Picard" PICARD_VERSION = (2, 2, 0, 'dev', 1) diff --git a/picard/collection.py b/picard/collection.py index 058c39322..75eb4afb4 100644 --- a/picard/collection.py +++ b/picard/collection.py @@ -26,6 +26,7 @@ from picard import ( log, ) + user_collections = {} diff --git a/picard/config_upgrade.py b/picard/config_upgrade.py index 1a3c3cc7c..64bfc82a5 100644 --- a/picard/config_upgrade.py +++ b/picard/config_upgrade.py @@ -33,6 +33,7 @@ from picard.const import ( DEFAULT_NUMBERED_SCRIPT_NAME, ) + # TO ADD AN UPGRADE HOOK: # ---------------------- # add a function here, named after the version you want upgrade to diff --git a/picard/const/sys.py b/picard/const/sys.py index e92046eeb..baa80732f 100644 --- a/picard/const/sys.py +++ b/picard/const/sys.py @@ -19,6 +19,7 @@ import sys + IS_WIN = sys.platform == 'win32' IS_LINUX = sys.platform == 'linux' IS_MACOS = sys.platform == 'darwin' diff --git a/picard/coverart/image.py b/picard/coverart/image.py index 9e427abdd..c1e3e2ff1 100644 --- a/picard/coverart/image.py +++ b/picard/coverart/image.py @@ -45,6 +45,7 @@ from picard.util import ( ) from picard.util.scripttofilename import script_to_filename + _datafiles = dict() _datafile_mutex = QMutex(QMutex.Recursive) diff --git a/picard/coverart/providers/caa.py b/picard/coverart/providers/caa.py index 2229af224..9e567b08d 100644 --- a/picard/coverart/providers/caa.py +++ b/picard/coverart/providers/caa.py @@ -59,6 +59,7 @@ from picard.util import webbrowser2 from picard.ui.ui_provider_options_caa import Ui_CaaOptions from picard.ui.util import StandardButton + CaaSizeItem = namedtuple('CaaSizeItem', ['thumbnail', 'label']) _CAA_THUMBNAIL_SIZE_MAP = OrderedDict([ diff --git a/picard/coverart/utils.py b/picard/coverart/utils.py index 72b52805f..3fde017fc 100644 --- a/picard/coverart/utils.py +++ b/picard/coverart/utils.py @@ -20,6 +20,7 @@ from picard.const import MB_ATTRIBUTES from picard.i18n import gettext_attr + # list of types from http://musicbrainz.org/doc/Cover_Art/Types # order of declaration is preserved in selection box CAA_TYPES = [] diff --git a/picard/formats/apev2.py b/picard/formats/apev2.py index 3375e3e87..5c8db4c17 100644 --- a/picard/formats/apev2.py +++ b/picard/formats/apev2.py @@ -45,6 +45,7 @@ from picard.util import ( from .mutagenext import tak + INVALID_CHARS = re.compile('[^\x20-\x7e]') BLACKLISTED_KEYS = ['ID3', 'TAG', 'OggS', 'MP+'] UNSUPPORTED_TAGS = [ diff --git a/picard/formats/id3.py b/picard/formats/id3.py index fa9d77b9a..8709b4bf6 100644 --- a/picard/formats/id3.py +++ b/picard/formats/id3.py @@ -44,6 +44,7 @@ from picard.util import ( sanitize_date, ) + id3.GRP1 = compatid3.GRP1 id3.TCMP = compatid3.TCMP id3.TSO2 = compatid3.TSO2 diff --git a/picard/formats/mutagenext/compatid3.py b/picard/formats/mutagenext/compatid3.py index a1e5118d3..b788328c1 100644 --- a/picard/formats/mutagenext/compatid3.py +++ b/picard/formats/mutagenext/compatid3.py @@ -25,6 +25,7 @@ from mutagen.id3 import ( TextFrame, ) + try: from mutagen.id3 import GRP1 except ImportError: diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index d4c1bcf81..be37ee9ac 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -48,6 +48,7 @@ from picard.util import ( sanitize_date, ) + INVALID_CHARS = re.compile('([^\x20-\x7d]|=)') diff --git a/picard/i18n.py b/picard/i18n.py index c2a6ff890..bbd37e073 100644 --- a/picard/i18n.py +++ b/picard/i18n.py @@ -29,6 +29,7 @@ from picard.const.sys import ( IS_WIN, ) + builtins.__dict__['N_'] = lambda a: a diff --git a/picard/log.py b/picard/log.py index 5e5b6c6fa..0c805277e 100644 --- a/picard/log.py +++ b/picard/log.py @@ -28,6 +28,7 @@ from threading import Lock from PyQt5 import QtCore + _MAX_TAIL_LEN = 10**6 VERBOSITY_DEFAULT = logging.WARNING diff --git a/picard/mbjson.py b/picard/mbjson.py index 75b0ecca8..9e534390e 100644 --- a/picard/mbjson.py +++ b/picard/mbjson.py @@ -28,6 +28,7 @@ from picard.util import ( translate_from_sortname, ) + _artist_rel_types = { "arranger": "arranger", "audio": "engineer", diff --git a/picard/metadata.py b/picard/metadata.py index 5d7ec149b..d15b57276 100644 --- a/picard/metadata.py +++ b/picard/metadata.py @@ -36,6 +36,7 @@ from picard.util import linear_combination_of_weights from picard.util.imagelist import ImageList from picard.util.tags import PRESERVED_TAGS + MULTI_VALUED_JOINER = '; ' # lengths difference over this number of milliseconds will give a score of 0.0 diff --git a/picard/plugin.py b/picard/plugin.py index b3e3cfd19..a04899ecf 100644 --- a/picard/plugin.py +++ b/picard/plugin.py @@ -45,6 +45,7 @@ from picard.const import ( ) import picard.plugins + _suffixes = [s[0] for s in imp.get_suffixes()] _package_entries = ["__init__.py", "__init__.pyc", "__init__.pyo"] _extension_points = [] diff --git a/picard/track.py b/picard/track.py index cf3856be5..a5d8dadbb 100644 --- a/picard/track.py +++ b/picard/track.py @@ -52,6 +52,7 @@ from picard.util.textencoding import asciipunct from picard.ui.item import Item + _TRANSLATE_TAGS = { "hip hop": "Hip-Hop", "synth-pop": "Synthpop", diff --git a/picard/ui/filebrowser.py b/picard/ui/filebrowser.py index 1c4420aa3..0f1634129 100644 --- a/picard/ui/filebrowser.py +++ b/picard/ui/filebrowser.py @@ -31,6 +31,7 @@ from picard.const.sys import IS_MACOS from picard.formats import supported_formats from picard.util import find_existing_path + _default_current_browser_path = QStandardPaths.writableLocation(QStandardPaths.HomeLocation) diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index eb8649836..b1f08ff35 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -81,6 +81,7 @@ from picard.ui.util import ( find_starting_directory, ) + ui_init = ExtensionPoint() diff --git a/picard/ui/metadatabox.py b/picard/ui/metadatabox.py index 9211e66f4..7dacb89fc 100644 --- a/picard/ui/metadatabox.py +++ b/picard/ui/metadatabox.py @@ -45,6 +45,7 @@ from picard.util.tags import display_tag_name from picard.ui.edittagdialog import EditTagDialog + COMMON_TAGS = [ "title", "artist", diff --git a/picard/ui/options/cdlookup.py b/picard/ui/options/cdlookup.py index a759313f8..679c4bfe0 100644 --- a/picard/ui/options/cdlookup.py +++ b/picard/ui/options/cdlookup.py @@ -30,6 +30,7 @@ from picard.ui.options import ( register_options_page, ) + if AUTO_DETECT_DRIVES: from picard.ui.ui_options_cdlookup_select import Ui_CDLookupOptionsPage else: diff --git a/picard/ui/options/interface.py b/picard/ui/options/interface.py index 08fd264c4..09c6e4300 100644 --- a/picard/ui/options/interface.py +++ b/picard/ui/options/interface.py @@ -39,6 +39,7 @@ from picard.ui.options import ( from picard.ui.ui_options_interface import Ui_InterfaceOptionsPage from picard.ui.util import enabledSlot + _default_starting_dir = QStandardPaths.writableLocation(QStandardPaths.HomeLocation) diff --git a/picard/ui/options/plugins.py b/picard/ui/options/plugins.py index 3e02f39a6..c1131f37f 100644 --- a/picard/ui/options/plugins.py +++ b/picard/ui/options/plugins.py @@ -49,6 +49,7 @@ from picard.ui.options import ( ) from picard.ui.ui_options_plugins import Ui_PluginsOptionsPage + COLUMN_NAME, COLUMN_VERSION, COLUMN_ACTIONS = range(3) diff --git a/picard/ui/options/releases.py b/picard/ui/options/releases.py index bb7f8a971..3e8ad7d79 100644 --- a/picard/ui/options/releases.py +++ b/picard/ui/options/releases.py @@ -41,6 +41,7 @@ from picard.ui.options import ( ) from picard.ui.ui_options_releases import Ui_ReleasesOptionsPage + _DEFAULT_SCORE = 0.5 _release_type_scores = [(g, _DEFAULT_SCORE) for g in list(RELEASE_PRIMARY_GROUPS.keys()) + list(RELEASE_SECONDARY_GROUPS.keys())] diff --git a/picard/ui/options/renaming.py b/picard/ui/options/renaming.py index 71c59d99e..784e324d9 100644 --- a/picard/ui/options/renaming.py +++ b/picard/ui/options/renaming.py @@ -47,6 +47,7 @@ from picard.ui.options.scripting import TaggerScriptSyntaxHighlighter from picard.ui.ui_options_renaming import Ui_RenamingOptionsPage from picard.ui.util import enabledSlot + _default_music_dir = QStandardPaths.writableLocation(QStandardPaths.MusicLocation) diff --git a/picard/util/__init__.py b/picard/util/__init__.py index 631208f5c..3de4200fd 100644 --- a/picard/util/__init__.py +++ b/picard/util/__init__.py @@ -39,6 +39,7 @@ from picard.const.sys import ( IS_WIN, ) + if IS_WIN: from ctypes import windll diff --git a/picard/util/bytes2human.py b/picard/util/bytes2human.py index a5073f5a3..73209e970 100644 --- a/picard/util/bytes2human.py +++ b/picard/util/bytes2human.py @@ -28,6 +28,7 @@ It supports i18n through gettext, decimal and binary units. import locale + # used to force gettextization _BYTES_STRINGS_I18N = ( N_('%s B'), diff --git a/picard/util/cdrom.py b/picard/util/cdrom.py index 3e9cc052a..c26ff43b2 100644 --- a/picard/util/cdrom.py +++ b/picard/util/cdrom.py @@ -30,6 +30,7 @@ from picard.const.sys import ( ) from picard.util import uniqify + if IS_WIN: from ctypes import windll diff --git a/picard/util/icontheme.py b/picard/util/icontheme.py index d57a5ec07..ffcb91105 100644 --- a/picard/util/icontheme.py +++ b/picard/util/icontheme.py @@ -23,6 +23,7 @@ from PyQt5 import QtGui from picard.const.sys import IS_WIN + if IS_WIN: _search_paths = [] else: diff --git a/picard/util/textencoding.py b/picard/util/textencoding.py index 9ad99552f..4c96a6379 100644 --- a/picard/util/textencoding.py +++ b/picard/util/textencoding.py @@ -67,6 +67,7 @@ import unicodedata from picard.util import sanitize_filename + ######################### LATIN SIMPLIFICATION ########################### # The translation tables for punctuation and latin combined-characters are taken from # http://unicode.org/repos/cldr/trunk/common/transforms/Latin-ASCII.xml diff --git a/picard/util/versions.py b/picard/util/versions.py index 3c99a972d..2ab0f0d75 100644 --- a/picard/util/versions.py +++ b/picard/util/versions.py @@ -33,6 +33,7 @@ from picard import PICARD_FANCY_VERSION_STR from picard.disc import discid_version from picard.util.astrcmp import astrcmp_implementation + _versions = OrderedDict([ ("version", PICARD_FANCY_VERSION_STR), ("python-version", python_version()), diff --git a/picard/util/xml.py b/picard/util/xml.py index 6bb887248..f9e9c9abb 100644 --- a/picard/util/xml.py +++ b/picard/util/xml.py @@ -23,6 +23,7 @@ import re from PyQt5.QtCore import QXmlStreamReader + _node_name_re = re.compile('[^a-zA-Z0-9]') diff --git a/picard/webservice/__init__.py b/picard/webservice/__init__.py index 13de6af9e..023b267cb 100644 --- a/picard/webservice/__init__.py +++ b/picard/webservice/__init__.py @@ -60,6 +60,7 @@ from picard.util import ( from picard.util.xml import parse_xml from picard.webservice import ratecontrol + COUNT_REQUESTS_DELAY_MS = 250 TEMP_ERRORS_RETRIES = 5 diff --git a/picard/webservice/api_helpers.py b/picard/webservice/api_helpers.py index 9bf994e11..7913fd839 100644 --- a/picard/webservice/api_helpers.py +++ b/picard/webservice/api_helpers.py @@ -38,6 +38,7 @@ from picard.webservice import ( ratecontrol, ) + ratecontrol.set_minimum_delay((ACOUSTID_HOST, ACOUSTID_PORT), 333) ratecontrol.set_minimum_delay((CAA_HOST, CAA_PORT), 0) diff --git a/picard/webservice/ratecontrol.py b/picard/webservice/ratecontrol.py index 916873b1a..6ae842296 100644 --- a/picard/webservice/ratecontrol.py +++ b/picard/webservice/ratecontrol.py @@ -27,6 +27,7 @@ import time from picard import log + # ============================================================================ # Throttling/congestion avoidance # ============================================================================ diff --git a/test/__init__.py b/test/__init__.py index 419a5f1ca..65d06e0a2 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,5 +1,6 @@ import glob import os.path + for filename in glob.glob(os.path.join(os.path.dirname(__file__), "test_*.py")): __import__("test." + os.path.basename(filename)[:-3]) diff --git a/test/formats/common.py b/test/formats/common.py index 2d58cfc93..0a0c63231 100644 --- a/test/formats/common.py +++ b/test/formats/common.py @@ -13,6 +13,7 @@ import picard.formats from picard.formats import ext_to_format from picard.metadata import Metadata + settings = { 'clear_existing_tags': False, 'embed_only_one_front_image': False, diff --git a/test/formats/test_apev2.py b/test/formats/test_apev2.py index e847766da..3d81b28c5 100644 --- a/test/formats/test_apev2.py +++ b/test/formats/test_apev2.py @@ -9,6 +9,7 @@ from .common import ( ) from .coverart import CommonCoverArtTests + VALID_KEYS = [ ' valid Key}', '{ $ome tag~}', diff --git a/test/formats/test_vorbis.py b/test/formats/test_vorbis.py index 143fe61d4..be0b4c209 100644 --- a/test/formats/test_vorbis.py +++ b/test/formats/test_vorbis.py @@ -23,6 +23,7 @@ from .coverart import ( file_save_image, ) + VALID_KEYS = [ ' valid Key}', '{ $ome tag}', diff --git a/test/test_acoustid.py b/test/test_acoustid.py index 6ca725a19..6a817d13d 100644 --- a/test/test_acoustid.py +++ b/test/test_acoustid.py @@ -9,6 +9,7 @@ from picard.mbjson import recording_to_metadata from picard.metadata import Metadata from picard.track import Track + settings = { "standardize_tracks": False, "standardize_artists": False, diff --git a/test/test_browser.py b/test/test_browser.py index 8cf5a49b9..50e742180 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -9,6 +9,7 @@ from test.picardtestcase import PicardTestCase from picard.browser.filelookup import FileLookup from picard.util import webbrowser2 + SERVER = 'musicbrainz.org' PORT = 443 LOCAL_PORT = "8000" diff --git a/test/test_filesystem.py b/test/test_filesystem.py index b6005ff59..c9a3dded1 100644 --- a/test/test_filesystem.py +++ b/test/test_filesystem.py @@ -9,6 +9,7 @@ from test.picardtestcase import PicardTestCase from picard import config import picard.formats + settings = { 'enabled_plugins': '', 'move_files': True, diff --git a/test/test_mbjson.py b/test/test_mbjson.py index d76b5d316..bdcfb9b6c 100644 --- a/test/test_mbjson.py +++ b/test/test_mbjson.py @@ -20,6 +20,7 @@ from picard.metadata import Metadata from picard.releasegroup import ReleaseGroup from picard.track import Track + settings = { "standardize_tracks": False, "standardize_artists": False, diff --git a/test/test_metadata.py b/test/test_metadata.py index b05268a5c..4d91ebf38 100644 --- a/test/test_metadata.py +++ b/test/test_metadata.py @@ -9,6 +9,7 @@ from picard.metadata import ( ) from picard.util.tags import PRESERVED_TAGS + settings = { 'write_id3v23': False, 'id3v23_join_with': '/', diff --git a/test/test_releaseversions.py b/test/test_releaseversions.py index 3baa7a2a6..65665d943 100644 --- a/test/test_releaseversions.py +++ b/test/test_releaseversions.py @@ -10,6 +10,7 @@ from picard import config from picard.i18n import setup_gettext from picard.releasegroup import ReleaseGroup + settings = { "standardize_tracks": False, "standardize_artists": False, diff --git a/test/test_scripttofilename.py b/test/test_scripttofilename.py index b219271df..ab2e4ba6a 100644 --- a/test/test_scripttofilename.py +++ b/test/test_scripttofilename.py @@ -7,6 +7,7 @@ from picard.metadata import Metadata from picard.script import register_script_function from picard.util.scripttofilename import script_to_filename + settings = { 'ascii_filenames': False, 'enabled_plugins': [], diff --git a/test/test_textencoding.py b/test/test_textencoding.py index 7caa89039..20aae94da 100644 --- a/test/test_textencoding.py +++ b/test/test_textencoding.py @@ -3,6 +3,7 @@ from test.picardtestcase import PicardTestCase from picard import util + #from picard.util import textencoding # Set the value to true below to show the coverage of Latin characters diff --git a/test/test_util_astrcmp.py b/test/test_util_astrcmp.py index f94a98706..408452f81 100644 --- a/test/test_util_astrcmp.py +++ b/test/test_util_astrcmp.py @@ -5,6 +5,7 @@ from test.picardtestcase import PicardTestCase from picard.util.astrcmp import astrcmp_py + try: from picard.util.astrcmp import astrcmp_c except ImportError: diff --git a/test/test_utils.py b/test/test_utils.py index 464fd53a2..dda87545e 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -15,6 +15,7 @@ from picard.util import ( sort_by_similarity, ) + # ensure _() is defined if '_' not in builtins.__dict__: builtins.__dict__['_'] = lambda a: a diff --git a/test/test_webservice.py b/test/test_webservice.py index 313b513da..fc0b56103 100644 --- a/test/test_webservice.py +++ b/test/test_webservice.py @@ -14,6 +14,7 @@ from picard.webservice import ( ratecontrol, ) + PROXY_SETTINGS = { "use_proxy": True, "proxy_server_host": '127.0.0.1',