Skip to content

Instantly share code, notes, and snippets.

@gurunars
Last active October 6, 2022 15:06
Show Gist options
  • Save gurunars/449edbccd0de1449b71524c89d61e1c5 to your computer and use it in GitHub Desktop.
Save gurunars/449edbccd0de1449b71524c89d61e1c5 to your computer and use it in GitHub Desktop.
Regexp based validation for argparse arguments
import argparse
import re
class Validator(object):
def __init__(self, pattern):
self._pattern = re.compile(pattern)
def __call__(self, value):
if not self._pattern.match(value):
raise argparse.ArgumentTypeError(
"Argument has to match '{}'".format(self._pattern.pattern))
return value
class Main(object):
email = Validator(r"^[^@]+@[^@]+\.[^@]+$")
def __init__(self, handler):
self._handler = handler
def __call__(self):
parser = argparse.ArgumentParser(description="FILL ME")
parser.add_argument("email", type=self.email)
args = parser.parse_args()
self._handler(args.email)
def do_something(email):
print email
if __name__ == '__main__':
main = Main(do_something)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment