Skip to content

Commit c58f833

Browse files
committed
chore(plugin): Add typings
1 parent 75eed3a commit c58f833

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

src/tmuxp/plugin.py

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,23 @@
2626
TMUXP_MAX_VERSION = None
2727

2828

29+
class VersionConstraints(t.TypedDict):
30+
version: t.Union[Version, str]
31+
vmin: str
32+
vmax: t.Optional[str]
33+
incompatible: t.List[t.Union[t.Any, str]]
34+
35+
36+
class TmuxpPluginVersionConstraints(t.TypedDict):
37+
tmux: VersionConstraints
38+
tmuxp: VersionConstraints
39+
libtmux: VersionConstraints
40+
41+
42+
if t.TYPE_CHECKING:
43+
from typing_extensions import Unpack
44+
45+
2946
class TmuxpPlugin:
3047
def __init__(
3148
self,
@@ -84,35 +101,35 @@ def __init__(
84101

85102
# Dependency versions
86103
self.tmux_version = get_version()
87-
self.libtmux_version = libtmux.__version__
104+
self.libtmux_version = libtmux.__about__.__version__
88105
self.tmuxp_version = Version(__version__)
89106

90-
self.version_constraints = {
91-
"tmux": {
92-
"version": self.tmux_version,
93-
"vmin": tmux_min_version,
94-
"vmax": tmux_max_version,
95-
"incompatible": tmux_version_incompatible
107+
self.version_constraints = TmuxpPluginVersionConstraints(
108+
tmux=VersionConstraints(
109+
version=self.tmux_version,
110+
vmin=tmux_min_version,
111+
vmax=tmux_max_version,
112+
incompatible=tmux_version_incompatible
96113
if tmux_version_incompatible
97114
else [],
98-
},
99-
"libtmux": {
100-
"version": self.libtmux_version,
101-
"vmin": libtmux_min_version,
102-
"vmax": libtmux_max_version,
103-
"incompatible": libtmux_version_incompatible
115+
),
116+
libtmux=VersionConstraints(
117+
version=self.libtmux_version,
118+
vmin=libtmux_min_version,
119+
vmax=libtmux_max_version,
120+
incompatible=libtmux_version_incompatible
104121
if libtmux_version_incompatible
105122
else [],
106-
},
107-
"tmuxp": {
108-
"version": self.tmuxp_version,
109-
"vmin": tmuxp_min_version,
110-
"vmax": tmuxp_max_version,
111-
"incompatible": tmuxp_version_incompatible
123+
),
124+
tmuxp=VersionConstraints(
125+
version=self.tmuxp_version,
126+
vmin=tmuxp_min_version,
127+
vmax=tmuxp_max_version,
128+
incompatible=tmuxp_version_incompatible
112129
if tmuxp_version_incompatible
113130
else [],
114-
},
115-
}
131+
),
132+
)
116133

117134
self._version_check()
118135

@@ -121,6 +138,7 @@ def _version_check(self) -> None:
121138
Check all dependency versions for compatibility.
122139
"""
123140
for dep, constraints in self.version_constraints.items():
141+
assert isinstance(constraints, dict)
124142
try:
125143
assert self._pass_version_check(**constraints)
126144
except AssertionError:

0 commit comments

Comments
 (0)