To reproduce the issue several things need to come together:
- Value on 2nd+ level of nestiness.
- Value should be set via optional env var syntax
${?FOO}.
- There should be another config referenced with same structure but w/o overriding that value.
- Env var must be unset.
Please see an example for above (url2 added for use-case example only and does not affect reproducibility):
app.conf:
root {
level1 {
url1 = "http://default-1"
url1 = ${?FOO}
url2 = "http://default-2"
}
}
include "dev.conf"
dev.conf:
root {
level1 {
url2 = "http://dev-2"
}
}
test.py:
from pyhocon import ConfigFactory
print(ConfigFactory.parse_file('app.conf').get_string('root.level1.url1'))
Expected: http://default-1
Actual: None
Reproduced with v0.3.61, Python 3.9