Currently, the python lwpb code can't resolve nested definitions like this:
message A {
message B {
enum C {
...
};
};
};
message D {
optional A.B.C stuff = 1;
};
The rules for resolving type names follow C++ scoping.
This feels like an unnecessary complication in the protocol buffers spec -- I've personally never had a need for it and simply use a flat list of definitions in my .proto files.
However, it's in the spec, so see if it can be implemented in the descriptor code.