Skip to content

Commit 6b0c9b2

Browse files
authored
Refactor (#51)
1 parent 65e281a commit 6b0c9b2

21 files changed

+62
-38
lines changed

mkdocs.yml

+18-8
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@ theme:
77
name: material
88
logo: images/logo.png
99
favicon: images/favicon.ico
10+
font:
11+
text: Arimo # Google font, replaces the default Arial
1012
features:
1113
- content.code.annotate
14+
- content.code.copy # Copy button on top right of code blocks
15+
- navigation.expand # Expand navigation menus by default
16+
# - navigation.tabs # Enable tabs on top https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#navigation-tabs
1217
palette:
1318
- media: "(prefers-color-scheme: light"
1419
scheme: default
@@ -23,19 +28,24 @@ theme:
2328

2429
markdown_extensions:
2530
- abbr
26-
- admonition
27-
- pymdownx.details
31+
- admonition # Info boxes
32+
- pymdownx.details # Info boxes
2833
- pymdownx.highlight
29-
- pymdownx.superfences
34+
- pymdownx.superfences # Info boxes, tabs
3035
- pymdownx.emoji:
31-
emoji_index: !!python/name:materialx.emoji.twemoji # https://emojipedia.org/twitter/
32-
emoji_generator: !!python/name:materialx.emoji.to_svg
33-
- tables
36+
emoji_index: !!python/name:material.extensions.emoji.twemoji # https://emojipedia.org/twitter/
37+
emoji_generator: !!python/name:material.extensions.emoji.to_svg
38+
- tables # Create tables in Markdown by using a simple syntax
39+
- mdx_truly_sane_lists # 2-space indented nested lists
40+
- attr_list # More functionality for images (align, lazy load, etc.)
41+
- md_in_html # MD/HTML interop. Also helps with images (caption, center alignment)
3442

3543
plugins:
36-
- search
44+
- search # Search box at the top
45+
- glightbox # Image lightbox (for zooming). Requires `mkdocs-glightbox` package
3746

38-
dev_addr: 127.0.0.1:7000
47+
dev_addr: 127.0.0.1:7007 # Default 8000 may compete with other frameworks
3948

49+
site_url: https://github.com/joaonc/hd_active
4050
repo_url: https://github.com/joaonc/hd_active
4151
copyright: Copyright © 2024 Joao Coelho

pyproject.toml

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ target-version = ['py311']
66
skip-string-normalization = true
77
extend-exclude='''
88
(
9-
app/ui/forms
9+
src/hd_active/ui/forms
1010
| \.venv.*
1111
| \venv.*
1212
)
1313
'''
1414

1515
[tool.isort]
16-
extend_skip = ['app/ui/forms']
17-
known_first_party = 'app'
16+
extend_skip = ['src/hd_active/ui/forms']
1817
profile = 'black'
1918
sections = 'FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER'
2019
skip_glob = ['**/.venv*', '**/venv*', '/build']

setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Configuration for tools that don't support `pyproject.toml`.
22

33
[flake8]
4-
exclude = .git,.github,.venv*,venv*,__pycache__,assets,app/ui/forms,docs,site
4+
exclude = .git,.github,.venv*,venv*,__pycache__,assets,src/hd_active/ui/forms,docs,site
55
max-line-length = 100
66

77
# Errors being ignored:

app/__init__.py src/__init__.py

File renamed without changes.
File renamed without changes.
File renamed without changes.

app/hd_active.py src/hd_active/hd_active.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from pathlib import Path
88
from typing import Deque, Iterable, Optional, Set, Union
99

10-
from app.hd_action_state import HdActionState
10+
from src.hd_active.hd_action_state import HdActionState
1111

1212
FILE_NAME = '_hd_active.txt'
1313
logger = logging.getLogger(__name__)
@@ -148,7 +148,7 @@ def change_state(self) -> HdActionState:
148148
import argparse
149149
import sys
150150

151-
from app.hd_active_config import HdActiveConfig
151+
from src.hd_active.hd_active_config import HdActiveConfig
152152

153153
parser = argparse.ArgumentParser(description='Keep HDs active.')
154154
parser.add_argument(
File renamed without changes.

app/main.py src/hd_active/main.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
from PySide6 import QtGui, QtWidgets
44

5-
from app.ui.system_tray_icon import SystemTrayIcon
6-
from app.utils import get_asset
5+
from src.hd_active.ui.system_tray_icon import SystemTrayIcon
6+
from src.hd_active.utils import get_asset
77

88

99
def main():
File renamed without changes.

src/hd_active/ui/forms/__init__.py

Whitespace-only changes.

app/ui/forms/log_ui.py src/hd_active/ui/forms/log_ui.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
QPoint,
1919
QRect,
2020
QSize,
21+
Qt,
2122
QTime,
2223
QUrl,
23-
Qt,
2424
)
2525
from PySide6.QtGui import (
2626
QBrush,
@@ -40,7 +40,14 @@
4040
QRadialGradient,
4141
QTransform,
4242
)
43-
from PySide6.QtWidgets import QApplication, QDialog, QPushButton, QSizePolicy, QTextBrowser, QWidget
43+
from PySide6.QtWidgets import (
44+
QApplication,
45+
QDialog,
46+
QPushButton,
47+
QSizePolicy,
48+
QTextBrowser,
49+
QWidget,
50+
)
4451

4552

4653
class Ui_LogDialog(object):

app/ui/forms/settings_ui.py src/hd_active/ui/forms/settings_ui.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
QPoint,
1919
QRect,
2020
QSize,
21+
Qt,
2122
QTime,
2223
QUrl,
23-
Qt,
2424
)
2525
from PySide6.QtGui import (
2626
QBrush,

app/ui/log_dialog.py src/hd_active/ui/log_dialog.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from PySide6 import QtGui, QtWidgets
22

3-
from app.hd_active import HdActive
4-
from app.ui.forms.log_ui import Ui_LogDialog
3+
from src.hd_active.hd_active import HdActive
4+
from src.hd_active.ui.forms.log_ui import Ui_LogDialog
55

66

77
class LogDialog(QtWidgets.QDialog):

app/ui/settings_dialog.py src/hd_active/ui/settings_dialog.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from PySide6 import QtGui, QtWidgets
44

5-
from app.hd_active import HdActive
6-
from app.ui.forms.settings_ui import Ui_Dialog
7-
from app.ui.log_dialog import LogDialog
8-
from app.utils import get_asset
5+
from src.hd_active.hd_active import HdActive
6+
from src.hd_active.ui.forms.settings_ui import Ui_Dialog
7+
from src.hd_active.ui.log_dialog import LogDialog
8+
from src.hd_active.utils import get_asset
99

1010

1111
class SettingsDialog(QtWidgets.QDialog):

app/ui/system_tray_icon.py src/hd_active/ui/system_tray_icon.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from PySide6 import QtWidgets
44

5-
from app.hd_active import HdActive
6-
from app.hd_active_config import HdActiveConfig
7-
from app.ui.settings_dialog import SettingsDialog
8-
from app.utils import is_truthy
5+
from src.hd_active.hd_active import HdActive
6+
from src.hd_active.hd_active_config import HdActiveConfig
7+
from src.hd_active.ui.settings_dialog import SettingsDialog
8+
from src.hd_active.utils import is_truthy
99

1010
HD_ACTION_DEBUG = is_truthy(os.getenv('HD_ACTION_DEBUG', 'True'))
1111
"""

app/utils.py src/hd_active/utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from pathlib import Path
22
from typing import Any
33

4-
PROJECT_ROOT = Path(__file__).parents[1].resolve()
4+
PROJECT_ROOT = Path(__file__).parents[2].resolve()
55
ASSETS_ROOT = PROJECT_ROOT / 'assets'
66

77

tasks.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from invoke import Collection, Exit, task
55

6-
from app.utils import get_asset
6+
from src.hd_active.utils import get_asset
77

88
os.environ.setdefault('INVOKE_RUN_ECHO', '1') # Show commands by default
99

@@ -94,7 +94,7 @@ def ui_py(c, file=None):
9494
f'File "{file}" not found. Available files: ", ".join(p.stem for p in UI_FILES)'
9595
)
9696

97-
py_file_path = PROJECT_ROOT / 'app/ui/forms' / f'{file_stem}_ui.py'
97+
py_file_path = PROJECT_ROOT / 'src/hd_activehd_active/ui/forms' / f'{file_stem}_ui.py'
9898

9999
c.run(f'pyside6-uic {ui_file_path} -o {py_file_path}')
100100

tests/test_hd_active.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
import pytest
88

9-
from app.hd_action_state import HdActionState
10-
from app.hd_active import HdActive
9+
from src.hd_active.hd_action_state import HdActionState
10+
from src.hd_active.hd_active import HdActive
1111

1212
WAIT = 0.1
1313
WAIT_TEST = 2 * WAIT
@@ -22,7 +22,7 @@ def __init__(self, drive_paths=None, run=False, wait=WAIT):
2222
super().__init__(drive_paths, run, wait=wait)
2323

2424

25-
@patch('app.hd_active.HdActive._write_hd', return_value=1000)
25+
@patch('src.hd_active.hd_active.HdActive._write_hd', return_value=1000)
2626
class TestHdActive:
2727
def test_instantiate_not_started(self, mock_write_hd):
2828
hd_active = HdActiveTest(drive_paths=['z'], run=False)

tests/test_hd_active_config.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import pytest
55

6-
from app.hd_active_config import HdActiveConfig
6+
from src.hd_active.hd_active_config import HdActiveConfig
77

88

99
@pytest.fixture
@@ -19,7 +19,7 @@ def config_file(request, tmp_path) -> Tuple[str, List[str]]:
1919
return str(file), request.param[1]
2020

2121

22-
@patch('app.hd_active_config.configparser.ConfigParser.read')
22+
@patch('src.hd_active.hd_active_config.configparser.ConfigParser.read')
2323
def test_defaults(read_mock):
2424
"""
2525
Skip reading file (so defaults are not overwritten) and verify defaults.

tests/test_utils.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import pytest
22

3-
from app.utils import get_asset, is_truthy
3+
from src.hd_active.utils import get_asset, is_truthy, PROJECT_ROOT, ASSETS_ROOT
4+
5+
6+
class TestGlobals:
7+
def test_project_root(self):
8+
assert PROJECT_ROOT.name == 'hd_active'
9+
10+
def test_assets_root(self):
11+
assert ASSETS_ROOT.name == 'assets'
412

513

614
class TestGetAsset:

0 commit comments

Comments
 (0)