synodic-client 0.0.1.dev27__tar.gz → 0.0.1.dev28__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/PKG-INFO +3 -3
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/pyproject.toml +4 -9
- synodic_client-0.0.1.dev28/synodic_client/_version.py +1 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/startup.py +5 -5
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/updater.py +1 -2
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/test_startup.py +9 -7
- synodic_client-0.0.1.dev27/synodic_client/_version.py +0 -1
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/LICENSE.md +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/README.md +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/__main__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/bootstrap.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/icon.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/instance.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/qt.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/action_card.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/card.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/install.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/log_panel.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/screen.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/spinner.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/tray.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/theme.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/uri.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/cli.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/client.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/config.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/logging.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/protocol.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/py.typed +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/resolution.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/conftest.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/conftest.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/test_action_card.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/test_install_preview.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/test_log_panel.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/test_logging.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_cli.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_client_updater.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_client_version.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_config.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_examples.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_install.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_resolution.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_updater.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/test_uri.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/__init__.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/conftest.py +0 -0
- {synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/test_protocol.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: synodic_client
|
|
3
|
-
Version: 0.0.1.
|
|
3
|
+
Version: 0.0.1.dev28
|
|
4
4
|
Author-Email: Synodic Software <contact@synodic.software>
|
|
5
5
|
License: LGPL-3.0-or-later
|
|
6
6
|
Project-URL: homepage, https://github.com/synodic/synodic-client
|
|
@@ -8,10 +8,10 @@ Project-URL: repository, https://github.com/synodic/synodic-client
|
|
|
8
8
|
Requires-Python: <3.15,>=3.14
|
|
9
9
|
Requires-Dist: pyside6>=6.10.2
|
|
10
10
|
Requires-Dist: packaging>=26.0
|
|
11
|
-
Requires-Dist: porringer>=0.2.1.
|
|
11
|
+
Requires-Dist: porringer>=0.2.1.dev48
|
|
12
12
|
Requires-Dist: qasync>=0.28.0
|
|
13
13
|
Requires-Dist: velopack>=0.0.1369.dev7516
|
|
14
|
-
Requires-Dist: typer>=0.24.
|
|
14
|
+
Requires-Dist: typer>=0.24.1
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
|
|
17
17
|
# Synodic Client
|
|
@@ -10,12 +10,12 @@ requires-python = ">=3.14, <3.15"
|
|
|
10
10
|
dependencies = [
|
|
11
11
|
"pyside6>=6.10.2",
|
|
12
12
|
"packaging>=26.0",
|
|
13
|
-
"porringer>=0.2.1.
|
|
13
|
+
"porringer>=0.2.1.dev48",
|
|
14
14
|
"qasync>=0.28.0",
|
|
15
15
|
"velopack>=0.0.1369.dev7516",
|
|
16
|
-
"typer>=0.24.
|
|
16
|
+
"typer>=0.24.1",
|
|
17
17
|
]
|
|
18
|
-
version = "0.0.1.
|
|
18
|
+
version = "0.0.1.dev28"
|
|
19
19
|
|
|
20
20
|
[project.license]
|
|
21
21
|
text = "LGPL-3.0-or-later"
|
|
@@ -36,7 +36,7 @@ build = [
|
|
|
36
36
|
]
|
|
37
37
|
lint = [
|
|
38
38
|
"ruff>=0.15.2",
|
|
39
|
-
"pyrefly>=0.
|
|
39
|
+
"pyrefly>=0.54.0",
|
|
40
40
|
]
|
|
41
41
|
test = [
|
|
42
42
|
"pytest>=9.0.2",
|
|
@@ -128,11 +128,6 @@ data = [
|
|
|
128
128
|
{ path = "data/**/*", relative-to = "data/" },
|
|
129
129
|
]
|
|
130
130
|
|
|
131
|
-
[tool.pdm.dev-dependencies]
|
|
132
|
-
dev = [
|
|
133
|
-
"-e file:///d:/Projects/Synodic/porringer#egg=porringer",
|
|
134
|
-
]
|
|
135
|
-
|
|
136
131
|
[build-system]
|
|
137
132
|
build-backend = "pdm.backend"
|
|
138
133
|
requires = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.0.1.dev28'
|
|
@@ -15,14 +15,14 @@ logger = logging.getLogger(__name__)
|
|
|
15
15
|
STARTUP_VALUE_NAME = 'SynodicClient'
|
|
16
16
|
"""Registry value name used in the ``Run`` key."""
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
RUN_KEY_PATH = r'Software\Microsoft\Windows\CurrentVersion\Run'
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
if sys.platform == 'win32':
|
|
22
22
|
import winreg
|
|
23
23
|
|
|
24
24
|
def register_startup(exe_path: str) -> None:
|
|
25
|
-
"""Register the application to start automatically on login.
|
|
25
|
+
r"""Register the application to start automatically on login.
|
|
26
26
|
|
|
27
27
|
Writes a value to ``HKCU\Software\Microsoft\Windows\CurrentVersion\Run``
|
|
28
28
|
pointing to *exe_path*. Calling this repeatedly is safe and will
|
|
@@ -32,7 +32,7 @@ if sys.platform == 'win32':
|
|
|
32
32
|
exe_path: Absolute path to the application executable.
|
|
33
33
|
"""
|
|
34
34
|
try:
|
|
35
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
35
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_SET_VALUE) as key:
|
|
36
36
|
winreg.SetValueEx(key, STARTUP_VALUE_NAME, 0, winreg.REG_SZ, f'"{exe_path}"')
|
|
37
37
|
logger.info('Registered auto-startup -> %s', exe_path)
|
|
38
38
|
except OSError:
|
|
@@ -44,7 +44,7 @@ if sys.platform == 'win32':
|
|
|
44
44
|
Silently succeeds if the value does not exist.
|
|
45
45
|
"""
|
|
46
46
|
try:
|
|
47
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
47
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_SET_VALUE) as key:
|
|
48
48
|
winreg.DeleteValue(key, STARTUP_VALUE_NAME)
|
|
49
49
|
logger.info('Removed auto-startup registration')
|
|
50
50
|
except FileNotFoundError:
|
|
@@ -59,7 +59,7 @@ if sys.platform == 'win32':
|
|
|
59
59
|
``True`` if the ``Run`` key contains the startup value.
|
|
60
60
|
"""
|
|
61
61
|
try:
|
|
62
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
62
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_QUERY_VALUE) as key:
|
|
63
63
|
winreg.QueryValueEx(key, STARTUP_VALUE_NAME)
|
|
64
64
|
return True
|
|
65
65
|
except FileNotFoundError:
|
|
@@ -18,6 +18,7 @@ import velopack
|
|
|
18
18
|
from packaging.version import Version
|
|
19
19
|
|
|
20
20
|
from synodic_client.protocol import remove_protocol
|
|
21
|
+
from synodic_client.startup import remove_startup
|
|
21
22
|
|
|
22
23
|
logger = logging.getLogger(__name__)
|
|
23
24
|
|
|
@@ -380,8 +381,6 @@ def _on_before_uninstall(version: str) -> None:
|
|
|
380
381
|
Args:
|
|
381
382
|
version: The current version string (provided by Velopack).
|
|
382
383
|
"""
|
|
383
|
-
from synodic_client.startup import remove_startup
|
|
384
|
-
|
|
385
384
|
logger.info('Velopack uninstall hook fired for version %s', version)
|
|
386
385
|
try:
|
|
387
386
|
remove_protocol()
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/test_startup.py
RENAMED
|
@@ -6,7 +6,7 @@ from unittest.mock import MagicMock, patch
|
|
|
6
6
|
import pytest
|
|
7
7
|
|
|
8
8
|
from synodic_client.startup import (
|
|
9
|
-
|
|
9
|
+
RUN_KEY_PATH,
|
|
10
10
|
STARTUP_VALUE_NAME,
|
|
11
11
|
is_startup_registered,
|
|
12
12
|
register_startup,
|
|
@@ -35,7 +35,7 @@ class TestRegisterStartup:
|
|
|
35
35
|
|
|
36
36
|
mock_open.assert_called_once_with(
|
|
37
37
|
winreg.HKEY_CURRENT_USER,
|
|
38
|
-
|
|
38
|
+
RUN_KEY_PATH,
|
|
39
39
|
0,
|
|
40
40
|
winreg.KEY_SET_VALUE,
|
|
41
41
|
)
|
|
@@ -137,7 +137,7 @@ class TestStartupIntegration:
|
|
|
137
137
|
with patch('synodic_client.startup.STARTUP_VALUE_NAME', _TEST_VALUE_NAME):
|
|
138
138
|
register_startup(test_exe)
|
|
139
139
|
|
|
140
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
140
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_QUERY_VALUE) as key:
|
|
141
141
|
value, reg_type = winreg.QueryValueEx(key, _TEST_VALUE_NAME)
|
|
142
142
|
assert reg_type == winreg.REG_SZ
|
|
143
143
|
assert test_exe in value
|
|
@@ -153,9 +153,11 @@ class TestStartupIntegration:
|
|
|
153
153
|
register_startup(r'C:\test\synodic_test.exe')
|
|
154
154
|
remove_startup()
|
|
155
155
|
|
|
156
|
-
with
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
with (
|
|
157
|
+
winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_QUERY_VALUE) as key,
|
|
158
|
+
pytest.raises(FileNotFoundError),
|
|
159
|
+
):
|
|
160
|
+
winreg.QueryValueEx(key, _TEST_VALUE_NAME)
|
|
159
161
|
|
|
160
162
|
@staticmethod
|
|
161
163
|
def test_register_is_idempotent() -> None:
|
|
@@ -168,7 +170,7 @@ class TestStartupIntegration:
|
|
|
168
170
|
register_startup(exe_v1)
|
|
169
171
|
register_startup(exe_v2)
|
|
170
172
|
|
|
171
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
173
|
+
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, RUN_KEY_PATH, 0, winreg.KEY_QUERY_VALUE) as key:
|
|
172
174
|
value, _ = winreg.QueryValueEx(key, _TEST_VALUE_NAME)
|
|
173
175
|
assert exe_v2 in value
|
|
174
176
|
assert exe_v1 not in value
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.0.1.dev27'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/__init__.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/bootstrap.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/icon.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/instance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/card.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/screen/tray.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/synodic_client/application/theme.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/qt/test_install_preview.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev27 → synodic_client-0.0.1.dev28}/tests/unit/windows/test_protocol.py
RENAMED
|
File without changes
|