|
13 | 13 | import typing as t
|
14 | 14 | from collections.abc import MutableMapping
|
15 | 15 | from distutils.version import LooseVersion
|
16 |
| -from typing import Any, Dict, Generic, List, Optional, TypeVar, Union, overload |
| 16 | +from typing import ( |
| 17 | + Any, |
| 18 | + Dict, |
| 19 | + Generic, |
| 20 | + KeysView, |
| 21 | + List, |
| 22 | + Optional, |
| 23 | + TypeVar, |
| 24 | + Union, |
| 25 | + overload, |
| 26 | +) |
17 | 27 |
|
18 | 28 | from . import exc
|
19 | 29 | from ._compat import console_to_str, str_from_console
|
@@ -248,6 +258,7 @@ def __init__(self, *args: t.Any, **kwargs: t.Any) -> None:
|
248 | 258 | returncode = self.process.returncode
|
249 | 259 | except Exception as e:
|
250 | 260 | logger.error(f"Exception for {subprocess.list2cmdline(cmd)}: \n{e}")
|
| 261 | + raise |
251 | 262 |
|
252 | 263 | self.returncode = returncode
|
253 | 264 |
|
@@ -287,31 +298,38 @@ class TmuxMappingObject(MutableMapping[t.Any, t.Any]):
|
287 | 298 | ================ ================================== ==============
|
288 | 299 | """
|
289 | 300 | _info: t.Dict[t.Any, t.Any]
|
| 301 | + formatter_prefix: str |
290 | 302 |
|
291 | 303 | def __getitem__(self, key: str) -> str:
|
292 |
| - return self._info[key] |
| 304 | + item = self._info[key] |
| 305 | + assert item is not None |
| 306 | + assert isinstance(item, str) |
| 307 | + return item |
293 | 308 |
|
294 | 309 | def __setitem__(self, key: str, value: str) -> None:
|
295 | 310 | self._info[key] = value
|
296 | 311 | self.dirty = True
|
297 | 312 |
|
298 |
| - def __delitem__(self, key): |
| 313 | + def __delitem__(self, key: str) -> None: |
299 | 314 | del self._info[key]
|
300 | 315 | self.dirty = True
|
301 | 316 |
|
302 |
| - def keys(self): |
| 317 | + def keys(self) -> KeysView[str]: |
303 | 318 | """Return list of keys."""
|
304 | 319 | return self._info.keys()
|
305 | 320 |
|
306 |
| - def __iter__(self): |
| 321 | + def __iter__(self) -> t.Iterator[str]: |
307 | 322 | return self._info.__iter__()
|
308 | 323 |
|
309 | 324 | def __len__(self) -> int:
|
310 | 325 | return len(self._info.keys())
|
311 | 326 |
|
312 | 327 | def __getattr__(self, key: str) -> str:
|
313 | 328 | try:
|
314 |
| - return self._info[self.formatter_prefix + key] |
| 329 | + val = self._info[self.formatter_prefix + key] |
| 330 | + assert val is not None |
| 331 | + assert isinstance(val, str) |
| 332 | + return val |
315 | 333 | except KeyError:
|
316 | 334 | raise AttributeError(f"{self.__class__} has no property {key}")
|
317 | 335 |
|
|
0 commit comments