Metadata-Version: 2.1
Name: argconfig
Version: 0.0.1
Summary: Argparse enhanced with a config file to overwrite code-based defaults
Home-page: https://github.com/patrick-c-odriscoll/argconfig
Author: Patrick C O'Driscoll
Author-email: patrick.c.odriscoll@gmail.com
License: MIT
Keywords: CLI configuration arguments parsing
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Description-Content-Type: text/markdown
Requires-Dist: pyyaml
Requires-Dist: argparse

# argconfig
argparse + yaml config system

This takes the same format as the argparse.ArgumentParser class; however
it adds the feature of setting a default yaml file for base configuration
to override the default set in the code. Usage has the following overwrite
priority:

command line > config file > default set in code

This enables a flexible configuration based, commandline interface options
at scale.

## Requirements
* Python 3.7+
* pyyaml
* argparse

## Example
### Config File
Use the example.yaml config file in the same directory as your example python code:
```
$ cat example.yaml
foo : test1
bar : 2.0
```
### Example Code
The example python code setsup the variables foo and bar to equal 'testing' and 2.0 respectively. 
(Note the syntax is almost identical as argparse.ArgumentParser.)
```
import argconfig

parser = argconfig.ArgumentParser(description='argconfig example',config='./example.yaml')
parser.add_argument('-f','--foo', type=str, default='testing',
                    help='foo (default=testing, config=test)')
parser.add_argument('--bar',
                    help='bar (default=None, config = 2.0)')
args = parser.parse_args()

print('foo:',args.foo)
print('bar:',args.bar)
```
### Example Command Line Usage
Run time of the example with foo and bar set by command line:
```
python example.py --foo test --bar 3.0
```
returns the following two print statements:
```
foo: test
bar: 3.0
```

While the values set in example.yaml is used when the values are not overriden by the command line:
```
python example.py
```
returns the following two print statements:
```
foo: test1
bar: 2.0
```


