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.
Files changed (37) hide show
  1. {plotruler-0.1.3 → plotruler-0.1.4}/PKG-INFO +1 -1
  2. {plotruler-0.1.3 → plotruler-0.1.4}/build/version_info.txt +4 -4
  3. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/__init__.py +1 -1
  4. {plotruler-0.1.3 → plotruler-0.1.4}/pyproject.toml +1 -1
  5. {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_hotkey.py +15 -3
  6. {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_win_hittest.py +10 -0
  7. {plotruler-0.1.3 → plotruler-0.1.4}/.github/workflows/publish.yml +0 -0
  8. {plotruler-0.1.3 → plotruler-0.1.4}/.gitignore +0 -0
  9. {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/opencode.json +0 -0
  10. {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/check.mjs +0 -0
  11. {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/relaunch.mjs +0 -0
  12. {plotruler-0.1.3 → plotruler-0.1.4}/.opencode/scripts/verify.mjs +0 -0
  13. {plotruler-0.1.3 → plotruler-0.1.4}/AGENTS.md +0 -0
  14. {plotruler-0.1.3 → plotruler-0.1.4}/LICENSE +0 -0
  15. {plotruler-0.1.3 → plotruler-0.1.4}/README.md +0 -0
  16. {plotruler-0.1.3 → plotruler-0.1.4}/build/build.py +0 -0
  17. {plotruler-0.1.3 → plotruler-0.1.4}/build/entry.py +0 -0
  18. {plotruler-0.1.3 → plotruler-0.1.4}/build/install_linux.sh +0 -0
  19. {plotruler-0.1.3 → plotruler-0.1.4}/build/make_ico.py +0 -0
  20. {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.desktop +0 -0
  21. {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.ico +0 -0
  22. {plotruler-0.1.3 → plotruler-0.1.4}/build/plotruler.spec +0 -0
  23. {plotruler-0.1.3 → plotruler-0.1.4}/build/publish_pypi.sh +0 -0
  24. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/__main__.py +0 -0
  25. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/core.py +0 -0
  26. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/format.py +0 -0
  27. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/hotkey.py +0 -0
  28. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/overlay.py +0 -0
  29. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/settings.py +0 -0
  30. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/storage.py +0 -0
  31. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/titlebar.py +0 -0
  32. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/tray.py +0 -0
  33. {plotruler-0.1.3 → plotruler-0.1.4}/plotruler/win_hittest.py +0 -0
  34. {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_core.py +0 -0
  35. {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_format.py +0 -0
  36. {plotruler-0.1.3 → plotruler-0.1.4}/tests/test_session.py +0 -0
  37. {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
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, 3, 0),
9
- prodvers=(0, 1, 3, 0),
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.3"),
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.3"),
29
+ StringStruct("ProductVersion", "0.1.4"),
30
30
  ],
31
31
  )
32
32
  ]
@@ -1,3 +1,3 @@
1
1
  """PlotRuler — read (X, Y) values off an on-screen graph."""
2
2
 
3
- __version__ = "0.1.3"
3
+ __version__ = "0.1.4"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "plotruler"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  description = "Read (X, Y) values off an on-screen graph with a translucent overlay"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -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
- assert hotkey.GlobalHotkey(hotkey.DEFAULT_COMBO).register() is False
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