|
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