Publish workflow #2

Merged
mathias2784 merged 11 commits from publish-workflow into master 2026-10-01 19:31:35 +00:00
2 changed files with 79 additions and 0 deletions
Showing only changes of commit 36eff17046 - Show all commits
+44
View File
@@ -0,0 +1,44 @@
import tkinter
import tkinter.filedialog
def get_dir_path_from_dialog(**kwargs):
"""Open a native directory picker and return the selected path.
All ``kwargs`` are passed through unchanged to
:func:`tkinter.filedialog.askdirectory`. The most useful ones:
- ``initialdir`` (str): directory the dialog opens in.
- ``title`` (str): title of the dialog window.
- ``mustexist`` (bool, default ``True``): only return existing directories.
Returns an empty string if the user cancels the dialog.
"""
root = tkinter.Tk()
root.withdraw()
try:
return tkinter.filedialog.askdirectory(**kwargs)
finally:
root.destroy()
def get_file_path_from_dialog(**kwargs):
"""Open a native file picker and return the selected file path.
All ``kwargs`` are passed through unchanged to
:func:`tkinter.filedialog.askopenfilename`. The most useful ones:
- ``initialdir`` (str): directory the dialog opens in.
- ``initialfile`` (str): file pre-selected in the dialog.
- ``filetypes`` (list of (label, pattern) tuples): restrict which files
are shown, e.g. ``[("Text files", "*.txt"), ("All files", "*")]``.
- ``title`` (str): title of the dialog window.
Returns an empty string if the user cancels the dialog.
"""
root = tkinter.Tk()
root.withdraw()
try:
return tkinter.filedialog.askopenfilename(**kwargs)
finally:
root.destroy()
+35
View File
@@ -0,0 +1,35 @@
from unittest import mock
from utils.filedialogs import get_dir_path_from_dialog, get_file_path_from_dialog
def test_get_dir_path_from_dialog_returns_selected_path():
with mock.patch("tkinter.Tk"), mock.patch(
"tkinter.filedialog.askdirectory", return_value="/tmp/somewhere"
) as dialog:
result = get_dir_path_from_dialog(initialdir="/tmp", title="Pick")
assert result == "/tmp/somewhere"
dialog.assert_called_once_with(initialdir="/tmp", title="Pick")
def test_get_dir_path_from_dialog_returns_empty_string_on_cancel():
with mock.patch("tkinter.Tk"), mock.patch(
"tkinter.filedialog.askdirectory", return_value=""
):
assert get_dir_path_from_dialog() == ""
def test_get_file_path_from_dialog_returns_selected_path():
with mock.patch("tkinter.Tk"), mock.patch(
"tkinter.filedialog.askopenfilename", return_value="/tmp/file.txt"
) as dialog:
result = get_file_path_from_dialog(filetypes=[("Text", "*.txt")])
assert result == "/tmp/file.txt"
dialog.assert_called_once_with(filetypes=[("Text", "*.txt")])
def test_get_file_path_from_dialog_returns_empty_string_on_cancel():
with mock.patch("tkinter.Tk"), mock.patch(
"tkinter.filedialog.askopenfilename", return_value=""
):
assert get_file_path_from_dialog() == ""