27
27
28
28
29
29
if t .TYPE_CHECKING :
30
- from typing_extensions import TypedDict
30
+ from typing_extensions import TypedDict , NotRequired
31
31
32
32
class VersionConstraints (TypedDict ):
33
33
version : t .Union [Version , str ]
@@ -40,6 +40,18 @@ class TmuxpPluginVersionConstraints(TypedDict):
40
40
tmuxp : VersionConstraints
41
41
libtmux : VersionConstraints
42
42
43
+ class ConfigSchema (TypedDict ):
44
+ plugin_name : NotRequired [str ]
45
+ tmux_min_version : NotRequired [str ]
46
+ tmux_max_version : NotRequired [str ]
47
+ tmux_version_incompatible : NotRequired [t .List [str ]]
48
+ libtmux_min_version : NotRequired [str ]
49
+ libtmux_max_version : NotRequired [str ]
50
+ libtmux_version_incompatible : NotRequired [t .List [str ]]
51
+ tmuxp_min_version : NotRequired [str ]
52
+ tmuxp_max_version : NotRequired [str ]
53
+ tmuxp_version_incompatible : NotRequired [t .List [str ]]
54
+
43
55
44
56
class Config (t .TypedDict ):
45
57
plugin_name : str
@@ -69,7 +81,7 @@ class Config(t.TypedDict):
69
81
70
82
71
83
def setup_config (
72
- config : dict [ str , t . Any ] , default_config : "Config" = DEFAULT_CONFIG
84
+ config : "ConfigSchema" , default_config : "Config" = DEFAULT_CONFIG
73
85
) -> t .TypeGuard ["Config" ]:
74
86
new_config = config .copy ()
75
87
for default_key , default_value in default_config .items ():
0 commit comments