26
26
TMUXP_MAX_VERSION = None
27
27
28
28
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
+
29
46
class TmuxpPlugin :
30
47
def __init__ (
31
48
self ,
@@ -84,35 +101,35 @@ def __init__(
84
101
85
102
# Dependency versions
86
103
self .tmux_version = get_version ()
87
- self .libtmux_version = libtmux .__version__
104
+ self .libtmux_version = libtmux .__about__ . __version__
88
105
self .tmuxp_version = Version (__version__ )
89
106
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
96
113
if tmux_version_incompatible
97
114
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
104
121
if libtmux_version_incompatible
105
122
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
112
129
if tmuxp_version_incompatible
113
130
else [],
114
- } ,
115
- }
131
+ ) ,
132
+ )
116
133
117
134
self ._version_check ()
118
135
@@ -121,6 +138,7 @@ def _version_check(self) -> None:
121
138
Check all dependency versions for compatibility.
122
139
"""
123
140
for dep , constraints in self .version_constraints .items ():
141
+ assert isinstance (constraints , dict )
124
142
try :
125
143
assert self ._pass_version_check (** constraints )
126
144
except AssertionError :
0 commit comments