bwindsor / typed-config

Typed, extensible, dependency free configuration reader for Python projects for multiple config sources and working well in IDEs for great autocomplete performance.
MIT License
25 stars 6 forks source link

YAML Config Source #4

Open rpocase opened 3 years ago

rpocase commented 3 years ago

A large number of modern applications fall to YAML as their default configuration file format. As such, it helps to try and be consistent when developing in house tools to better enable tool overlap (e.g., k8s makes it extremely easy to inline YAML generation). It would be nice to have a YAML Config Source.

This may be hard to do given the project scope (advertising zero dependencies) - it would definitely make sense to implement this as a separate package as noted in the docs.

bwindsor commented 3 years ago

This sounds like a sensible suggestion. I like the idea of keeping this package dependency free, as it means that anybody who wants to use typed config but doesn't need to use yaml doesn't end up with pyyaml installed unnecessarily.

Having a separate package, as for the aws config sources, would work, I'd be happy to make one.

Have you already implemented a yaml config source or is this just an idea at the moment?

rpocase commented 3 years ago

Have you already implemented a yaml config source or is this just an idea at the moment?

Just an idea at the moment - came across this package and my go to config is YAML and was surprised it wasn't already available. For now, I'll likely just stick to an environment source since the number of configuration items is still pretty low. The great thing about typed-config is it seems like I can go ahead and put in the hierarchy so a YAML change would have really low friction if I need to implement one on my end.

msm-code commented 1 year ago

I don't have a stake in this issue, but figured you might be interested:

I like the idea of keeping this package dependency free, as it means that anybody who wants to use typed config but doesn't need to use yaml doesn't end up with pyyaml installed unnecessarily.

You can check out extras in pypi. For example, one project I use (mwdblib) can be installed either as:

$ pip install mwdblib

or:

$ pip install mwdblib[cli]

The latter will also install command line features.

In case of this project, you could have dependency-less typed-config, and extra features installable as pip install typed-config[yaml]