tr11 / python-configuration

A Python library to load configuration parameters

Home Page:https://tr11.github.io/python-configuration/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature: Add interpolate keyword to as_dict() and as_attrdict()

chinghwayu opened this issue · comments

from config import config
DICT = {"var": "1", "var1": "{var}"}
cfg = config(DICT, interpolate=True)
print(cfg.as_dict())
print(cfg.as_attrdict())

Results is:

{'var': '1', 'var1': '{var}'}
{'var': '1', 'var1': '{var}'}

That's by design -- maybe I can add an interpolate keyword to both methods to perform the interpolations.

Take a look at #35. Can you test it to see if it does what you need?

I'm getting an error with
conf.py

var = "hello"

dir/conf.py

var2 = "{var}/else"
var3 = ["{var}", "{var2}"]

A__B = "{var}"

mytest.py

module_list = ["dir/conf.py","conf.py"]
cfg = config(*module_list, separator="__", interpolate=True, interpolate_type=InterpolateEnumType.DEEP_NO_BACKTRACK)
print(cfg.as_attrdict(interpolation=True))
  File "/group/siv_roast_bkup/staff/chinghwa/config-test/mytest.py", line 14, in <module>
    print(cfg.as_attrdict(interpolation=True))
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 202, in as_attrdict
    d = self.as_dict(interpolation=interpolation, nested=nested)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration_set.py", line 133, in as_dict
    return Configuration(result).as_dict(interpolation=interpolation, nested=nested)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 184, in as_dict
    v = v.as_dict(interpolation=True)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 184, in as_dict
    v = v.as_dict(interpolation=True)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 184, in as_dict
    v = v.as_dict(interpolation=True)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 182, in as_dict
    v = interpolated_copy[cast(str, k)]
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/configuration.py", line 157, in __getitem__
    return interpolate_object(item, v, [d], self._interpolate_type)
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/helpers.py", line 192, in interpolate_object
    return interpolate_standard(obj, flatten(d), set())
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/helpers.py", line 111, in interpolate_standard
    interpolated = {v: interpolate_standard(d[v], d, found) for v in variables}
  File "/group/siv_roast_bkup/staff/chinghwa/python-configuration/config/helpers.py", line 111, in <dictcomp>
    interpolated = {v: interpolate_standard(d[v], d, found) for v in variables}
KeyError: 'var'