code: def numeric(basetype, min_=None, max_=None):
      
      min_ = basetype(min_) if min_ is not None else None
      max_ = basetype(max_) if max_ is not None else None
  
      def _numeric(string):
          value = basetype(string)
          if min_ is not None and value < min_ or max_ is not None and value > max_:
              msg = "%r not in valid range %r" % (string, (min_, max_))
              raise argparse.ArgumentTypeError(msg)
          return value
  
      _numeric.__name__ = basetype.__name__
      return _numeric
docs: Validator for numeric params