Lots of changes.
[python_utils.git] / argparse_utils.py
index 75bec0475ce25f4246d7ce2e2f4d05aee306c4c5..80046dee7b2c4619406bfec618d131df24d1e5c3 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/python3
 
 import argparse
+import datetime
 import logging
 import os
 
@@ -79,6 +80,7 @@ def valid_mac(mac: str) -> str:
 
 
 def valid_percentage(num: str) -> float:
+    num = num.strip('%')
     n = float(num)
     if 0.0 <= n <= 100.0:
         return n
@@ -94,3 +96,21 @@ def valid_filename(filename: str) -> str:
     msg = f"{filename} was not found and is therefore invalid."
     logger.warning(msg)
     raise argparse.ArgumentTypeError(msg)
+
+
+def valid_date(txt: str) -> datetime.date:
+    date = string_utils.to_date(txt)
+    if date is not None:
+        return date
+    msg = f'Cannot parse argument as a date: {txt}'
+    logger.warning(msg)
+    raise argparse.ArgumentTypeError(msg)
+
+
+def valid_datetime(txt: str) -> datetime.datetime:
+    dt = string_utils.to_datetime(txt)
+    if dt is not None:
+        return dt
+    msg = f'Cannot parse argument as datetime: {txt}'
+    logger.warning(msg)
+    raise argparse.ArgumentTypeError(msg)