I think the missing `__iter__` is just an oversight.  I agree with @embray, it probably could be reduced to a dictionary subclass.  This code goes back to Python 2.4, where I think inheriting from `dict` was less straightforward, and it just never got updated.  @pllim: You can either do that now, or just create a new issue and assign it to me and I can do it subsequent to this PR.