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)