]> kaliko git repositories - mpd-sima.git/commitdiff
Big cleanup, pyling warning, style, error
authorkaliko <kaliko@azylum.org>
Sat, 2 Oct 2021 11:11:10 +0000 (13:11 +0200)
committerkaliko <kaliko@azylum.org>
Sat, 2 Oct 2021 11:11:10 +0000 (13:11 +0200)
17 files changed:
sima/core.py
sima/launch.py
sima/lib/cache.py
sima/lib/daemon.py
sima/lib/http.py
sima/lib/logger.py
sima/lib/meta.py
sima/lib/simadb.py
sima/lib/simastr.py
sima/lib/track.py
sima/lib/webserv.py
sima/mpdclient.py
sima/plugins/internal/tags.py
sima/utils/blcli.py
sima/utils/config.py
sima/utils/filelock.py
sima/utils/utils.py

index 83c5e910a54adae79fc860b199a6c9913792bbdd..50c9ff972306bd87b344e75ad9b17494577be462 100644 (file)
@@ -92,7 +92,8 @@ class Sima(Daemon):
         queue_trigger = self.config.getint('sima', 'queue_length')
         if self.player.playmode.get('random'):
             queue = self.player.playlist
-            self.log.debug('Currently %s track(s) in the playlist. (target %s)', len(queue), queue_trigger)
+            self.log.debug('Currently %s track(s) in the playlist. (target %s)',
+                           len(queue), queue_trigger)
         else:
             queue = self.player.queue
             self.log.debug('Currently %s track(s) ahead. (target %s)', len(queue), queue_trigger)
@@ -157,8 +158,6 @@ class Sima(Daemon):
         self.log.info('bye...')
 
     def run(self):
-        """
-        """
         try:
             self.log.info('Connecting MPD: %(host)s:%(port)s', self.config['MPD'])
             self.player.connect()
index 4b77f89a29c5320212b1fe72e16f02701735eda7..7117f09f733c4f4acbb2c51634391af77266d47c 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (c) 2013, 2014, 2015, 2020,2021 kaliko <kaliko@azylum.org>
+# Copyright (c) 2013, 2014, 2015, 2020, 2021 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -51,7 +51,7 @@ def load_plugins(sima, source):
     """Handles internal/external plugins
         sima:   sima.core.Sima instance
         source: ['internal', 'contrib']
-    """
+    """# pylint: disable=logging-not-lazy,logging-format-interpolation
     if not sima.config.get('sima', source):
         return
     logger = logging.getLogger('sima')
@@ -114,7 +114,7 @@ def start(sopt, restart=False):
         if cmd == "generate-config":
             config.write(sys.stdout, space_around_delimiters=True)
             sys.exit(0)
-        logger.info('Running "%s" and exit' % cmd)
+        logger.info('Running "%s" and exit', cmd)
         if cmd == "config-test":
             logger.info('Config location: "%s"', cfg_mgmt.conf_file)
             from .utils.configtest import config_test
index f59c4645cadead8fa8128f85053fc4d84493fa7d..2640bf01db39101712ad0c6278c878152c2ba923 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2014 kaliko <kaliko@azylum.org>
+# Copyright (c) 2014, 2021 kaliko <kaliko@azylum.org>
 # Copyright (c) 2012, 2013 Eric Larson <eric@ionrock.org>
 #
 #   This program is free software: you can redistribute it and/or modify
@@ -85,6 +85,7 @@ class FileCache:
         name = self._fn(key)
         if os.path.exists(name):
             return load(codecs.open(name, 'rb'))
+        return None
 
     def set(self, key, value):
         name = self._fn(key)
index 015745b2e436d5adc23dcdd87c62dcf0f26bd7a0..9de08f91fe64f61f7eda87b37ddc41e163afaa32 100644 (file)
@@ -21,6 +21,8 @@
 #
 #  You should have received a copy of the GNU General Public License
 #  along with MPD_sima.  If not, see <http://www.gnu.org/licenses/>.
+#
+# pylint: disable=all
 
 import atexit
 import os
index 3b27bddbb3e99406f909681bd03da234a3be54ce..a87398b5d46ed991911260c3f528dd0d192db79b 100644 (file)
@@ -45,7 +45,7 @@ def parse_uri(uri):
     return (groups[1], groups[3], groups[4], groups[6], groups[8])
 
 
-class CacheController(object):
+class CacheController:
     """An interface to see if request should cached or not.
     """
     CACHE_ANYWAY = False
@@ -66,7 +66,7 @@ class CacheController(object):
 
         # Could do syntax based normalization of the URI before
         # computing the digest. See Section 6.2.2 of Std 66.
-        request_uri = query and "?".join([path, query]) or path
+        request_uri = "?".join([path, query]) if query else path
         scheme = scheme.lower()
         defrag_uri = scheme + "://" + authority + request_uri
 
@@ -101,7 +101,7 @@ class CacheController(object):
         cc = self.parse_cache_control(request.headers)
 
         # non-caching states
-        no_cache = True if 'no-cache' in cc else False
+        no_cache = bool('no-cache' in cc)
         if 'max-age' in cc and cc['max-age'] == 0:
             no_cache = True
         # see if it is in the cache anyways
index cab43fcfee6e7098fd8796c43b711f21f80db228..75a8f65441fbed9c4fdc57a3baf9fad507a9a5ac 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010, 2013, 2014, 2015 kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2013, 2014, 2015, 2021 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -54,7 +54,7 @@ def set_logger(level='info', logfile=None):
         logfile: file to log to
     """
     name = 'sima'
-    if getenv('TRACE', False):
+    if getenv('TRACE', None):
         user_log_level = TRACE_LEVEL_NUM
     else:
         user_log_level = getattr(logging, level.upper())
index 4ff560110d0b3e1186f1d7fd497beb2f758f7450..af3e19c14e781622480de208954d1952f745ac08 100644 (file)
@@ -97,8 +97,7 @@ class Meta:
             raise MetaException('Need a "name" argument (str type)')
         if not isinstance(kwargs.get('name'), str):
             raise MetaException('"name" argument not a string')
-        else:
-            self.__name = kwargs.pop('name').split(SEPARATOR)[0]
+        self.__name = kwargs.pop('name').split(SEPARATOR)[0]
         if 'mbid' in kwargs and kwargs.get('mbid'):
             mbid = kwargs.get('mbid').lower().split(SEPARATOR)[0]
             if is_uuid4(mbid):
index f3c1a09ebe26d3fb5849551e7e2c0ccd44a2a714..7d92c6c7953d261ab3a6e11ca4e3a54f3b0869f4 100644 (file)
@@ -196,8 +196,8 @@ class SimaDB:
         connection = self.get_database_connection()
         rows = connection.execute(
                 "SELECT name FROM sqlite_master WHERE type='table'")
-        for r in rows.fetchall():
-            connection.execute(f'DROP TABLE IF EXISTS {r[0]}')
+        for row in rows.fetchall():
+            connection.execute(f'DROP TABLE IF EXISTS {row[0]}')
         connection.close()
 
     def _remove_blocklist_id(self, blid, with_connection=None):
@@ -218,10 +218,9 @@ class SimaDB:
             return connection.execute(
                 "SELECT id FROM albums WHERE mbid = ?",
                 (album.mbid,))
-        else:
-            return connection.execute(
-                "SELECT id FROM albums WHERE name = ? AND mbid IS NULL",
-                (album.name,))
+        return connection.execute(
+            "SELECT id FROM albums WHERE name = ? AND mbid IS NULL",
+            (album.name,))
 
     def get_album(self, album, with_connection=None, add=True):
         """get album information from the database.
@@ -261,10 +260,9 @@ class SimaDB:
             return connection.execute(
                 "SELECT id FROM albumartists WHERE mbid = ?",
                 (artist.mbid,))
-        else:
-            return connection.execute(
-                "SELECT id FROM albumartists WHERE name = ? AND mbid IS NULL",
-                (artist.name,))
+        return connection.execute(
+            "SELECT id FROM albumartists WHERE name = ? AND mbid IS NULL",
+            (artist.name,))
 
     def get_albumartist(self, artist, with_connection=None, add=True):
         """get albumartist information from the database.
@@ -303,9 +301,8 @@ class SimaDB:
             return connection.execute(
                 "SELECT id FROM artists WHERE mbid = ?",
                 (artist.mbid,))
-        else:
-            return connection.execute(
-                "SELECT id FROM artists WHERE name = ? AND mbid IS NULL", (artist.name,))
+        return connection.execute(
+            "SELECT id FROM artists WHERE name = ? AND mbid IS NULL", (artist.name,))
 
     def get_artist(self, artist, with_connection=None, add=True):
         """get artist information from the database.
@@ -430,7 +427,7 @@ class SimaDB:
 
     def _add_tracks_genres(self, track, connection):
         if not track.genres:
-            return None
+            return
         rows = connection.execute(
             "SELECT id FROM tracks WHERE file = ?", (track.file,))
         trk_id = rows.fetchone()[0]
@@ -544,7 +541,7 @@ class SimaDB:
                     hist.append(artist)  # No need to go further
                     break
                 continue
-            elif needle and getattr(needle, '__contains__'):
+            if needle and getattr(needle, '__contains__'):
                 if artist in needle:
                     hist.append(artist)  # No need to go further
                 continue
@@ -644,10 +641,10 @@ class SimaDB:
             connection.commit()
         rows = connection.execute(
             "SELECT id FROM blocklist WHERE track = ?", (track_id,))
-        bl = rows.fetchone()[0]
+        blt = rows.fetchone()[0]
         if not with_connection:
             connection.close()
-        return bl
+        return blt
 
     def get_bl_album(self, album, with_connection=None, add=True):
         """Add an album to blocklist
@@ -672,10 +669,10 @@ class SimaDB:
             connection.commit()
         rows = connection.execute(
             "SELECT id FROM blocklist WHERE album = ?", (album_id,))
-        bl = rows.fetchone()[0]
+        blitem = rows.fetchone()[0]
         if not with_connection:
             connection.close()
-        return bl
+        return blitem
 
     def get_bl_artist(self, artist, with_connection=None, add=True):
         """Add an artist to blocklist
@@ -698,10 +695,10 @@ class SimaDB:
             connection.commit()
         rows = connection.execute(
             "SELECT id FROM blocklist WHERE artist = ?", (artist_id,))
-        bl = rows.fetchone()[0]
+        blitem = rows.fetchone()[0]
         if not with_connection:
             connection.close()
-        return bl
+        return blitem
 
     def view_bl(self):
         connection = self.get_database_connection()
index 033a994e23f7bea76b99db648570426c8a62e4ad..f3e77ee0a34d89f4dc6519ef250b2cb8b0a05c2f 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2009, 2010, 2013 kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2013, 2021 kaliko <kaliko@azylum.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as
@@ -102,6 +102,7 @@ class SimaStr(str):
     def __init__(self, fuzzstr):
         """
         """
+        super().__init__()
         self.orig = str(fuzzstr)
         self.stripped = str(fuzzstr.strip())
         # fuzzy computation
index 9ff9607ca938f2de0d86e25d5afd44cfa65fef5f..a9003dabbe1ef2599d947cb9480d308a95460c7d 100644 (file)
@@ -117,7 +117,8 @@ class Track:
 
     @property
     def length(self):
-        """Get a fancy duration as ``%H:%M:%S`` (use :attr:`duration` to get duration in second only)"""
+        """Get a fancy duration as ``%H:%M:%S`` (use :attr:`duration` to get
+        duration in second only)"""
         temps = time.gmtime(self.duration)  # TODO: returns a date not a duration
         if temps.tm_hour:
             fmt = '%H:%M:%S'
index ae540b7aacc1d94d5949754b6ccd20941b431579..10ed2b95bbc8cbbd672f38386f38fa3631b2279b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (c) 2009-2020 kaliko <kaliko@azylum.org>
+# Copyright (c) 2009-2021 kaliko <kaliko@azylum.org>
 # Copyright (c) 2019 sacha <sachahony@gmail.com>
 #
 #  This file is part of sima
@@ -271,6 +271,7 @@ class WebService(AdvancedPlugin):
             to_add.extend(candidates)
             if nb_album_add == target_album_to_add:
                 return to_add
+        return to_add
 
     def find_top(self, artists):
         """
index 53a62d0ceddfe9bd74584494a210584e37c3f719..c2daae361b6ad20e96e42d4104b7faa60614bb24 100644 (file)
@@ -173,25 +173,25 @@ class MPD(MPDClient):
         self.tagtypes('clear')
         for tag in MPD.needed_tags:
             self.tagtypes('enable', tag)
-        tt = set(map(str.lower, self.tagtypes()))
+        ltt = set(map(str.lower, self.tagtypes()))
         needed_tags = set(map(str.lower, MPD.needed_tags))
-        if len(needed_tags & tt) != len(MPD.needed_tags):
-            self.log.warning('MPD exposes: %s', tt)
+        if len(needed_tags & ltt) != len(MPD.needed_tags):
+            self.log.warning('MPD exposes: %s', ltt)
             self.log.warning('Tags needed: %s', needed_tags)
             raise PlayerError('Missing mandatory metadata!')
         for tag in MPD.needed_mbid_tags:
             self.tagtypes('enable', tag)
         # Controls use of MusicBrainzIdentifier
         if self.config.getboolean('sima', 'musicbrainzid'):
-            tt = set(self.tagtypes())
-            if len(MPD.needed_mbid_tags & tt) != len(MPD.needed_mbid_tags):
+            ltt = set(self.tagtypes())
+            if len(MPD.needed_mbid_tags & ltt) != len(MPD.needed_mbid_tags):
                 self.log.warning('Use of MusicBrainzIdentifier is set but MPD '
                                  'is not providing related metadata')
-                self.log.info(tt)
+                self.log.info(ltt)
                 self.log.warning('Disabling MusicBrainzIdentifier')
                 self.use_mbid = Meta.use_mbid = False
             else:
-                self.log.debug('Available metadata: %s', tt)
+                self.log.debug('Available metadata: %s', ltt)
                 self.use_mbid = Meta.use_mbid = True
         else:
             self.log.warning('Use of MusicBrainzIdentifier disabled!')
@@ -400,6 +400,7 @@ class MPD(MPDClient):
                          artist.name, mbids[0], artist.mbid)
         else:
             return mbids[0]
+        return None
 
     @bl_artist
     @set_artist_mbid
@@ -558,9 +559,9 @@ class MPD(MPDClient):
                 if artist.mbid == album_trks[0].musicbrainz_albumartistid:
                     candidates.append(album)
                     continue
-                else:
-                    self.log.debug('Discarding "%s", "%r" not set as musicbrainz_albumartistid', album, album.Artist)
-                    continue
+                self.log.debug('Discarding "%s", "%r" not set as musicbrainz_albumartistid',
+                               album, album.Artist)
+                continue
             if 'Various Artists' in album_artists:
                 self.log.debug('Discarding %s ("Various Artists" set)', album)
                 continue
index 39ac0ea27bdb6aacc77307f246240d47d36aab11..c891b779893f50f232d3d3b2bfab7f6d8e151b37 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (c) 2020 kaliko <kaliko@azylum.org>
+# Copyright (c) 2020, 2021 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
index 56f36ca6b846a82627ec8b92a4c56f9f2bed8328..a306b2c7e6dae997c84d00155ddb43579919754a 100644 (file)
@@ -45,15 +45,15 @@ class BLCli(MPD):
         blocklist = self.sdb.view_bl()
         for entry in ['artist', 'album', 'title']:
             header = False
-            for bl in blocklist:
-                val = bl.get(entry, '')
-                mbid = bl.get(f'musicbrainz_{entry}', '')
+            for blitem in blocklist:
+                val = blitem.get(entry, '')
+                mbid = blitem.get(f'musicbrainz_{entry}', '')
                 if val or mbid:
                     if not header:
                         header = True
                         self.log.info(f'{entry.capitalize()}'
                                       '(id name musicbranzID):')
-                    self.log.info(f'{bl["id"]} "{val}"\t\t{mbid}')
+                    self.log.info(f'{blitem["id"]} "{val}"\t\t{mbid}')
 
     def bl_add_artist(self):
         artist = self.options.get('artist', None)
index fd5cab6c9056d0129a71fea98a328c9f822fe258..c89b591bc3970dfc65506defedc45c017a955223 100644 (file)
@@ -17,7 +17,6 @@
 #  You should have received a copy of the GNU General Public License
 #  along with sima.  If not, see <http://www.gnu.org/licenses/>.
 #
-# pylint: disable=bad-continuation
 
 """
 Deal with configuration and data files.
@@ -190,10 +189,8 @@ class ConfMan:  # CONFIG MANAGER CLASS
         self.log.debug('file permission is: %o', mode)
         if mode & S_IRWXO or mode & S_IRWXG:
             self.log.warning('File is readable by "other" and/or' +
-                             ' "group" (actual permission %o octal).' %
-                             mode)
-            self.log.warning('Consider setting permissions' +
-                             ' to 600 octal.')
+                             ' "group" (actual permission %o octal).', mode)
+            self.log.warning('Consider setting permissions to 600 octal.')
 
     def supersedes_config_with_cmd_line_options(self):
         """Updates defaults settings with command line options"""
index 31df146831aeb5e8ea06497ea851fbfdf2dc3bf3..81f9d3c5c14b81988168eb02c0edc9ff024c6359 100644 (file)
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 # Copyright (c) 2009 Evan Fosmark
-# Copyright (c) 2014 kaliko <kaliko@azylum.org>
+# Copyright (c) 2014, 2021 kaliko <kaliko@azylum.org>
 #
 #   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
@@ -84,7 +84,7 @@ class FileLock:
             self.acquire()
         return self
 
-    def __exit__(self, type, value, traceback):
+    def __exit__(self, ex_type, ex_value, ex_traceback):
         """end of the with statement
         """
         if self.is_locked:
index 83799e0e2555b75f94051b04aec9c912a45e226e..cc81f61643153ffec7d9c56b325fb74c2f27bd2f 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020, 2021 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -112,7 +112,7 @@ class Obsolete(Action):
 class FileAction(Action):
     """Generic class to inherit from for ArgParse action on file/dir
     """
-    # pylint: disable=R0903
+    # pylint: disable=R0903,W0201
     def __call__(self, parser, namespace, values, option_string=None):
         self._file = normalize_path(values)
         self._dir = dirname(self._file)
@@ -171,6 +171,7 @@ class Wdir(FileAction):
 
 class Throttle:
     """throttle decorator"""
+    # pylint: disable=R0903
     def __init__(self, wait):
         self.wait = wait
         self.last_called = datetime.now()