diff --git a/.tx/config b/.tx/config
index 761063e1..972a89e7 100644
--- a/.tx/config
+++ b/.tx/config
@@ -7,4 +7,3 @@ source_file = src/vorta/i18n/ts/vorta.en.ts
source_lang = en
type = QT
minimum_perc = 80
-
diff --git a/src/vorta/__main__.py b/src/vorta/__main__.py
index 3cba250f..8d1e07cd 100644
--- a/src/vorta/__main__.py
+++ b/src/vorta/__main__.py
@@ -1,7 +1,9 @@
import os
import signal
import sys
+
from peewee import SqliteDatabase
+
from vorta._version import __version__
from vorta.config import SETTINGS_DIR
from vorta.i18n import trans_late, translate
@@ -14,6 +16,7 @@ from vorta.utils import parse_args
def main():
def exception_handler(type, value, tb):
from traceback import format_exception
+
from PyQt6.QtWidgets import QMessageBox
logger.critical(
diff --git a/src/vorta/application.py b/src/vorta/application.py
index 3542131e..4885b304 100644
--- a/src/vorta/application.py
+++ b/src/vorta/application.py
@@ -3,8 +3,10 @@ import os
import sys
from pathlib import Path
from typing import Any, Dict, List, Tuple
+
from PyQt6 import QtCore
from PyQt6.QtWidgets import QMessageBox
+
from vorta.borg.break_lock import BorgBreakJob
from vorta.borg.create import BorgCreateJob
from vorta.borg.jobs_manager import JobsManager
diff --git a/src/vorta/assets/UI/repoadd.ui b/src/vorta/assets/UI/repoadd.ui
index fff7c4b4..643e2a77 100644
--- a/src/vorta/assets/UI/repoadd.ui
+++ b/src/vorta/assets/UI/repoadd.ui
@@ -275,4 +275,4 @@
-
\ No newline at end of file
+
diff --git a/src/vorta/autostart.py b/src/vorta/autostart.py
index 6e0f5d92..b89ecf37 100644
--- a/src/vorta/autostart.py
+++ b/src/vorta/autostart.py
@@ -50,6 +50,7 @@ def open_app_at_startup(enabled=True):
elif sys.platform.startswith('linux'):
from pathlib import Path
+
from platformdirs import user_config_path
is_flatpak = Path('/.flatpak-info').exists()
diff --git a/src/vorta/borg/borg_job.py b/src/vorta/borg/borg_job.py
index d1e7f1b4..d3846897 100644
--- a/src/vorta/borg/borg_job.py
+++ b/src/vorta/borg/borg_job.py
@@ -11,8 +11,10 @@ from collections import namedtuple
from datetime import datetime as dt
from subprocess import PIPE, Popen, TimeoutExpired
from threading import Lock
+
from PyQt6 import QtCore
from PyQt6.QtWidgets import QApplication
+
from vorta import application
from vorta.borg.jobs_manager import JobInterface
from vorta.i18n import trans_late, translate
diff --git a/src/vorta/borg/check.py b/src/vorta/borg/check.py
index cdb15a1c..ae4d7f1f 100644
--- a/src/vorta/borg/check.py
+++ b/src/vorta/borg/check.py
@@ -1,7 +1,9 @@
from typing import Any, Dict
+
from vorta.config import LOG_DIR
from vorta.i18n import translate
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/compact.py b/src/vorta/borg/compact.py
index 889954d8..acf495d5 100644
--- a/src/vorta/borg/compact.py
+++ b/src/vorta/borg/compact.py
@@ -1,7 +1,9 @@
from typing import Any, Dict
+
from vorta.config import LOG_DIR
from vorta.i18n import trans_late, translate
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/create.py b/src/vorta/borg/create.py
index bbb5b765..167a87b1 100644
--- a/src/vorta/borg/create.py
+++ b/src/vorta/borg/create.py
@@ -2,10 +2,17 @@ import os
import subprocess
import tempfile
from datetime import datetime as dt
+
from vorta.config import LOG_DIR
from vorta.i18n import trans_late, translate
-from vorta.store.models import ArchiveModel, RepoModel, SourceFileModel, WifiSettingModel
+from vorta.store.models import (
+ ArchiveModel,
+ RepoModel,
+ SourceFileModel,
+ WifiSettingModel,
+)
from vorta.utils import borg_compat, format_archive_name, get_network_status_monitor
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/delete.py b/src/vorta/borg/delete.py
index d05bd208..5b1fe72f 100644
--- a/src/vorta/borg/delete.py
+++ b/src/vorta/borg/delete.py
@@ -1,6 +1,8 @@
from typing import List
+
from vorta.store.models import RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/diff.py b/src/vorta/borg/diff.py
index b41c9783..cd09ff81 100644
--- a/src/vorta/borg/diff.py
+++ b/src/vorta/borg/diff.py
@@ -1,4 +1,5 @@
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/extract.py b/src/vorta/borg/extract.py
index a2a37725..41108721 100644
--- a/src/vorta/borg/extract.py
+++ b/src/vorta/borg/extract.py
@@ -1,8 +1,11 @@
import tempfile
+
from PyQt6.QtCore import QModelIndex, Qt
+
from vorta.utils import borg_compat
from vorta.views.extract_dialog import ExtractTree, FileData
from vorta.views.partials.treemodel import FileSystemItem, path_to_str
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/info_archive.py b/src/vorta/borg/info_archive.py
index 51289f75..72caf06c 100644
--- a/src/vorta/borg/info_archive.py
+++ b/src/vorta/borg/info_archive.py
@@ -1,5 +1,6 @@
from vorta.store.models import ArchiveModel, RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/info_repo.py b/src/vorta/borg/info_repo.py
index 07a2190f..4397ba16 100644
--- a/src/vorta/borg/info_repo.py
+++ b/src/vorta/borg/info_repo.py
@@ -1,6 +1,7 @@
from vorta.i18n import trans_late
from vorta.store.models import RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob, FakeProfile, FakeRepo
diff --git a/src/vorta/borg/init.py b/src/vorta/borg/init.py
index b26b4b7d..7fa0300a 100644
--- a/src/vorta/borg/init.py
+++ b/src/vorta/borg/init.py
@@ -1,5 +1,6 @@
from vorta.store.models import RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob, FakeProfile, FakeRepo
diff --git a/src/vorta/borg/jobs_manager.py b/src/vorta/borg/jobs_manager.py
index 5f2d6cd6..2028535d 100644
--- a/src/vorta/borg/jobs_manager.py
+++ b/src/vorta/borg/jobs_manager.py
@@ -2,6 +2,7 @@ import logging
import queue
import threading
from abc import abstractmethod
+
from PyQt6.QtCore import QObject
logger = logging.getLogger(__name__)
diff --git a/src/vorta/borg/list_archive.py b/src/vorta/borg/list_archive.py
index 5c2e5fe3..ef00a013 100644
--- a/src/vorta/borg/list_archive.py
+++ b/src/vorta/borg/list_archive.py
@@ -1,4 +1,5 @@
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/list_repo.py b/src/vorta/borg/list_repo.py
index 64584281..664778d6 100644
--- a/src/vorta/borg/list_repo.py
+++ b/src/vorta/borg/list_repo.py
@@ -1,6 +1,8 @@
from datetime import datetime as dt
+
from vorta.store.models import ArchiveModel, RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/mount.py b/src/vorta/borg/mount.py
index d141a2a6..64e99a4a 100644
--- a/src/vorta/borg/mount.py
+++ b/src/vorta/borg/mount.py
@@ -1,7 +1,9 @@
import logging
import os
+
from vorta.store.models import SettingsModel
from vorta.utils import SHELL_PATTERN_ELEMENT, borg_compat
+
from .borg_job import BorgJob
logger = logging.getLogger(__name__)
diff --git a/src/vorta/borg/prune.py b/src/vorta/borg/prune.py
index 8e08d796..aba888fb 100644
--- a/src/vorta/borg/prune.py
+++ b/src/vorta/borg/prune.py
@@ -1,5 +1,6 @@
from vorta.store.models import RepoModel
from vorta.utils import borg_compat, format_archive_name
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/rename.py b/src/vorta/borg/rename.py
index 2dbb154c..c0a3f3ae 100644
--- a/src/vorta/borg/rename.py
+++ b/src/vorta/borg/rename.py
@@ -1,5 +1,6 @@
from vorta.store.models import ArchiveModel, RepoModel
from vorta.utils import borg_compat
+
from .borg_job import BorgJob
diff --git a/src/vorta/borg/umount.py b/src/vorta/borg/umount.py
index c0ae17a7..cdec6e25 100644
--- a/src/vorta/borg/umount.py
+++ b/src/vorta/borg/umount.py
@@ -1,5 +1,7 @@
import os.path
+
import psutil
+
from ..i18n import trans_late
from .borg_job import BorgJob
diff --git a/src/vorta/borg/version.py b/src/vorta/borg/version.py
index b2fbd73a..348aaa71 100644
--- a/src/vorta/borg/version.py
+++ b/src/vorta/borg/version.py
@@ -1,4 +1,5 @@
from vorta.i18n import trans_late
+
from .borg_job import BorgJob
diff --git a/src/vorta/config.py b/src/vorta/config.py
index 80961e1b..b496a94d 100644
--- a/src/vorta/config.py
+++ b/src/vorta/config.py
@@ -1,4 +1,5 @@
from pathlib import Path
+
import platformdirs
APP_NAME = 'Vorta'
diff --git a/src/vorta/i18n/__init__.py b/src/vorta/i18n/__init__.py
index 54bc95d8..54f96c17 100644
--- a/src/vorta/i18n/__init__.py
+++ b/src/vorta/i18n/__init__.py
@@ -3,6 +3,7 @@ internationalisation (i18n) support code
"""
import logging
import os
+
from PyQt6.QtCore import QLocale, QTranslator
logger = logging.getLogger(__name__)
diff --git a/src/vorta/i18n/ts/vorta.cs.ts b/src/vorta/i18n/ts/vorta.cs.ts
index 82536b29..65bf2358 100644
--- a/src/vorta/i18n/ts/vorta.cs.ts
+++ b/src/vorta/i18n/ts/vorta.cs.ts
@@ -1606,11 +1606,11 @@
-
@@ -2346,4 +2346,4 @@
Ukládání hesla do nastavení Vorta.
-
\ No newline at end of file
+
diff --git a/src/vorta/i18n/ts/vorta.de.ts b/src/vorta/i18n/ts/vorta.de.ts
index 3f282658..6156a5a6 100644
--- a/src/vorta/i18n/ts/vorta.de.ts
+++ b/src/vorta/i18n/ts/vorta.de.ts
@@ -1604,11 +1604,11 @@
- Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
- {0}
+ Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
+ {0}
{1}
- Schema-Upgrade Fehler, erstelle einen Bugreport auf dem Link um "Misc"-Tab, mit folgendem Fehler:
- {0}
+ Schema-Upgrade Fehler, erstelle einen Bugreport auf dem Link um "Misc"-Tab, mit folgendem Fehler:
+ {0}
{1}
@@ -2344,4 +2344,4 @@
Speichere Kennwort in der Vortakonfiguration
-
\ No newline at end of file
+
diff --git a/src/vorta/i18n/ts/vorta.es.ts b/src/vorta/i18n/ts/vorta.es.ts
index 232a7e4e..c8868d17 100644
--- a/src/vorta/i18n/ts/vorta.es.ts
+++ b/src/vorta/i18n/ts/vorta.es.ts
@@ -1606,8 +1606,8 @@
- Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
- {0}
+ Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
+ {0}
{1}
Falla al actualizar esquema, registre un reporte de error con el enlace en la pestaña Varios con el siguiente error:
{0}
@@ -2346,4 +2346,4 @@
-
\ No newline at end of file
+
diff --git a/src/vorta/i18n/ts/vorta.fi.ts b/src/vorta/i18n/ts/vorta.fi.ts
index 3ff8c9e5..b52fa3c7 100644
--- a/src/vorta/i18n/ts/vorta.fi.ts
+++ b/src/vorta/i18n/ts/vorta.fi.ts
@@ -1606,11 +1606,11 @@
- Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
- {0}
+ Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
+ {0}
{1}
- Skeeman päivitys epäonnistui, lähetä virheraportti Sekalaiset-välilehdellä olevasta linkistä. Liitä raporttiin seuraavat tiedot:
- {0}
+ Skeeman päivitys epäonnistui, lähetä virheraportti Sekalaiset-välilehdellä olevasta linkistä. Liitä raporttiin seuraavat tiedot:
+ {0}
{1}
@@ -2346,4 +2346,4 @@
-
\ No newline at end of file
+
diff --git a/src/vorta/i18n/ts/vorta.nl.ts b/src/vorta/i18n/ts/vorta.nl.ts
index 73caace1..556cbda2 100644
--- a/src/vorta/i18n/ts/vorta.nl.ts
+++ b/src/vorta/i18n/ts/vorta.nl.ts
@@ -1606,8 +1606,8 @@
- Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
- {0}
+ Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
+ {0}
{1}
Het schema kan niet worden bijgewerkt. Stel een bugmelding op via de link op het tabblad ‘Overig’. Stuur de volgende informatie mee:
@@ -2347,4 +2347,4 @@
Het wachtwoord wordt opgeslagen in de Vorta-instellingen.
-
\ No newline at end of file
+
diff --git a/src/vorta/i18n/ts/vorta.sk.ts b/src/vorta/i18n/ts/vorta.sk.ts
index d56cd88b..ebc99faa 100644
--- a/src/vorta/i18n/ts/vorta.sk.ts
+++ b/src/vorta/i18n/ts/vorta.sk.ts
@@ -1606,8 +1606,8 @@
- Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
- {0}
+ Schema upgrade failure, file a bug report with the link in the Misc tab with the following error:
+ {0}
{1}
Upgrade schémy skončil s chybou, otvorte hlásenie o chybe kliknutím na odkaz na karte Rôzne a skopírujte tento text:
{0}
@@ -2346,4 +2346,4 @@
-
\ No newline at end of file
+
diff --git a/src/vorta/keyring/abc.py b/src/vorta/keyring/abc.py
index fc35f9c6..ed7f7207 100644
--- a/src/vorta/keyring/abc.py
+++ b/src/vorta/keyring/abc.py
@@ -1,5 +1,6 @@
import importlib
import logging
+
from vorta.i18n import trans_late
logger = logging.getLogger(__name__)
diff --git a/src/vorta/keyring/db.py b/src/vorta/keyring/db.py
index 706c0d91..b4bcc843 100644
--- a/src/vorta/keyring/db.py
+++ b/src/vorta/keyring/db.py
@@ -1,6 +1,9 @@
import logging
+
import peewee
+
from vorta.store.models import SettingsModel
+
from .abc import VortaKeyring
logger = logging.getLogger(__name__)
diff --git a/src/vorta/keyring/kwallet.py b/src/vorta/keyring/kwallet.py
index 08841d6d..d52f32c4 100644
--- a/src/vorta/keyring/kwallet.py
+++ b/src/vorta/keyring/kwallet.py
@@ -1,7 +1,9 @@
import logging
import os
+
from PyQt6 import QtDBus
from PyQt6.QtCore import QMetaType, QVariant
+
from vorta.keyring.abc import VortaKeyring
logger = logging.getLogger(__name__)
diff --git a/src/vorta/keyring/secretstorage.py b/src/vorta/keyring/secretstorage.py
index 02c1c319..c8b870e0 100644
--- a/src/vorta/keyring/secretstorage.py
+++ b/src/vorta/keyring/secretstorage.py
@@ -1,7 +1,9 @@
import asyncio
import logging
import os
+
import secretstorage
+
from vorta.keyring.abc import VortaKeyring
logger = logging.getLogger(__name__)
diff --git a/src/vorta/log.py b/src/vorta/log.py
index c4ee22df..b1034e3b 100644
--- a/src/vorta/log.py
+++ b/src/vorta/log.py
@@ -8,6 +8,7 @@ Set up logging to user log dir. Uses the platform's default location:
import logging
from logging.handlers import TimedRotatingFileHandler
+
from .config import LOG_DIR
logger = logging.getLogger()
diff --git a/src/vorta/network_status/abc.py b/src/vorta/network_status/abc.py
index d5dfb299..60f9353a 100644
--- a/src/vorta/network_status/abc.py
+++ b/src/vorta/network_status/abc.py
@@ -11,7 +11,11 @@ class NetworkStatusMonitor:
return DarwinNetworkStatus()
else:
- from .network_manager import DBusException, NetworkManagerMonitor, UnsupportedException
+ from .network_manager import (
+ DBusException,
+ NetworkManagerMonitor,
+ UnsupportedException,
+ )
try:
return NetworkManagerMonitor()
diff --git a/src/vorta/network_status/darwin.py b/src/vorta/network_status/darwin.py
index 44d2e304..279fc13a 100644
--- a/src/vorta/network_status/darwin.py
+++ b/src/vorta/network_status/darwin.py
@@ -1,6 +1,7 @@
import subprocess
from datetime import datetime as dt
from typing import Iterator, Optional
+
from vorta.log import logger
from vorta.network_status.abc import NetworkStatusMonitor, SystemWifiInfo
diff --git a/src/vorta/network_status/network_manager.py b/src/vorta/network_status/network_manager.py
index 55b9f0ba..3d06ddb4 100644
--- a/src/vorta/network_status/network_manager.py
+++ b/src/vorta/network_status/network_manager.py
@@ -2,8 +2,10 @@ import logging
from datetime import datetime
from enum import Enum
from typing import Any, List, Mapping, NamedTuple, Optional
+
from PyQt6 import QtDBus
from PyQt6.QtCore import QObject, QVersionNumber
+
from vorta.network_status.abc import NetworkStatusMonitor, SystemWifiInfo
logger = logging.getLogger(__name__)
diff --git a/src/vorta/notifications.py b/src/vorta/notifications.py
index 8141951e..ddb9d82d 100644
--- a/src/vorta/notifications.py
+++ b/src/vorta/notifications.py
@@ -1,6 +1,8 @@
import logging
import sys
+
from PyQt6 import QtCore, QtDBus
+
from vorta.store.models import SettingsModel
try:
diff --git a/src/vorta/profile_export.py b/src/vorta/profile_export.py
index 58bb7a5f..fa26ac5c 100644
--- a/src/vorta/profile_export.py
+++ b/src/vorta/profile_export.py
@@ -1,7 +1,9 @@
import datetime
import json
from json import JSONDecodeError
+
from playhouse.shortcuts import dict_to_model, model_to_dict
+
from vorta.keyring.abc import VortaKeyring
from vorta.store.connection import DB, SCHEMA_VERSION, init_db
from vorta.store.models import (
diff --git a/src/vorta/scheduler.py b/src/vorta/scheduler.py
index 700294e9..222ccbc5 100644
--- a/src/vorta/scheduler.py
+++ b/src/vorta/scheduler.py
@@ -4,9 +4,11 @@ import threading
from datetime import datetime as dt
from datetime import timedelta
from typing import Dict, NamedTuple, Optional, Tuple, Union
+
from PyQt6 import QtCore, QtDBus
from PyQt6.QtCore import QTimer
from PyQt6.QtWidgets import QApplication
+
from vorta import application
from vorta.borg.check import BorgCheckJob
from vorta.borg.create import BorgCreateJob
diff --git a/src/vorta/store/connection.py b/src/vorta/store/connection.py
index 72a3461f..21e6ec25 100644
--- a/src/vorta/store/connection.py
+++ b/src/vorta/store/connection.py
@@ -1,8 +1,11 @@
import os
from datetime import datetime, timedelta
+
from peewee import Tuple, fn
from playhouse import signals
+
from vorta.autostart import open_app_at_startup
+
from .migrations import run_migrations
from .models import (
DB,
diff --git a/src/vorta/store/migrations.py b/src/vorta/store/migrations.py
index 0db00e9f..160addc8 100644
--- a/src/vorta/store/migrations.py
+++ b/src/vorta/store/migrations.py
@@ -1,6 +1,8 @@
from datetime import datetime
+
import peewee as pw
from playhouse.migrate import SqliteMigrator, migrate
+
from .models import (
DB,
ArchiveModel,
diff --git a/src/vorta/store/models.py b/src/vorta/store/models.py
index c893764e..f0c32938 100644
--- a/src/vorta/store/models.py
+++ b/src/vorta/store/models.py
@@ -6,8 +6,10 @@ At the bottom there is a simple schema migration system.
import json
from datetime import datetime
+
import peewee as pw
from playhouse import signals
+
from vorta.utils import slugify
DB = pw.Proxy()
diff --git a/src/vorta/store/settings.py b/src/vorta/store/settings.py
index e9761181..f0559582 100644
--- a/src/vorta/store/settings.py
+++ b/src/vorta/store/settings.py
@@ -1,5 +1,6 @@
import sys
from typing import Dict, List
+
from vorta.i18n import trans_late
diff --git a/src/vorta/tray_menu.py b/src/vorta/tray_menu.py
index 14d80284..e5a154d6 100644
--- a/src/vorta/tray_menu.py
+++ b/src/vorta/tray_menu.py
@@ -1,6 +1,8 @@
import os
+
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QMenu, QSystemTrayIcon
+
from vorta.store.models import BackupProfileModel
from vorta.utils import get_asset
diff --git a/src/vorta/updater.py b/src/vorta/updater.py
index 0cad8cd5..73dc40ed 100644
--- a/src/vorta/updater.py
+++ b/src/vorta/updater.py
@@ -1,5 +1,6 @@
import os
import sys
+
from vorta.store.models import SettingsModel
diff --git a/src/vorta/utils.py b/src/vorta/utils.py
index df25d3d0..7c296073 100644
--- a/src/vorta/utils.py
+++ b/src/vorta/utils.py
@@ -11,10 +11,12 @@ import unicodedata
from datetime import datetime as dt
from functools import reduce
from typing import Any, Callable, Iterable, List, Optional, Tuple, TypeVar
+
import psutil
from PyQt6 import QtCore
from PyQt6.QtCore import QFileInfo, QThread, pyqtSignal
from PyQt6.QtWidgets import QApplication, QFileDialog, QSystemTrayIcon
+
from vorta.borg._compatibility import BorgCompatibility
from vorta.i18n import trans_late
from vorta.log import logger
diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py
index 20e31035..f5b92c8e 100644
--- a/src/vorta/views/archive_tab.py
+++ b/src/vorta/views/archive_tab.py
@@ -2,6 +2,7 @@ import logging
import sys
from datetime import timedelta
from typing import Dict, Optional
+
from PyQt6 import QtCore, uic
from PyQt6.QtCore import QItemSelectionModel, QMimeData, QPoint, Qt, pyqtSlot
from PyQt6.QtGui import QAction, QDesktopServices, QKeySequence, QShortcut
@@ -17,6 +18,7 @@ from PyQt6.QtWidgets import (
QTableWidgetItem,
QWidget,
)
+
from vorta.borg.check import BorgCheckJob
from vorta.borg.compact import BorgCompactJob
from vorta.borg.delete import BorgDeleteJob
diff --git a/src/vorta/views/diff_result.py b/src/vorta/views/diff_result.py
index 2fc12639..5d262efa 100644
--- a/src/vorta/views/diff_result.py
+++ b/src/vorta/views/diff_result.py
@@ -5,10 +5,21 @@ import re
from dataclasses import dataclass
from pathlib import PurePath
from typing import List, Optional, Tuple
+
from PyQt6 import uic
-from PyQt6.QtCore import QDateTime, QLocale, QMimeData, QModelIndex, QPoint, Qt, QThread, QUrl
+from PyQt6.QtCore import (
+ QDateTime,
+ QLocale,
+ QMimeData,
+ QModelIndex,
+ QPoint,
+ Qt,
+ QThread,
+ QUrl,
+)
from PyQt6.QtGui import QColor, QKeySequence, QShortcut
from PyQt6.QtWidgets import QApplication, QHeaderView, QMenu, QTreeView
+
from vorta.store.models import SettingsModel
from vorta.utils import get_asset, pretty_bytes, uses_dark_mode
from vorta.views.partials.treemodel import (
diff --git a/src/vorta/views/export_window.py b/src/vorta/views/export_window.py
index 2af17e13..3138b31b 100644
--- a/src/vorta/views/export_window.py
+++ b/src/vorta/views/export_window.py
@@ -1,12 +1,15 @@
import logging
import os
from pathlib import Path
+
from PyQt6 import uic
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QFileDialog, QMessageBox
+
from vorta.keyring.abc import VortaKeyring
from vorta.store.models import BackupProfileModel # noqa: F401
from vorta.utils import get_asset
+
from ..notifications import VortaNotifications
from ..profile_export import ProfileExport
diff --git a/src/vorta/views/extract_dialog.py b/src/vorta/views/extract_dialog.py
index acbec219..0822d067 100644
--- a/src/vorta/views/extract_dialog.py
+++ b/src/vorta/views/extract_dialog.py
@@ -5,14 +5,38 @@ from dataclasses import dataclass
from datetime import datetime
from pathlib import PurePath
from typing import Optional, Union
+
from PyQt6 import uic
-from PyQt6.QtCore import QDateTime, QLocale, QMimeData, QModelIndex, QPoint, Qt, QThread, QUrl
+from PyQt6.QtCore import (
+ QDateTime,
+ QLocale,
+ QMimeData,
+ QModelIndex,
+ QPoint,
+ Qt,
+ QThread,
+ QUrl,
+)
from PyQt6.QtGui import QColor, QKeySequence, QShortcut
-from PyQt6.QtWidgets import QApplication, QDialogButtonBox, QHeaderView, QMenu, QPushButton
+from PyQt6.QtWidgets import (
+ QApplication,
+ QDialogButtonBox,
+ QHeaderView,
+ QMenu,
+ QPushButton,
+)
+
from vorta.store.models import SettingsModel
from vorta.utils import borg_compat, get_asset, pretty_bytes, uses_dark_mode
from vorta.views.utils import get_colored_icon
-from .partials.treemodel import FileSystemItem, FileTreeModel, FileTreeSortProxyModel, path_to_str, relative_path
+
+from .partials.treemodel import (
+ FileSystemItem,
+ FileTreeModel,
+ FileTreeSortProxyModel,
+ path_to_str,
+ relative_path,
+)
uifile = get_asset("UI/extractdialog.ui")
ExtractDialogUI, ExtractDialogBase = uic.loadUiType(uifile)
diff --git a/src/vorta/views/import_window.py b/src/vorta/views/import_window.py
index b60a113f..b19212a7 100644
--- a/src/vorta/views/import_window.py
+++ b/src/vorta/views/import_window.py
@@ -1,5 +1,6 @@
from PyQt6 import QtCore
from PyQt6.QtWidgets import QMessageBox
+
from vorta.keyring.abc import VortaKeyring
from vorta.profile_export import VersionException
from vorta.store.connection import SCHEMA_VERSION
diff --git a/src/vorta/views/main_window.py b/src/vorta/views/main_window.py
index e2f05d33..ca0c2426 100644
--- a/src/vorta/views/main_window.py
+++ b/src/vorta/views/main_window.py
@@ -1,14 +1,29 @@
import logging
from pathlib import Path
+
from PyQt6 import QtCore, uic
from PyQt6.QtCore import QPoint
from PyQt6.QtGui import QFontMetrics, QKeySequence, QShortcut
-from PyQt6.QtWidgets import QApplication, QCheckBox, QFileDialog, QMenu, QMessageBox, QToolTip
+from PyQt6.QtWidgets import (
+ QApplication,
+ QCheckBox,
+ QFileDialog,
+ QMenu,
+ QMessageBox,
+ QToolTip,
+)
+
from vorta.profile_export import ImportFailedException, ProfileExport
from vorta.store.models import BackupProfileModel, SettingsModel
-from vorta.utils import borg_compat, get_asset, get_network_status_monitor, is_system_tray_available
+from vorta.utils import (
+ borg_compat,
+ get_asset,
+ get_network_status_monitor,
+ is_system_tray_available,
+)
from vorta.views.partials.loading_button import LoadingButton
from vorta.views.utils import get_colored_icon
+
from .archive_tab import ArchiveTab
from .export_window import ExportWindow
from .import_window import ImportWindow
diff --git a/src/vorta/views/misc_tab.py b/src/vorta/views/misc_tab.py
index ccc0c65f..087e30ef 100644
--- a/src/vorta/views/misc_tab.py
+++ b/src/vorta/views/misc_tab.py
@@ -1,7 +1,17 @@
import logging
+
from PyQt6 import uic
from PyQt6.QtCore import Qt
-from PyQt6.QtWidgets import QApplication, QCheckBox, QFormLayout, QHBoxLayout, QLabel, QSizePolicy, QSpacerItem
+from PyQt6.QtWidgets import (
+ QApplication,
+ QCheckBox,
+ QFormLayout,
+ QHBoxLayout,
+ QLabel,
+ QSizePolicy,
+ QSpacerItem,
+)
+
from vorta._version import __version__
from vorta.config import LOG_DIR
from vorta.i18n import translate
diff --git a/src/vorta/views/partials/tooltip_button.py b/src/vorta/views/partials/tooltip_button.py
index 6edfb61c..3204cb15 100644
--- a/src/vorta/views/partials/tooltip_button.py
+++ b/src/vorta/views/partials/tooltip_button.py
@@ -1,4 +1,5 @@
from typing import Optional
+
from PyQt6.QtCore import QCoreApplication, QEvent, QSize, Qt
from PyQt6.QtGui import QHelpEvent, QIcon, QMouseEvent, QPaintEvent
from PyQt6.QtWidgets import QSizePolicy, QStyle, QStylePainter, QToolTip, QWidget
diff --git a/src/vorta/views/partials/treemodel.py b/src/vorta/views/partials/treemodel.py
index dfb433a2..a184a542 100644
--- a/src/vorta/views/partials/treemodel.py
+++ b/src/vorta/views/partials/treemodel.py
@@ -9,7 +9,15 @@ import os.path as osp
from functools import reduce
from pathlib import PurePath
from typing import Generic, List, Optional, Sequence, Tuple, TypeVar, Union, overload
-from PyQt6.QtCore import QAbstractItemModel, QModelIndex, QObject, QSortFilterProxyModel, Qt, pyqtSignal
+
+from PyQt6.QtCore import (
+ QAbstractItemModel,
+ QModelIndex,
+ QObject,
+ QSortFilterProxyModel,
+ Qt,
+ pyqtSignal,
+)
#: A representation of a path
Path = Tuple[str, ...]
diff --git a/src/vorta/views/profile_add_edit_dialog.py b/src/vorta/views/profile_add_edit_dialog.py
index 9ccfa46f..56d040c1 100644
--- a/src/vorta/views/profile_add_edit_dialog.py
+++ b/src/vorta/views/profile_add_edit_dialog.py
@@ -1,5 +1,6 @@
from PyQt6 import QtCore, uic
from PyQt6.QtWidgets import QDialogButtonBox
+
from vorta.i18n import trans_late, translate
from vorta.store.models import BackupProfileModel
from vorta.utils import get_asset
diff --git a/src/vorta/views/repo_add_dialog.py b/src/vorta/views/repo_add_dialog.py
index 70e60a00..ddf584d3 100644
--- a/src/vorta/views/repo_add_dialog.py
+++ b/src/vorta/views/repo_add_dialog.py
@@ -1,13 +1,21 @@
import re
+
from PyQt6 import QtCore, uic
from PyQt6.QtGui import QAction
from PyQt6.QtWidgets import QApplication, QDialogButtonBox, QLineEdit
+
from vorta.borg.info_repo import BorgInfoRepoJob
from vorta.borg.init import BorgInitJob
from vorta.i18n import translate
from vorta.keyring.abc import VortaKeyring
from vorta.store.models import RepoModel
-from vorta.utils import borg_compat, choose_file_dialog, get_asset, get_private_keys, validate_passwords
+from vorta.utils import (
+ borg_compat,
+ choose_file_dialog,
+ get_asset,
+ get_private_keys,
+ validate_passwords,
+)
from vorta.views.utils import get_colored_icon
uifile = get_asset('UI/repoadd.ui')
diff --git a/src/vorta/views/repo_tab.py b/src/vorta/views/repo_tab.py
index 0b7a398b..2f6b52fb 100644
--- a/src/vorta/views/repo_tab.py
+++ b/src/vorta/views/repo_tab.py
@@ -1,10 +1,13 @@
import os
from pathlib import PurePath
+
from PyQt6 import QtCore, uic
from PyQt6.QtCore import QMimeData, QUrl
from PyQt6.QtWidgets import QApplication, QLayout, QMenu, QMessageBox
+
from vorta.store.models import ArchiveModel, BackupProfileMixin, RepoModel
from vorta.utils import borg_compat, get_asset, get_private_keys, pretty_bytes
+
from .repo_add_dialog import AddRepoWindow, ExistingRepoWindow
from .ssh_dialog import SSHAddWindow
from .utils import get_colored_icon
diff --git a/src/vorta/views/schedule_tab.py b/src/vorta/views/schedule_tab.py
index a72c782b..43de6730 100644
--- a/src/vorta/views/schedule_tab.py
+++ b/src/vorta/views/schedule_tab.py
@@ -1,6 +1,13 @@
from PyQt6 import QtCore, uic
from PyQt6.QtCore import QDateTime, QLocale
-from PyQt6.QtWidgets import QAbstractItemView, QApplication, QHeaderView, QListWidgetItem, QTableWidgetItem
+from PyQt6.QtWidgets import (
+ QAbstractItemView,
+ QApplication,
+ QHeaderView,
+ QListWidgetItem,
+ QTableWidgetItem,
+)
+
from vorta import application
from vorta.i18n import get_locale
from vorta.scheduler import ScheduleStatusType
diff --git a/src/vorta/views/source_tab.py b/src/vorta/views/source_tab.py
index 5aba63a8..13a48f5e 100644
--- a/src/vorta/views/source_tab.py
+++ b/src/vorta/views/source_tab.py
@@ -1,12 +1,26 @@
import logging
import os
from pathlib import PurePath
+
from PyQt6 import QtCore, QtGui, uic
from PyQt6.QtCore import QFileInfo, QMimeData, QPoint, Qt, QUrl, pyqtSlot
from PyQt6.QtGui import QShortcut
-from PyQt6.QtWidgets import QApplication, QHeaderView, QMenu, QMessageBox, QTableWidgetItem
+from PyQt6.QtWidgets import (
+ QApplication,
+ QHeaderView,
+ QMenu,
+ QMessageBox,
+ QTableWidgetItem,
+)
+
from vorta.store.models import BackupProfileMixin, SettingsModel, SourceFileModel
-from vorta.utils import FilePathInfoAsync, choose_file_dialog, get_asset, pretty_bytes, sort_sizes
+from vorta.utils import (
+ FilePathInfoAsync,
+ choose_file_dialog,
+ get_asset,
+ pretty_bytes,
+ sort_sizes,
+)
from vorta.views.utils import get_colored_icon
uifile = get_asset('UI/sourcetab.ui')
diff --git a/src/vorta/views/ssh_dialog.py b/src/vorta/views/ssh_dialog.py
index 74cb6e11..ab310284 100644
--- a/src/vorta/views/ssh_dialog.py
+++ b/src/vorta/views/ssh_dialog.py
@@ -1,7 +1,9 @@
import os
+
from PyQt6 import uic
from PyQt6.QtCore import QProcess, Qt
from PyQt6.QtWidgets import QApplication, QDialogButtonBox
+
from ..utils import get_asset
uifile = get_asset('UI/sshadd.ui')
diff --git a/src/vorta/views/utils.py b/src/vorta/views/utils.py
index 023b3384..870a8ccb 100644
--- a/src/vorta/views/utils.py
+++ b/src/vorta/views/utils.py
@@ -1,4 +1,5 @@
from PyQt6.QtGui import QIcon, QImage, QPixmap
+
from vorta.utils import get_asset, uses_dark_mode
diff --git a/tests/__init__.py b/tests/__init__.py
index 3744afe5..9ead5d47 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,5 +1,6 @@
import os
import sys
+
import vorta._version
resource_file = os.path.join(os.path.dirname(vorta._version.__file__), 'assets/icons')
diff --git a/tests/conftest.py b/tests/conftest.py
index 0e788297..03a8d22b 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,11 +2,12 @@ import os
import sys
from datetime import datetime as dt
from unittest.mock import MagicMock
+
import pytest
-from peewee import SqliteDatabase
import vorta
import vorta.application
import vorta.borg.jobs_manager
+from peewee import SqliteDatabase
from vorta.store.models import (
ArchiveModel,
BackupProfileModel,
diff --git a/tests/network_manager/test_network_manager.py b/tests/network_manager/test_network_manager.py
index 2c27a0d1..9e787a86 100644
--- a/tests/network_manager/test_network_manager.py
+++ b/tests/network_manager/test_network_manager.py
@@ -1,5 +1,6 @@
from datetime import datetime
from unittest.mock import MagicMock
+
import pytest
from vorta.network_status.abc import SystemWifiInfo
from vorta.network_status.network_manager import (
diff --git a/tests/test_archives.py b/tests/test_archives.py
index 16b0e243..a7627af1 100644
--- a/tests/test_archives.py
+++ b/tests/test_archives.py
@@ -1,10 +1,11 @@
from collections import namedtuple
+
import psutil
import pytest
-from PyQt6 import QtCore
import vorta.borg
import vorta.utils
import vorta.views.archive_tab
+from PyQt6 import QtCore
from vorta.store.models import ArchiveModel, BackupProfileModel
diff --git a/tests/test_diff.py b/tests/test_diff.py
index 31b28b7a..7db44b2e 100644
--- a/tests/test_diff.py
+++ b/tests/test_diff.py
@@ -1,10 +1,18 @@
from pathlib import PurePath
+
import pytest
-from PyQt6.QtCore import QDateTime, QItemSelectionModel, Qt
import vorta.borg
import vorta.utils
import vorta.views.archive_tab
-from vorta.views.diff_result import ChangeType, DiffData, DiffTree, FileType, parse_diff_json, parse_diff_lines
+from PyQt6.QtCore import QDateTime, QItemSelectionModel, Qt
+from vorta.views.diff_result import (
+ ChangeType,
+ DiffData,
+ DiffTree,
+ FileType,
+ parse_diff_json,
+ parse_diff_lines,
+)
@pytest.mark.parametrize(
diff --git a/tests/test_extract.py b/tests/test_extract.py
index 571fa313..f4fa2fdf 100644
--- a/tests/test_extract.py
+++ b/tests/test_extract.py
@@ -1,5 +1,5 @@
-from PyQt6.QtCore import QModelIndex, Qt
import vorta.borg
+from PyQt6.QtCore import QModelIndex, Qt
from vorta.views.extract_dialog import ExtractTree, FileData, FileType, parse_json_lines
from vorta.views.partials.treemodel import FileSystemItem
diff --git a/tests/test_import_export.py b/tests/test_import_export.py
index 81f970e6..47faef97 100644
--- a/tests/test_import_export.py
+++ b/tests/test_import_export.py
@@ -1,5 +1,6 @@
import os
from pathlib import Path
+
import pytest
from PyQt6 import QtCore
from PyQt6.QtWidgets import QDialogButtonBox, QFileDialog, QMessageBox
diff --git a/tests/test_lock.py b/tests/test_lock.py
index d472ee24..44d66cdf 100644
--- a/tests/test_lock.py
+++ b/tests/test_lock.py
@@ -1,7 +1,7 @@
import pytest
-from PyQt6 import QtCore
import vorta.application
import vorta.borg.borg_job
+from PyQt6 import QtCore
def test_create_perm_error(qapp, borg_json_output, mocker, qtbot):
diff --git a/tests/test_misc.py b/tests/test_misc.py
index fc0bc9c9..680ac9d8 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -2,10 +2,11 @@ import os
import sys
from pathlib import Path
from unittest.mock import Mock
+
import pytest
+import vorta.store.models
from PyQt6 import QtCore
from PyQt6.QtWidgets import QCheckBox, QFormLayout
-import vorta.store.models
def test_autostart(qapp, qtbot):
diff --git a/tests/test_notifications.py b/tests/test_notifications.py
index 3bf869af..c6ea1292 100644
--- a/tests/test_notifications.py
+++ b/tests/test_notifications.py
@@ -1,8 +1,9 @@
import sys
+
import pytest
-from PyQt6 import QtDBus
import vorta.borg
import vorta.notifications
+from PyQt6 import QtDBus
@pytest.mark.skipif(sys.platform != 'linux', reason="DBus notifications only on Linux")
diff --git a/tests/test_repo.py b/tests/test_repo.py
index 11f96204..bfbb75c7 100644
--- a/tests/test_repo.py
+++ b/tests/test_repo.py
@@ -1,9 +1,10 @@
import os
import uuid
+
import pytest
+import vorta.borg.borg_job
from PyQt6 import QtCore
from PyQt6.QtWidgets import QMessageBox
-import vorta.borg.borg_job
from vorta.keyring.abc import VortaKeyring
from vorta.store.models import ArchiveModel, EventLogModel, RepoModel
diff --git a/tests/test_schedule.py b/tests/test_schedule.py
index 06654d3e..0222a255 100644
--- a/tests/test_schedule.py
+++ b/tests/test_schedule.py
@@ -1,9 +1,10 @@
from datetime import datetime as dt
from datetime import timedelta
from unittest.mock import MagicMock
+
import pytest
-from PyQt6 import QtCore
import vorta.scheduler
+from PyQt6 import QtCore
from vorta.application import VortaApp
from vorta.store.models import BackupProfileModel, EventLogModel
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index 12c6eea8..0adee402 100644
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -2,10 +2,11 @@ from datetime import datetime as dt
from datetime import timedelta as td
from functools import wraps
from unittest.mock import MagicMock
+
import pytest
-from pytest import mark
import vorta.borg
import vorta.scheduler
+from pytest import mark
from vorta.scheduler import ScheduleStatus, ScheduleStatusType, VortaScheduler
from vorta.store.models import BackupProfileModel, EventLogModel
diff --git a/tests/test_treemodel.py b/tests/test_treemodel.py
index d60c359b..1b76d585 100644
--- a/tests/test_treemodel.py
+++ b/tests/test_treemodel.py
@@ -1,4 +1,5 @@
from pathlib import PurePath
+
import pytest
from PyQt6.QtCore import QModelIndex
from vorta.views.partials.treemodel import FileSystemItem, FileTreeModel
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 07585e3f..4d9c3d6f 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1,4 +1,5 @@
import uuid
+
from vorta.keyring.abc import VortaKeyring
from vorta.utils import find_best_unit_for_sizes, pretty_bytes