Source code for pymodis.optparse_required

#!/usr/bin/env python
#  class to parse modis data
#
#  (c) Copyright Luca Delucchi 2013
#  Authors: Luca Delucchi
#  Email: luca dot delucchi at iasma dot it
#
##################################################################
#
#  This MODIS Python class is licensed under the terms of GNU GPL 2.
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License as
#  published by the Free Software Foundation; either version 2 of
#  the License, or (at your option) any later version.
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#  See the GNU General Public License for more details.
#
##################################################################
"""Module to extend optparse, it add required options and new types to use
into gui module.

Classes:

* :class:`OptionWithDefault`
* :class:`OptionParser`

"""

import optparse

# classes for required options
STREQUIRED = 'required'


[docs]class OptionWithDefault(optparse.Option): """Extend optparse.Option add required to the attributes and some new types for the GUI """ ATTRS = optparse.Option.ATTRS + [STREQUIRED] TYPES = optparse.Option.TYPES + ('file', 'output', 'directory') def __init__(self, *opts, **attrs): """Function to initialize the object""" if attrs.get(STREQUIRED, False): attrs['help'] = '(Required) ' + attrs.get('help', "") optparse.Option.__init__(self, *opts, **attrs)
[docs]class OptionParser(optparse.OptionParser): """Extend optparse.OptionParser""" def __init__(self, **kwargs): """Function to initialize the object""" kwargs['option_class'] = OptionWithDefault optparse.OptionParser.__init__(self, **kwargs)
[docs] def check_values(self, values, args): """Check if value is required for an option""" for option in self.option_list: if hasattr(option, STREQUIRED) and option.required: if not getattr(values, option.dest): self.error("option {opt} is required".format(opt=str(option))) return optparse.OptionParser.check_values(self, values, args)