Metadata-Version: 2.0
Name: arghelper
Version: 0.4.2
Summary: Python argparse helper module
Home-page: https://github.com/questrail/arghelper
Author: Matthew Rankin
Author-email: matthew@questrail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules

arghelper
=========

|PyPi Version| |Build Status| |Coverage Status| |License Badge|

`arghelper <https://github.com/questrail/arghelper>`__ is a Python
(2.6+/3.2+) module providing functions to help with argparse.

Requirements
------------

-  ``argparse`` module from the `Python Standard
   Library <https://docs.python.org/2/library/>`__
-  ``sys`` module from the `Python Standard
   Library <https://docs.python.org/2/library/>`__
-  ``os`` module from the `Python Standard
   Library <https://docs.python.org/2/library/>`__

Usage
-----

``arghelper`` provides functions to determine if a file or directory
exists:

-  ``extant_file``
-  ``extant_dir``

These can be used as follows:

.. code:: python

    if __name__ == "__main__":
        # Process the arguments
        import argparse
        import arghelper
        parser = argparse.ArgumentParser(
            description='Process the TAFFmat CET files')
        parser.add_argument(
            'config_file',
            help='CSV configuration file.',
            metavar='FILE', type=arghelper.extant_file)
        parser.add_argument(
            'input_dir',
            help='Directory containing input files.',
            metvar='DIR', type=arghelper.extant_dir)
        args = parser.parse_args()

A common pattern, for me at least, is to have three positional arguments
consisting of:

1. ``config_file`` --- A configuration file
2. ``input_dir`` --- A directory containing input files to be read
3. ``output_dir`` --- A directory where the output files should be saved

This pattern has been abstracted to a Facade function called
``parse_config_input_output``, which can be used as follows:

.. code:: python

    if __name__ == "__main__":
        # Process the arguments
        import arghelper
        args = arghelper.parse_config_input_output(sys.argv)

Another common pattern is to just parse the name of a config file:

.. code:: python

    if __name__ == "__main__":
        # Process the arguments
        import arghelper
        args = arghelper.parse_config(sys.argv)

Contributing
------------

`arghelper <https://github.com/questrail/arghelper>`__ is developed
using `Scott Chacon <http://scottchacon.com/about.html>`__'s `GitHub
Flow <http://scottchacon.com/2011/08/31/github-flow.html>`__. To
contribute, fork `arghelper <https://github.com/questrail/arghelper>`__,
create a feature branch, and then submit a pull request. `GitHub
Flow <http://scottchacon.com/2011/08/31/github-flow.html>`__ is
summarized as:

-  Anything in the ``master`` branch is deployable
-  To work on something new, create a descriptively named branch off of
   ``master`` (e.g., ``new-oauth2-scopes``)
-  Commit to that branch locally and regularly push your work to the
   same named branch on the server
-  When you need feedback or help, or you think the brnach is ready for
   merging, open a `pull
   request <https://help.github.com/articles/using-pull-requests>`__.
-  After someone else has reviewed and signed off on the feature, you
   can merge it into master.
-  Once it is merged and pushed to ``master``, you can and *should*
   deploy immediately.

License
=======

`arghelper <https://github.com/questrail/arghelper>`__ is released under
the MIT license. Please see the
`LICENSE.txt <https://github.com/questrail/arghelper/blob/master/LICENSE.txt>`__
file for more information.

.. |PyPi Version| image:: http://img.shields.io/pypi/v/arghelper.svg
   :target: https://pypi.python.org/pypi/arghelper
.. |Build Status| image:: http://img.shields.io/travis/questrail/arghelper/master.svg
   :target: https://travis-ci.org/questrail/arghelper
.. |Coverage Status| image:: http://img.shields.io/coveralls/questrail/arghelper/master.svg
   :target: https://coveralls.io/r/questrail/arghelper
.. |License Badge| image:: http://img.shields.io/pypi/l/arghelper.svg
   :target: https://github.com/questrail/arghelper/blob/master/LICENSE.txt


