plotruler 0.1.3__tar.gz → 0.1.4__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.
- {plotruler-0.1.3 → plotruler-0.1.4}/PKG-INFO +1 -1
- {plotruler-0.1.3 → plotruler-0.1.4}/build/version_info.txt +4 -4
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/__init__.py +1 -1
- {plotruler-0.1.3 → plotruler-0.1.4}/pyproject.toml +1 -1
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_hotkey.py +15 -3
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_win_hittest.py +10 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.github/workflows/publish.yml +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.gitignore +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/opencode.json +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/check.mjs +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/relaunch.mjs +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/verify.mjs +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/AGENTS.md +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/LICENSE +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/README.md +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/build.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/entry.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/install_linux.sh +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/make_ico.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.desktop +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.ico +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.spec +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/build/publish_pypi.sh +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/__main__.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/core.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/format.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/hotkey.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/overlay.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/settings.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/storage.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/titlebar.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/tray.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/win_hittest.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_core.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_format.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_session.py +0 -0
- {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_storage.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: plotruler
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Read (X, Y) values off an on-screen graph with a translucent overlay
|
|
5
5
|
Project-URL: Homepage, https://github.com/endolith/plotruler
|
|
6
6
|
Project-URL: Repository, https://github.com/endolith/plotruler
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
VSVersionInfo(
|
|
7
7
|
ffi=FixedFileInfo(
|
|
8
|
-
filevers=(0, 1,
|
|
9
|
-
prodvers=(0, 1,
|
|
8
|
+
filevers=(0, 1, 4, 0),
|
|
9
|
+
prodvers=(0, 1, 4, 0),
|
|
10
10
|
mask=0x3f,
|
|
11
11
|
flags=0x0,
|
|
12
12
|
OS=0x40004,
|
|
@@ -22,11 +22,11 @@ VSVersionInfo(
|
|
|
22
22
|
[
|
|
23
23
|
StringStruct("CompanyName", "PlotRuler"),
|
|
24
24
|
StringStruct("FileDescription", "PlotRuler - read (X,Y) off an on-screen graph"),
|
|
25
|
-
StringStruct("FileVersion", "0.1.
|
|
25
|
+
StringStruct("FileVersion", "0.1.4"),
|
|
26
26
|
StringStruct("InternalName", "PlotRuler"),
|
|
27
27
|
StringStruct("OriginalFilename", "PlotRuler.exe"),
|
|
28
28
|
StringStruct("ProductName", "PlotRuler"),
|
|
29
|
-
StringStruct("ProductVersion", "0.1.
|
|
29
|
+
StringStruct("ProductVersion", "0.1.4"),
|
|
30
30
|
],
|
|
31
31
|
)
|
|
32
32
|
]
|
|
@@ -100,13 +100,25 @@ def test_qmodifiers_to_names_maps_meta_to_win():
|
|
|
100
100
|
|
|
101
101
|
def test_registration_is_noop_off_windows():
|
|
102
102
|
"""register() must fail closed on non-Windows rather than calling the
|
|
103
|
-
missing ctypes.windll, so the hotkey is simply unavailable.
|
|
104
|
-
|
|
103
|
+
missing ctypes.windll, so the hotkey is simply unavailable. On Windows
|
|
104
|
+
the hotkey registers (or returns True when already registered)."""
|
|
105
|
+
combo = hotkey.GlobalHotkey(hotkey.DEFAULT_COMBO)
|
|
106
|
+
try:
|
|
107
|
+
registered = combo.register()
|
|
108
|
+
finally:
|
|
109
|
+
combo.unregister()
|
|
110
|
+
if hotkey._IS_WINDOWS:
|
|
111
|
+
assert registered is True
|
|
112
|
+
else:
|
|
113
|
+
assert registered is False
|
|
105
114
|
|
|
106
115
|
|
|
107
116
|
def test_native_event_filter_is_noop_off_windows():
|
|
108
117
|
"""The native filter must decline every event on non-Windows instead of
|
|
109
118
|
dereferencing ctypes.windll, so an unrelated platform event cannot
|
|
110
|
-
crash the process.
|
|
119
|
+
crash the process. On Windows the filter requires a real MSG pointer,
|
|
120
|
+
so this is only meaningful off-Windows."""
|
|
121
|
+
if hotkey._IS_WINDOWS:
|
|
122
|
+
return
|
|
111
123
|
hk = hotkey.GlobalHotkey(hotkey.DEFAULT_COMBO)
|
|
112
124
|
assert hk.nativeEventFilter(b"windows_generic_MSG", 0) == (False, 0)
|
|
@@ -5,10 +5,20 @@ was `wintypes is None`, but ctypes.wintypes imports fine on Linux, so the
|
|
|
5
5
|
frame calls would reach ctypes.windll and die with AttributeError. These
|
|
6
6
|
tests pin the behavior: every Win32 entry point returns its no-op value
|
|
7
7
|
without touching the window or ctypes.windll.
|
|
8
|
+
|
|
9
|
+
The behavior under test only exists off Windows, so the whole module is
|
|
10
|
+
skipped on Windows (where the shim is real, not a no-op).
|
|
8
11
|
"""
|
|
9
12
|
|
|
13
|
+
import pytest
|
|
14
|
+
|
|
10
15
|
from plotruler import win_hittest
|
|
11
16
|
|
|
17
|
+
pytestmark = pytest.mark.skipif(
|
|
18
|
+
win_hittest._IS_WINDOWS,
|
|
19
|
+
reason="Win32 shim is active on Windows; no-op is off-Windows only",
|
|
20
|
+
)
|
|
21
|
+
|
|
12
22
|
|
|
13
23
|
def test_platform_gate_false_on_non_windows():
|
|
14
24
|
"""The Win32 gate must be off when not actually running on Windows, so
|
|
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
|
|
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
|
|
File without changes
|