* For some reason python type checkers get confused at things like `from .Foo
import Foo` and start then treating `Foo` as either the module or the class.
* We enforce default and copy constructors where possible, this isn't very
pythonic but we can't use copy.deepcopy on our types.
* The structs that have specialised constructors e.g. FloatVector or Subresource
also have those documented though we have no way to enforce it.
* We create both a stubs folder for each specific version, and a 'latest' that
is updated by newer RD versions.
* For development, the stubs will be regenerated any time the git commit hash
changes for development builds.
* This is smaller and easier to maintain, and adds functionality like resolving
circular dependencies to be able to import the stubs as-is on python 3.6+