Why not just use a dictionary, or why not just leave the type unannotated? If you really can't (or don't want to) say anything about the type, then don't. Python is dynamically typed!
The blog post does want to share some type information with users. They just want to prevent users from relying on a specific implementation of that type.
They are basically describing a public API backed by a private type that they can extend, rearrange, or otherwise modify without breaking the public contract.
They are basically describing a public API backed by a private type that they can extend, rearrange, or otherwise modify without breaking the public contract.