Add type hinting to desktop.py

This commit is contained in:
Andrew Senetar 2022-05-09 01:15:25 -05:00
parent f587c7b5d8
commit f7ed1c801c
Signed by: arsenetar
GPG Key ID: C63300DCE48AB2F1
2 changed files with 20 additions and 14 deletions

View File

@ -134,7 +134,7 @@ class DupeGuru(Broadcaster):
logging.debug("Debug mode enabled")
Broadcaster.__init__(self)
self.view = view
self.appdata = desktop.special_folder_path(desktop.SpecialFolder.APPDATA, appname=self.NAME, portable=portable)
self.appdata = desktop.special_folder_path(desktop.SpecialFolder.APPDATA, portable=portable)
if not op.exists(self.appdata):
os.makedirs(self.appdata)
self.app_mode = AppMode.STANDARD

View File

@ -6,31 +6,33 @@
# which should be included with this package. The terms are also available at
# http://www.gnu.org/licenses/gpl-3.0.html
from enum import Enum
from os import PathLike
import os.path as op
import logging
class SpecialFolder:
class SpecialFolder(Enum):
APPDATA = 1
CACHE = 2
def open_url(url):
def open_url(url: str) -> None:
"""Open ``url`` with the default browser."""
_open_url(url)
def open_path(path):
def open_path(path: PathLike) -> None:
"""Open ``path`` with its associated application."""
_open_path(str(path))
def reveal_path(path):
def reveal_path(path: PathLike) -> None:
"""Open the folder containing ``path`` with the default file browser."""
_reveal_path(str(path))
def special_folder_path(special_folder, appname=None, portable=False):
def special_folder_path(special_folder: SpecialFolder, portable: bool = False) -> str:
"""Returns the path of ``special_folder``.
``special_folder`` is a SpecialFolder.* const. The result is the special folder for the current
@ -38,7 +40,7 @@ def special_folder_path(special_folder, appname=None, portable=False):
You can override the application name with ``appname``. This argument is ingored under Qt.
"""
return _special_folder_path(special_folder, appname, portable=portable)
return _special_folder_path(special_folder, portable=portable)
try:
@ -49,14 +51,14 @@ try:
from hscommon.plat import ISWINDOWS, ISOSX
import subprocess
def _open_url(url):
def _open_url(url: str) -> None:
QDesktopServices.openUrl(QUrl(url))
def _open_path(path):
def _open_path(path: str) -> None:
url = QUrl.fromLocalFile(str(path))
QDesktopServices.openUrl(url)
def _reveal_path(path):
def _reveal_path(path: str) -> None:
if ISWINDOWS:
subprocess.run(["explorer", "/select,", op.abspath(path)])
elif ISOSX:
@ -64,7 +66,7 @@ try:
else:
_open_path(op.dirname(str(path)))
def _special_folder_path(special_folder, appname=None, portable=False):
def _special_folder_path(special_folder: SpecialFolder, portable: bool = False) -> str:
if special_folder == SpecialFolder.CACHE:
if ISWINDOWS and portable:
folder = op.join(executable_folder(), "cache")
@ -79,13 +81,17 @@ except ImportError:
# weird situation. Let's just have dummy fallbacks.
logging.warning("Can't setup desktop functions!")
def _open_path(path):
def _open_url(url: str) -> None:
# Dummy for tests
pass
def _reveal_path(path):
def _open_path(path: str) -> None:
# Dummy for tests
pass
def _special_folder_path(special_folder, appname=None, portable=False):
def _reveal_path(path: str) -> None:
# Dummy for tests
pass
def _special_folder_path(special_folder: SpecialFolder, portable: bool = False) -> str:
return "/tmp"