Does it lazy-create leaf dicts on access? It would be preferable if they were only created on assignment, and failed if it’s just a get. For example, if I call config.usors.adminn.naem I’d like it to fail loud and fast to point out the typos.
x = dd()
print(x.tyypo.a.b)
you'll get "DotDict()"The problem is that an object can't know whether you're getting a node that you're later going to assign a leaf to... or whether you're getting the node because you want to get the node.
x = dd()
x.a.b.c = "Foo"
is equivalent to: x = dd()
y = x.a.b
y.c = "Foo"
So "x.a.b" can't raise an exception.Now, it's python, so you can do unholy things to make pretty much anything work. But I think it would be ugly.