diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..446bc18 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,26 @@ + +repos: +# Using this mirror lets us use mypyc-compiled black, which is about 2x faster +- repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.2.0 + hooks: + - id: black + # It is recommended to specify the latest version of Python + # supported by your project here, or alternatively use + # pre-commit's default_language_version, see + # https://pre-commit.com/#top_level-default_language_version + language_version: python3.11 + +- repo: https://github.com/pycqa/isort + rev: 5.13.2 + hooks: + - id: isort + name: isort (python) + +- repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.3.0 + hooks: + # Run the linter. + - id: ruff + # - id: ruff-format We don't need this because we have black and isort. diff --git a/negromate/karaoke/commands/karaoke.py b/negromate/karaoke/commands/karaoke.py index b2da81c..be8775d 100644 --- a/negromate/karaoke/commands/karaoke.py +++ b/negromate/karaoke/commands/karaoke.py @@ -1,17 +1,22 @@ from pathlib import Path -name = 'karaoke' -help_text = 'GUI for negromate karaoke' +name = "karaoke" +help_text = "GUI for negromate karaoke" def options(parser, config, **kwargs): parser.add_argument( - '-s', '--song_folder', type=Path, - default=config['global']['song_folder'], + "-s", + "--song_folder", + type=Path, + default=config["global"]["song_folder"], help="Folder with the song database, defaults to {}".format( - config['global']['song_folder'])) + config["global"]["song_folder"] + ), + ) def run(args, **kwargs): from ..karaoke import main + main(args.song_folder.expanduser()) diff --git a/negromate/karaoke/karaoke.py b/negromate/karaoke/karaoke.py index 41b4227..860f02e 100755 --- a/negromate/karaoke/karaoke.py +++ b/negromate/karaoke/karaoke.py @@ -3,21 +3,23 @@ import os import subprocess import kivy -kivy.require('2.1.0') - -from kivy.app import App -from kivy.core.text import LabelBase -from kivy.core.window import Window -from kivy.properties import ObjectProperty, ListProperty, BooleanProperty -from kivy.resources import resource_add_path -from kivy.uix.boxlayout import BoxLayout - from negromate.songs.loader import load_songs +kivy.require("2.1.0") + +from kivy.app import App # noqa: E402 +from kivy.core.text import LabelBase # noqa: E402 +from kivy.core.window import Window # noqa: E402 +from kivy.properties import BooleanProperty # noqa: E402 +from kivy.properties import ListProperty # noqa: E402 +from kivy.properties import ObjectProperty # noqa: E402 +from kivy.resources import resource_add_path # noqa: E402 +from kivy.uix.boxlayout import BoxLayout # noqa: E402 + class SongWidget(BoxLayout): active = BooleanProperty(False) - song = ObjectProperty('') + song = ObjectProperty("") @property def name(self): @@ -49,18 +51,18 @@ class KaraokeGUI(BoxLayout): self.keyboard = Window.request_keyboard( self.keyboard_closed, self, - 'text', + "text", ) self.keyboard.bind(on_key_down=self.on_key_down) def on_key_down(self, keyboard, keycode, text, modifiers): - if text == 'a': + if text == "a": self.previous() return True - elif text == 'd': + elif text == "d": self.next() return True - elif text == 's': + elif text == "s": self.play() return True return False @@ -69,7 +71,7 @@ class KaraokeGUI(BoxLayout): pass def on_songs(self, instance, value): - container = self.ids['song_container'] + container = self.ids["song_container"] container.clear_widgets() for song in self.songs: container.add_widget(song) @@ -79,12 +81,12 @@ class KaraokeGUI(BoxLayout): for song in self.songs: song.active = False value.active = True - current_song_image = self.ids['current_song_image'] - current_song_title = self.ids['current_song_title'] + current_song_image = self.ids["current_song_image"] + current_song_title = self.ids["current_song_title"] current_song_image.source = value.cover current_song_title.text = value.name - scrollview = self.ids['songs_scroll'] + scrollview = self.ids["songs_scroll"] scrollview.scroll_to(value) def previous(self): @@ -108,19 +110,26 @@ class KaraokeGUI(BoxLayout): self.active_song = self.songs[idx] def play(self): - subprocess.call([ - 'cvlc', - '--fullscreen', - '--no-sub-autodetect-file', - '--sub-file', - self.active_song.subtitle, - self.active_song.video, - 'vlc://quit' - ]) + subprocess.call( + [ + "cvlc", + "--fullscreen", + "--no-sub-autodetect-file", + "--sub-file", + self.active_song.subtitle, + self.active_song.video, + "vlc://quit", + ] + ) class KaraokeApp(App): - kv_directory = os.path.join(os.path.dirname(__file__, ), 'kv_templates') + kv_directory = os.path.join( + os.path.dirname( + __file__, + ), + "kv_templates", + ) def __init__(self, root_folder, **kwargs): super().__init__(**kwargs) @@ -137,7 +146,5 @@ class KaraokeApp(App): def main(path): # Window.fullscreen = True resource_add_path(os.path.dirname(__file__)) - LabelBase.register( - name='CyrBit', - fn_regular='resources/fonts/CyrBit.ttf') + LabelBase.register(name="CyrBit", fn_regular="resources/fonts/CyrBit.ttf") KaraokeApp(path).run()