[Feature] Удобная возможность на выходе получать родной Protobuff Response вместо Dataclasses
Описание
Столкнулся с тем, что поднадобилось обратбатывать ответы в видк словарей.
В АПИ постоянная конвертация из датакласса в протобуф и обратно.
Например, все ответы от сервера прозодят через это:
_grpc_helpers.protobuf_to_dataclass(response, MarketDataResponse)
При этом в датаклассе остаются артефакты от Protobuf'а:
Что делает затруднительным перевод ответа в нативные типы, например в словарь, и тем более затрудняет перевод в JSON, для отправки в веб-интерфейс (UI так реализован).
Желаемое решение
Предлагаю сделать перевод ответов опциональным и включенным по-умогчанию, так как, видимо, решено было строить АПИ на датаклассах(что на мой личный взгляд является неоднозначным решением). Так как любое изменение proto-контрактов будет требовать ручного добавления/изменения в invest-python датаклассов и их обработчиков.
На данный момент частично решил проблему так в файле _grpc_helpers.py :
Ответы от сервера после этого посылаю в:
from google.protobuf.json_format import MessageToJson, MessageToDict
Дополнительно
Возможно, что можно решить ситуацию добавив параметры, в которых можно задавать в каких видах я желаю получать ответы от сервера. например (resp_json=False, resp_dict=True, resp_dataclass=True)
Или доделать реализыцию grpc_helpers.protobuf_to_dataclass, чтобы корректно переводила все protobuf-типы в нативные питоновские. Но этот вариант - самый неоптимальный, так как будет происходить конвертация protobuf -> dataclass -> dict -> JSON, вместо простого (уже реализованного Гуглом) protobuf -> JSON.