Skip to content

Commit c46e871

Browse files
igalicgronke
authored andcommitted
be more specific about typing information
* add Optional where needed (even if it was implicit thru = None) * fix JailConfig type hints: we were pointing to the wrong thing * Logger now has types * error: take *Any* value, it's an error after all
1 parent 80e34c3 commit c46e871

File tree

5 files changed

+58
-38
lines changed

5 files changed

+58
-38
lines changed

iocage/lib/Config/Jail/BaseConfig.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,31 +279,43 @@ def _set_basejail(self, value, **kwargs):
279279
def _get_clonejail(self) -> bool:
280280
return iocage.lib.helpers.parse_bool(self.data["clonejail"])
281281

282-
def _set_clonejail(self, value, **kwargs):
282+
def _set_clonejail(
283+
self,
284+
value: str,
285+
**kwargs) -> typing.Optional[str]:
283286
self.data["clonejail"] = self.stringify(value)
284287

285-
def _get_defaultrouter(self):
288+
def _get_defaultrouter(self) -> typing.Optional[str]:
286289
value = self.data['defaultrouter']
287290
return value if (value != "none" and value is not None) else None
288291

289-
def _set_defaultrouter(self, value, **kwargs):
292+
def _set_defaultrouter(
293+
self,
294+
value: typing.Optional[str],
295+
**kwargs) -> None:
290296
if value is None:
291297
value = 'none'
292298
self.data['defaultrouter'] = value
293299

294-
def _get_defaultrouter6(self):
300+
def _get_defaultrouter6(self) -> typing.Optional[str]:
295301
value = self.data['defaultrouter6']
296302
return value if (value != "none" and value is not None) else None
297303

298-
def _set_defaultrouter6(self, value, **kwargs):
304+
def _set_defaultrouter6(
305+
self,
306+
value: typing.Optional[str],
307+
**kwargs) -> None:
299308
if value is None:
300309
value = 'none'
301310
self.data['defaultrouter6'] = value
302311

303312
def _get_vnet(self):
304313
return iocage.lib.helpers.parse_user_input(self.data["vnet"])
305314

306-
def _set_vnet(self, value, **kwargs):
315+
def _set_vnet(
316+
self,
317+
value: str,
318+
**kwargs) -> None:
307319
self.data["vnet"] = iocage.lib.helpers.to_string(
308320
value,
309321
true="on",

iocage/lib/Config/Jail/Properties/Addresses.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ class AddressSet(set):
3232

3333
def __init__(
3434
self,
35-
config: typing.Optional['iocage.lib.JailConfig.JailConfig']=None,
35+
config: typing.Optional[
36+
iocage.lib.Config.Jail.JailConfig.JailConfig
37+
]=None,
3638
property_name: str="ip4_address"
3739
) -> None:
3840

iocage/lib/Config/Jail/Properties/Interfaces.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,18 @@
2525

2626
import iocage.lib.helpers
2727

28-
_ConfigType = 'iocage.lib.Config.Jail.JailConfig.JailConfig'
28+
_ConfigType = iocage.lib.Config.Jail.JailConfig.JailConfig
2929

3030

3131
class BridgeSet(set):
3232

33-
config: 'iocage.lib.JailConfig.JailConfig'
33+
config: iocage.lib.Config.Jail.JailConfig.JailConfig
3434

3535
def __init__(
3636
self,
37-
config: typing.Optional['iocage.lib.JailConfig.JailConfig']=None
37+
config: typing.Optional[
38+
iocage.lib.Config.Jail.JailConfig.JailConfig
39+
]=None
3840
) -> None:
3941

4042
if config is not None:
@@ -58,12 +60,14 @@ def __notify(self) -> None:
5860

5961
class InterfaceProp(dict):
6062

61-
config: 'iocage.lib.Config.Jail.JailConfig.JailConfig'
63+
config: iocage.lib.Config.Jail.JailConfig.JailConfig
6264
property_name: str = "interfaces"
6365

6466
def __init__(
6567
self,
66-
config: typing.Optional['iocage.lib.JailConfig.JailConfig']=None,
68+
config: typing.Optional[
69+
iocage.lib.Config.Jail.JailConfig.JailConfig
70+
]=None,
6771
**kwargs
6872
) -> None:
6973

iocage/lib/Logger.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323
# POSSIBILITY OF SUCH DAMAGE.
2424
import os
2525
import sys
26+
import typing
2627

2728
import iocage.lib.errors
2829

29-
from typing import List
30-
3130

3231
class LogEntry:
3332

@@ -102,42 +101,45 @@ class Logger:
102101

103102
INDENT_PREFIX = " "
104103

105-
PRINT_HISTORY: List[str] = []
104+
PRINT_HISTORY: typing.List[str] = []
106105

107-
def __init__(self, print_level=None, log_directory="/var/log/iocage"):
106+
def __init__(
107+
self,
108+
print_level: typing.Optional[str]=None,
109+
log_directory: str="/var/log/iocage"
110+
) -> None:
108111
self._print_level = print_level
109112
self._set_log_directory(log_directory)
110113

111114
@property
112-
def default_print_level(self):
115+
def default_print_level(self) -> str:
113116
return "info"
114117

115118
@property
116-
def print_level(self):
119+
def print_level(self) -> str:
117120
if self._print_level is None:
118121
return self.default_print_level
119122
else:
120123
return self._print_level
121124

122125
@print_level.setter
123-
def print_level(self, value):
126+
def print_level(self, value: str) -> None:
124127
self._print_level = value
125128

126-
def _set_log_directory(self, log_directory):
129+
def _set_log_directory(self, log_directory: str) -> None:
127130
self.log_directory = os.path.abspath(log_directory)
128131
if not os.path.isdir(log_directory):
129132
self._create_log_directory()
130133
self.log(f"Log directory set to '{log_directory}'", level="spam")
131134

132-
def log(self, *args, **kwargs):
133-
134-
args = list(args)
135+
def log(self, *args, **kwargs) -> LogEntry:
136+
log_args = list(args)
135137

136-
if ("message" not in kwargs) and (len(args) > 0):
137-
kwargs["message"] = args.pop(0)
138+
if ("message" not in kwargs) and (len(log_args) > 0):
139+
kwargs["message"] = log_args.pop(0)
138140

139-
if ("level" not in kwargs) and (len(args) > 0):
140-
kwargs["level"] = args.pop(0)
141+
if ("level" not in kwargs) and (len(log_args) > 0):
142+
kwargs["level"] = log_args.pop(0)
141143

142144
if "level" not in kwargs:
143145
kwargs["level"] = "info"
@@ -146,32 +148,32 @@ def log(self, *args, **kwargs):
146148

147149
if self._should_print_log_entry(log_entry):
148150
self._print_log_entry(log_entry)
149-
self.PRINT_HISTORY.append(log_entry)
151+
self.PRINT_HISTORY.append(log_entry.message)
150152

151153
return log_entry
152154

153-
def verbose(self, message, indent=0, **kwargs):
155+
def verbose(self, message: str, indent: int=0, **kwargs) -> LogEntry:
154156
return self.log(message, level="verbose", indent=indent, **kwargs)
155157

156-
def error(self, message, indent=0, **kwargs):
158+
def error(self, message: str, indent: int=0, **kwargs) -> LogEntry:
157159
return self.log(message, level="error", indent=indent, **kwargs)
158160

159-
def warn(self, message, indent=0, **kwargs):
161+
def warn(self, message: str, indent: int=0, **kwargs) -> LogEntry:
160162
return self.log(message, level="warn", indent=indent, **kwargs)
161163

162-
def debug(self, message, indent=0, **kwargs):
164+
def debug(self, message: str, indent: int=0, **kwargs) -> LogEntry:
163165
return self.log(message, level="debug", indent=indent, **kwargs)
164166

165-
def spam(self, message, indent=0, **kwargs):
167+
def spam(self, message: str, indent: int=0, **kwargs) -> LogEntry:
166168
return self.log(message, level="spam", indent=indent, **kwargs)
167169

168-
def screen(self, message, indent=0, **kwargs):
170+
def screen(self, message: str, indent: int=0, **kwargs) -> LogEntry:
169171
"""
170172
Screen never gets printed to log files
171173
"""
172174
return self.log(message, level="screen", indent=indent, **kwargs)
173175

174-
def redraw(self, log_entry):
176+
def redraw(self, log_entry: LogEntry) -> None:
175177

176178
if log_entry not in self.PRINT_HISTORY:
177179
raise iocage.lib.errors.CannotRedrawLine(
@@ -182,12 +184,12 @@ def redraw(self, log_entry):
182184
raise iocage.lib.errors.CannotRedrawLine(
183185
reason=(
184186
"Log level 'screen' is required to redraw, "
185-
f"but got '{self.level}'"
187+
f"but got '{log_entry.level}'"
186188
)
187189
)
188190

189191
# calculate the delta of messages printed since
190-
i = self.PRINT_HISTORY.index(log_entry)
192+
i = self.PRINT_HISTORY.index(log_entry.message)
191193
n = len(self.PRINT_HISTORY)
192194
delta = sum(map(lambda i: len(self.PRINT_HISTORY[i]), range(i, n)))
193195

iocage/lib/errors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ class UnmountFailed(IocageException):
300300

301301
def __init__(
302302
self,
303-
mountpoint: iocage.lib.Types.AbsolutePath,
303+
mountpoint: typing.Any,
304304
*args,
305305
**kwargs
306306
) -> None:

0 commit comments

Comments
 (0)