Metadata-Version: 2.0
Name: flange
Version: 0.0.3
Summary: Autoload configuration from multiple sources. Autotranslate config into usable object
Home-page: https://github.com/flashashen/flange
Author: flashashen
Author-email: flashashen@gmail.com
License: MIT
Description-Content-Type: UNKNOWN
Keywords: configuration yaml object registry spring
Platform: osx
Platform: linux
Platform: mswindows
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development
Classifier: Environment :: Console
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Development Status :: 3 - Alpha
Requires-Dist: anyconfig
Requires-Dist: certifi
Requires-Dist: chardet
Requires-Dist: idna
Requires-Dist: PyYAML
Requires-Dist: requests
Requires-Dist: six
Requires-Dist: urllib3
Requires-Dist: jsonschema

# Flange 

Application configuration and object instantiation. This is partially inspired by spring app framework

Resources - Define, Discover, Fetch, Interact, Update 

many resources merged 
URL handler plugin scheme
object cache


### What it does
- Automatically load the data of various applications/formats using Anyconfig
- Object registry with caching
- Pluggable, automatic object detection/creation from data sources based on jsonschema
- Convenient object access 

### What it will do
- encrypt data files, read encrypted files 
- Edit data and write back to src files 
- Provide prompts for missing elements given a dict and a model/schema


## How it works

**init**
- searches for any recongnized config/data files on start
- first pass of loaded sources: look for flange specific config
- performs another load round if needed based on flange config
- repeat load and process steps until all flange config is processed
- final pass of loaded sources: performs a final data merge and normalization
- scans for model instances including model plugins

### Usage

```
In [1]: import flange

In [3]: flange.sources()
Out[3]: 
[{'ns': '', 'src': '/Users/a.user/.cmd.yml', 'type': 'yml'},
 {'ns': '', 'src': '/Users/a.user/.ansible.cfg', 'type': 'shellvars'},
 {'ns': 'docker',
  'src': '/Users/a.user/.docker/config.json',
  'type': 'json'},
 {'ns': 'heroku',
  'src': '/Users/a.user/.heroku/config.json',
  'type': 'json'},
 {'ns': 'm2', 'src': '/Users/a.user/.m2/settings.xml', 'type': 'xml'},
 {'ns': 'm2', 'src': '/Users/a.user/.m2/settings.xml.hide', 'type': 'xml'},
 {'ns': 'nyttth', 'src': '/Users/a.user/.nyttth/config.yml', 'type': 'yml'},
 {'ns': 'nyttth',
  'src': '/Users/a.user/.nyttth/config_example.yml',
  'type': 'yml'},
 {'ns': 'nyttth', 'src': '/Users/a.user/.nyttth/config.yml', 'type': 'yml'},
 {'ns': 'nyttth',
  'src': '/Users/a.user/.nyttth/config_example.yml',
  'type': 'yml'},
 {'ns': 'ScreamingFrogSEOSpider',
  'src': '/Users/a.user/.ScreamingFrogSEOSpider/spider.config',
  'type': 'shellvars'},
 {'ns': 'sonic-pi',
  'src': '/Users/a.user/.sonic-pi/settings.json',
  'type': 'json'},
 {'ns': 'env', 'src': 'os', 'type': None}]
```

