Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,12 @@ on:
- master
paths:
- ".github/workflows/ci.yml"
- "docs/**"
- ".readthedocs.yaml"
- "pyproject.toml"
- "mypy.ini"
- "**/*.py"
pull_request:
paths:
- ".github/workflows/ci.yml"
- "docs/**"
- ".readthedocs.yaml"
- "pyproject.toml"
- "mypy.ini"
- "**/*.py"
Expand Down Expand Up @@ -61,7 +57,7 @@ jobs:
# Test on all supported runtime combinations
matrix:
# Arm runners are faster (as long as the same wheels are available)
# PyWinCtl doesn't have any code that should act differently per architecture
# This project doesn't have any code that should act differently per architecture
os: [windows-11-arm, ubuntu-24.04-arm, macos-latest]
# TODO: Run tests in parallel on free-threaded python to catch free-threading issues
# See: https://py-free-threading.github.io/testing/
Expand Down
5 changes: 3 additions & 2 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
0.4.02, 2026/06/16 -- ALL: Replaced bare `except:` clauses with `except Exception:`, preventing accidental suppression of system-exit signals (KeyboardInterrupt, SystemExit) during error handling.
ALL: Fixed WatchDog.stop() not joining the worker thread. Known to have been causing Xlib race conditions on Linux
0.5, 2026/XX/XX -- ALL: Replaced bare `except:` clauses with `except Exception:`, preventing accidental suppression of system-exit signals (KeyboardInterrupt, SystemExit) during error handling.
ALL: Fixed WatchDog.stop() not joining the worker thread. Known to have been causing Xlib race conditions on Linux
ALL: Removed runtime dependency on `typing_extensions`
0.4.01, 2024/09/22 -- ALL: Added getAllWindowsDict() general function. Added getPID() method.
LINUX: Added bad window filter to check for window.id == 0
0.4, 2023/10/11 -- ALL: Added getMonitor() as alias for getDisplay()
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ dependencies = [
"python-xlib>=0.21; sys_platform == 'linux'",
"pywin32>=302; sys_platform == 'win32'",
"pywinbox>=0.7",
"typing_extensions>=4.4.0",
]

[dependency-groups]
Expand All @@ -82,6 +81,7 @@ dev = [
"ruff>=0.15.16",
"types-python-xlib>=0.32",
"types-pywin32>=305.0.0.3",
"typing_extensions>=4.4.0",
]

[tool.uv]
Expand Down
1 change: 0 additions & 1 deletion src/pywinctl/_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1054,4 +1054,3 @@ class _WINDICT(TypedDict): # noqa: PYI049 # Private symbol imported by internal
"PyWinCtl currently does not support this platform. "
+ "If you think you can help, please contribute! https://github.com/Kalmat/PyWinCtl"
)
Window = Window
8 changes: 4 additions & 4 deletions src/pywinctl/_pywinctl_macos.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
import subprocess
import threading
import time
from collections.abc import Iterable
from typing import Any, cast, ClassVar
from collections.abc import Sequence
from typing_extensions import TypeAlias, TypedDict, Literal
from collections.abc import Iterable, Sequence
from typing import Any, cast, ClassVar, TYPE_CHECKING, TypedDict, Literal

import AppKit
import Quartz

from ._main import BaseWindow, Re, _WatchDog, _findMonitorName, _WINDATA, _WINDICT
from pywinbox import Size, Point, Rect, pointInBox

if TYPE_CHECKING:
from typing_extensions import TypeAlias

Incomplete: TypeAlias = Any
Attribute: TypeAlias = Sequence['tuple[str, str, bool, str]']
Expand Down
5 changes: 2 additions & 3 deletions src/pywinctl/_pywinctl_win.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
import time
from collections.abc import Sequence
from ctypes import wintypes
from typing import cast, Any, TYPE_CHECKING
from typing_extensions import NotRequired, TypedDict

from typing import cast, Any, TYPE_CHECKING, TypedDict

import win32gui_struct
import win32process
Expand All @@ -27,6 +25,7 @@
from pywinbox import Size, Point, Rect, pointInBox

if TYPE_CHECKING:
from typing_extensions import NotRequired
from win32.lib.win32gui_struct import _MENUITEMINFO, _MENUINFO

# WARNING: Changes are not immediately applied, specially for hide/show (unmap/map)
Expand Down
4 changes: 2 additions & 2 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading