aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/utils/human.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/utils/human.py')
-rw-r--r--mitmproxy/utils/human.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/mitmproxy/utils/human.py b/mitmproxy/utils/human.py
index d67fb310..e2e3142a 100644
--- a/mitmproxy/utils/human.py
+++ b/mitmproxy/utils/human.py
@@ -1,6 +1,8 @@
import datetime
import ipaddress
import time
+import functools
+import typing
SIZE_TABLE = [
("b", 1024 ** 0),
@@ -25,7 +27,14 @@ def pretty_size(size):
return "%s%s" % (size, SIZE_TABLE[0][0])
-def parse_size(s):
+@functools.lru_cache()
+def parse_size(s: typing.Optional[str]) -> typing.Optional[int]:
+ """
+ Parse a size with an optional k/m/... suffix.
+ Invalid values raise a ValueError. For added convenience, passing `None` returns `None`.
+ """
+ if s is None:
+ return None
try:
return int(s)
except ValueError: