Metadata-Version: 1.1
Name: argparse-actions
Version: 0.4.4
Summary: Custom actions for argparse package
Home-page: http://pypi.python.org/pypi/argparse_actions/
Author: Hai Vu
Author-email: haivu2004@gmail.com
License: LICENSE.txt
Description: argparse_actions
        ================
        
        This module implements some reusable custom actions to use with the argparse module.
        
        
        Examples
        --------
        
        The following example, taken from *samples/folder\_actions.py* demonstrates the use of a custom action to verify the existence of a folder, specified from the command line::
        
        	import argparse
        	import argparse_actions
        
        	if __name__ == '__main__':
        	    parser = argparse.ArgumentParser(description='Custom Actions')
        	    parser.add_argument('directory', 
        		    	action=argparse_actions.FolderExistsAction)
            
        	    try:
        	        args = parser.parse_args()
        	        print 'Directory exists: {0}'.format(args.directory)
        	    except argparse_actions.NonFolderError as e:
        	        print 'Directory does not exist'
        	        print e
        
        In the next example from *samples/proper\_ip.py*, we use the *ProperIpFormatAction* custom action to verify if an IP address from command line is properly formatted::
        
        
        	import argparse
        	import argparse_actions
        	
        	if __name__ == '__main__':
        	    parser = argparse.ArgumentParser(description='Custom Actions')
        	    parser.add_argument('ip', 
        			    action=argparse_actions.ProperIpFormatAction)
        	    
        	    try:
        	        args = parser.parse_args()
        	        print 'IP is properly formatted: {0}'.format(args.ip)
        	    except argparse_actions.InvalidIp as e:
        	        print 'IP is invalid: {0}'.format(e.ip)
        	        # This will display similar output:
        	        # print e 
        
        Extending the Custom Actions
        ----------------------------
        
        If you find a custom action that almost do what you want, you can
        
        1. Write your own from scratch
        2. Submit an enhancement request
        3. Extend the existing custom action
        
        I am not commenting on option 1--it is your choice. For option 2, I will be gladly to accept any reasonable request, but sometimes life happens and I might not response quickly enough. That leaves you with the third option of extending the custom action yourself. Don't worry, it is not that hard. In the next example, I will take the *ProperIpFormatAction* custom action and extend it to include 'localhost' as one of the proper IP format::
        
        
        	import argparse
        	import argparse_actions
        	
        	class IpAndLocalhostAction(argparse_actions.ProperIpFormatAction):
        	    def __call__(self, parser, namespace, values, option_string=None):
        	        # Do our check: allow for 'localhost'
        	        if values == 'localhost':
        	            setattr(namespace, self.dest, values)
        	        else:
        	            # Super class to perform its check
        	            parent = super(IpAndLocalhostAction, self)
        	            parent.__call__(parser, namespace, values, option_string)
        	
        	if __name__ == '__main__':
        	    parser = argparse.ArgumentParser(description='Custom Actions')
        	    parser.add_argument('ip', action=IpAndLocalhostAction)
        	    
        	    try:
        	        args = parser.parse_args()
        	        print 'IP is valid: {0}'.format(args.ip)
        	    except argparse_actions.InvalidIp as e:
        	        print e 
        
        Discussion:  
        
        * The first step is to create a new class (*IpAndLocalhostAction*), based on an existing custom action (*argparse_actions.ProperIpFormatAction*, which is really a class itself)
        * Define the function *\_\_call\_\_* to override the base custom action with your own logic.
        
        
        More Ideas
        ----------
        
        Here are a few ideas I have in mind, which I might implement:
        
        * Extend *ProperIpFormatAction* to determine if and IP...
        	- Is reachable
        	- Provides some services such as HTTP or FTP
        	- Belongs to a particular list, such as the banned IP list
        * Extend *FolderExistsAction* to determine if the folder is...
        	- Writable
        	- Empty
        	- A symbolic link
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Environment :: Console
