Problem:
APIResponse
andSingleAPIResponse
are declared as
class APIResponse(BaseModel, Generic[T]):
data: list[T]
...
class SingleAPIResponse(BaseModel, Generic[T]):
data: T
...
- Any query method ->
FilterBuilder[dict[str, Any]]
-> ... ->APIResponse[dict[str, Any]]
i.edata
would be of typelist[dict[str, Any]]
. - BUT rpc is declared as
def rpc(...) -> FilterBuilder[Any]: ...
which eventually returns an APIResponse[Any]
- i.e data
would be of type list[Any]
- but it should be just Any
.
Pydantic sees that the response isn't a list[Any]
and raises a validation error.
Solution:
- An
RPCFilterRequestBuilder[T]
that is exactly the same as the usual filter builder, but it eventually returns aSingleAPIResponse[T]
instead
That is:
rpc()
-> RPCFilterRequestBuilder[Any]
-> ... -> SingleAPIResponse[Any]
i.e data
is of type Any
Hope that explains the rationale.