This check is generated if and only if a method returns a single Data<T>, otherwise it just checks that the response contain the correct fields, with no typechecking.
So if the implementation returns a MatchmakeSession, it should be valid, but since it doesn't inherit from common.Data (but common.Structure, even though it's registered in the DataHolder list), this check fails, and the error is raised.
A quick manual fix is to remove the if case, and it works as expected since the Gathering types are all registered in the DataHolder
NOTE: This might be occuring in other protocols, but i didn't bother checking
So a long term fix may be to add a check in the generate_protocols.py script so it checks the object is of a type registered in the DataHolder registry instead of checking the response is an instance of common.Data, i'm waiting for your input on that.
The following methods have an implementation issue:
They all respond with a single
Data<Gathering>
But in the python MatchmakeExtensionServer, the handler expects that:
https://github.com/kinnay/NintendoClients/blob/0d2adcdf8212cdffe59dc5d83a0ddf9fa27c31e8/nintendo/nex/matchmaking.py#L3779-L3784
This check is generated if and only if a method returns a single
Data<T>
, otherwise it just checks that the response contain the correct fields, with no typechecking.So if the implementation returns a
MatchmakeSession
, it should be valid, but since it doesn't inherit fromcommon.Data
(butcommon.Structure
, even though it's registered in theDataHolder
list), this check fails, and the error is raised.if
case, and it works as expected since the Gathering types are all registered in theDataHolder
NOTE: This might be occuring in other protocols, but i didn't bother checking
So a long term fix may be to add a check in the
generate_protocols.py
script so it checks the object is of a type registered in theDataHolder
registry instead of checking the response is an instance ofcommon.Data
, i'm waiting for your input on that.