Merge pull request #1177 from phw/use-isort

Run isort over all files
This commit is contained in:
Philipp Wolfer
2019-04-04 15:38:21 +00:00
committed by GitHub
66 changed files with 116 additions and 44 deletions

View File

@@ -16,10 +16,12 @@ known_picard=picard
known_picard_ui=picard.ui
known_qt=PyQt5
known_resources=picard.resources
known_test=test.*
multi_line_output=3
order_by_type=True
sections=FUTURE,STDLIB,THIRDPARTY,QT,PICARD,LOCALFOLDER,RESOURCES,PICARD_UI
sections=FUTURE,STDLIB,THIRDPARTY,QT,TEST,PICARD,LOCALFOLDER,RESOURCES,PICARD_UI
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

View File

@@ -13,7 +13,7 @@ env:
global:
- PIP_INSTALL="pip3 install"
- INSTALL_DEPS="$PIP_INSTALL -r requirements.txt"
- PYTEST="$PIP_INSTALL pytest pytest-randomly pytest-cov"
- INSTALL_TEST_TOOLS="$PIP_INSTALL pytest pytest-randomly pytest-cov isort==4.3.10"
- CODACY="$PIP_INSTALL codacy-coverage"
- LIBDISCID="libdiscid0 libdiscid-dev"
matrix:
@@ -56,9 +56,11 @@ before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source bin/activate; fi
- "$INSTALL_DEPS"
- "$PYTEST"
- "$INSTALL_TEST_TOOLS"
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then bash scripts/package-osx.sh; fi
script: py.test -v --cov=picard --cov-report xml:coverage.xml
script:
- py.test -v --cov=picard --cov-report xml:coverage.xml
- isort --check-only --diff --quiet $(git ls-tree -r --name-only $(git rev-parse HEAD) | grep "\\.py$")
after_success:
- if [ ! -z "${CODACY_PROJECT_TOKEN}" ]; then $CODACY; python-codacy-coverage -r coverage.xml;
fi

View File

@@ -10,7 +10,23 @@ As most of the other projects written in Python, we use the [PEP 8](https://www.
The general idea is to make the code within a project consistent and easy to interpret (for humans).
To fix or preserve imports style, one can use `isort -rc .` command (requires `isort` tool, see `.isort.cfg`).
To fix or preserve imports style, one can use `isort -rc .` command (requires the [isort](https://github.com/timothycrosley/isort) tool, see `.isort.cfg`).
It is recommended to add a pre-commit hook to check whether imports in changed code
follow the conventions. Add a file `.git/hooks/pre-commit` with the following content
and make it executable:
```bash
#!/usr/bin/env bash
PYFILES=$(git diff --cached --name-only | grep "\\.py$")
if [ ! -z "$PYFILES" ]; then
set -e
isort --check-only $PYFILES
fi
```
### Docstrings
@@ -18,6 +34,7 @@ Unless the function is easy to understand quickly, it should probably have a doc
We recommend using ["Google-style" docstrings](https://google.github.io/styleguide/pyguide.html?showone=Comments#Comments) for writing docstrings.
### Picard specific code
Picard has some auto-generated `picard/ui/ui_*.py` PyQt UI related files. Please do not change them directly. To modify them, use Qt-Designer to edit the `ui/*.ui` and use the command `python setup.py build_ui` to generate the corresponding `ui_*.py` files.
@@ -26,6 +43,7 @@ We use snake-case to name all functions and variables except for the pre-generat
`gettext` and `gettext-noop` have been built-in the Picard code as `_` and `N_` respectively to provide support for internationalization/localization. You can use them without imports across all of Picard code. Make sure to mark all displayable strings for translation using `_` or `N_` as applicable. You can read more about python-gettext [here](https://docs.python.org/2/library/gettext.html).
## Git Work-flow
We follow the "typical" GitHub workflow when contributing changes:

View File

@@ -19,6 +19,7 @@
import re
PICARD_ORG_NAME = "MusicBrainz"
PICARD_APP_NAME = "Picard"
PICARD_VERSION = (2, 2, 0, 'dev', 1)

View File

@@ -29,9 +29,7 @@ from picard import (
from picard.acoustid.json_helpers import parse_recording
from picard.const import FPCALC_NAMES
from picard.const.sys import IS_FROZEN
from picard.util import (
find_executable,
)
from picard.util import find_executable
class AcoustIDClient(QtCore.QObject):

View File

@@ -26,6 +26,7 @@ from picard import (
log,
)
user_collections = {}

View File

@@ -29,9 +29,7 @@ from picard import (
version_from_string,
version_to_string,
)
from picard.util import (
LockableObject,
)
from picard.util import LockableObject
class ConfigUpgradeError(Exception):

View File

@@ -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

View File

@@ -19,6 +19,7 @@
import sys
IS_WIN = sys.platform == 'win32'
IS_LINUX = sys.platform == 'linux'
IS_MACOS = sys.platform == 'darwin'

View File

@@ -40,7 +40,6 @@ from picard.coverart.providers import (
CoverArtProvider,
cover_art_providers,
)
from picard.metadata import register_album_metadata_processor

View File

@@ -45,6 +45,7 @@ from picard.util import (
)
from picard.util.scripttofilename import script_to_filename
_datafiles = dict()
_datafile_mutex = QMutex(QMutex.Recursive)

View File

@@ -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([

View File

@@ -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 = []

View File

@@ -44,6 +44,7 @@ from picard.util import (
sanitize_date,
)
id3.GRP1 = compatid3.GRP1
id3.TCMP = compatid3.TCMP
id3.TSO2 = compatid3.TSO2

View File

@@ -25,6 +25,7 @@ from mutagen.id3 import (
TextFrame,
)
try:
from mutagen.id3 import GRP1
except ImportError:

View File

@@ -29,6 +29,7 @@ from picard.const.sys import (
IS_WIN,
)
builtins.__dict__['N_'] = lambda a: a

View File

@@ -28,6 +28,7 @@ from threading import Lock
from PyQt5 import QtCore
_MAX_TAIL_LEN = 10**6
VERBOSITY_DEFAULT = logging.WARNING

View File

@@ -28,6 +28,7 @@ from picard.util import (
translate_from_sortname,
)
_artist_rel_types = {
"arranger": "arranger",
"audio": "engineer",

View File

@@ -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

View File

@@ -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 = []

View File

@@ -58,15 +58,15 @@ from picard.cluster import (
)
from picard.collection import load_user_collections
from picard.config_upgrade import upgrade_config
from picard.const import (
USER_DIR,
USER_PLUGIN_DIR,
)
from picard.const.sys import (
IS_FROZEN,
IS_MACOS,
IS_WIN,
)
from picard.const import (
USER_DIR,
USER_PLUGIN_DIR,
)
from picard.dataobj import DataObject
from picard.disc import Disc
from picard.file import File

View File

@@ -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",

View File

@@ -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)

View File

@@ -18,7 +18,10 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from functools import partial
from heapq import heappush, heappop
from heapq import (
heappop,
heappush,
)
import os
import re

View File

@@ -35,9 +35,7 @@ from picard import (
from picard.album import Album
from picard.cluster import Cluster
from picard.const import PROGRAM_UPDATE_LEVELS
from picard.const.sys import (
IS_MACOS,
)
from picard.const.sys import IS_MACOS
from picard.file import File
from picard.formats import supported_formats
from picard.plugin import ExtensionPoint
@@ -83,6 +81,7 @@ from picard.ui.util import (
find_starting_directory,
)
ui_init = ExtensionPoint()

View File

@@ -45,6 +45,7 @@ from picard.util.tags import display_tag_name
from picard.ui.edittagdialog import EditTagDialog
COMMON_TAGS = [
"title",
"artist",

View File

@@ -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:

View File

@@ -18,9 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from picard import config
from picard.coverart.providers import (
cover_art_providers,
)
from picard.coverart.providers import cover_art_providers
from picard.ui.checkbox_list_item import CheckboxListItem
from picard.ui.moveable_list_view import MoveableListView

View File

@@ -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)

View File

@@ -35,7 +35,6 @@ from picard import (
config,
log,
)
from picard.const import (
PLUGINS_API,
USER_PLUGIN_DIR,
@@ -50,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)

View File

@@ -26,7 +26,6 @@ from PyQt5 import (
)
from picard import config
from picard.const import (
RELEASE_COUNTRIES,
RELEASE_FORMATS,
@@ -42,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())]

View File

@@ -48,7 +48,6 @@ from picard.ui.ui_options_renaming import Ui_RenamingOptionsPage
from picard.ui.util import enabledSlot
_default_music_dir = QStandardPaths.writableLocation(QStandardPaths.MusicLocation)

View File

@@ -42,9 +42,7 @@ from picard.util import (
)
from picard.ui import PicardDialog
from picard.ui.util import (
StandardButton,
)
from picard.ui.util import StandardButton
class ResultTable(QtWidgets.QTableWidget):

View File

@@ -27,9 +27,7 @@ from picard.const.sys import (
IS_MACOS,
IS_WIN,
)
from picard.util import (
find_existing_path,
)
from picard.util import find_existing_path
class StandardButton(QtWidgets.QPushButton):

View File

@@ -30,6 +30,7 @@ from picard.const.sys import (
)
from picard.util import uniqify
if IS_WIN:
from ctypes import windll

View File

@@ -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

View File

@@ -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()),

View File

@@ -23,6 +23,7 @@ import re
from PyQt5.QtCore import QXmlStreamReader
_node_name_re = re.compile('[^a-zA-Z0-9]')

View File

@@ -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

View File

@@ -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)

View File

@@ -27,6 +27,7 @@ import time
from picard import log
# ============================================================================
# Throttling/congestion avoidance
# ============================================================================

View File

@@ -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])

View File

@@ -2,11 +2,12 @@
import os.path
import shutil
from tempfile import mkstemp
from test.picardtestcase import PicardTestCase
import unittest
import mutagen
from test.picardtestcase import PicardTestCase
from picard import config
import picard.formats
from picard.formats import ext_to_format

View File

@@ -7,6 +7,7 @@ from picard.coverart.image import (
)
import picard.formats
from picard.metadata import Metadata
from .common import (
CommonTests,
skipUnlessTestfile,

View File

@@ -1,10 +1,11 @@
from test.picardtestcase import PicardTestCase
from picard.formats import apev2
from .common import (
TAGS,
CommonTests,
load_metadata,
TAGS,
)
from .coverart import CommonCoverArtTests

View File

@@ -4,6 +4,7 @@ from test.picardtestcase import (
)
from picard.formats import asf
from .common import CommonTests
from .coverart import CommonCoverArtTests

View File

@@ -1,9 +1,11 @@
import os.path
from test.picardtestcase import PicardTestCase
from picard import config
from picard.formats import id3
from picard.metadata import Metadata
from .common import (
CommonTests,
load_metadata,

View File

@@ -1,4 +1,5 @@
from picard.formats import ext_to_format
from .common import (
CommonTests,
load_metadata,

View File

@@ -1,5 +1,6 @@
import logging
import os
from test.picardtestcase import PicardTestCase
from picard import (
@@ -8,13 +9,14 @@ from picard import (
)
from picard.coverart.image import CoverArtImage
from picard.formats import vorbis
from .common import (
TAGS,
CommonTests,
load_metadata,
load_raw,
save_and_load_metadata,
skipUnlessTestfile,
TAGS,
)
from .coverart import (
CommonCoverArtTests,

View File

@@ -1,5 +1,6 @@
import json
import os
from test.picardtestcase import PicardTestCase
from picard import config
@@ -8,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,

View File

@@ -1,6 +1,7 @@
from test.picardtestcase import PicardTestCase
from unittest.mock import MagicMock
from test.picardtestcase import PicardTestCase
from picard import config
from picard.webservice import WebService
from picard.webservice.api_helpers import (

View File

@@ -1,13 +1,15 @@
from test.picardtestcase import PicardTestCase
from unittest.mock import patch
from urllib.parse import (
parse_qs,
urlparse,
)
from test.picardtestcase import PicardTestCase
from picard.browser.filelookup import FileLookup
from picard.util import webbrowser2
SERVER = 'musicbrainz.org'
PORT = 443
LOCAL_PORT = "8000"

View File

@@ -2,6 +2,7 @@ import os.path
import shutil
import sys
import tempfile
from test.picardtestcase import PicardTestCase
from picard.i18n import setup_gettext

View File

@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
from test.picardtestcase import PicardTestCase
from mutagen import id3
from test.picardtestcase import PicardTestCase
from picard.formats.id3 import id3text
from picard.formats.mutagenext import compatid3

View File

@@ -34,6 +34,7 @@ from picard.config import (
TextOption,
)
class TestPicardConfigCommon(PicardTestCase):
def setUp(self):

View File

@@ -7,6 +7,7 @@ from test.picardtestcase import (
PicardTestCase,
create_fake_png,
)
from picard.const.sys import IS_WIN
from picard.coverart.image import (
CoverArtImage,

View File

@@ -3,6 +3,7 @@
import os.path
import shutil
import tempfile
from test.picardtestcase import PicardTestCase
from picard.coverart.utils import translate_caa_type

View File

@@ -3,6 +3,7 @@ from contextlib import suppress
import os.path
import shutil
from tempfile import mkdtemp
from test.picardtestcase import PicardTestCase
from picard import config

View File

@@ -1,5 +1,6 @@
import json
import os
from test.picardtestcase import PicardTestCase
from picard import config
@@ -19,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,

View File

@@ -3,12 +3,14 @@ import os.path
import shutil
import sys
import tempfile
from test.picardtestcase import PicardTestCase
from picard import config
from picard.i18n import setup_gettext
from picard.releasegroup import ReleaseGroup
settings = {
"standardize_tracks": False,
"standardize_artists": False,

View File

@@ -1,6 +1,7 @@
from test.picardtestcase import PicardTestCase
from unittest.mock import MagicMock
from test.picardtestcase import PicardTestCase
from picard import config
from picard.const import DEFAULT_FILE_NAMING_FORMAT
from picard.metadata import Metadata

View File

@@ -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

View File

@@ -1,9 +1,11 @@
# -*- coding: utf-8 -*-
from test.picardtestcase import PicardTestCase
import unittest
from test.picardtestcase import PicardTestCase
from picard.util.astrcmp import astrcmp_py
try:
from picard.util.astrcmp import astrcmp_c
except ImportError:

View File

@@ -3,15 +3,17 @@
import os
import os.path
import sys
from test.picardtestcase import PicardTestCase
import unittest
from test.picardtestcase import PicardTestCase
from picard.const.sys import (
IS_MACOS,
IS_WIN,
)
from picard.util.filenaming import make_short_filename
class ShortFilenameTest(PicardTestCase):
def __init__(self, *args, **kwargs):

View File

@@ -3,9 +3,10 @@
import builtins
from collections import namedtuple
import os.path
from test.picardtestcase import PicardTestCase
import unittest
from test.picardtestcase import PicardTestCase
from picard import util
from picard.const.sys import IS_WIN
from picard.util import (
@@ -14,6 +15,7 @@ from picard.util import (
sort_by_similarity,
)
# ensure _() is defined
if '_' not in builtins.__dict__:
builtins.__dict__['_'] = lambda a: a

View File

@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
from test.picardtestcase import PicardTestCase
from unittest.mock import (
MagicMock,
patch,
)
from test.picardtestcase import PicardTestCase
from picard import config
from picard.webservice import (
UnknownResponseParserError,
@@ -13,6 +14,7 @@ from picard.webservice import (
ratecontrol,
)
PROXY_SETTINGS = {
"use_proxy": True,
"proxy_server_host": '127.0.0.1',