confluentinc/confluent-kafka-python

Fix type hinting of avro messages

Open

#466 建立於 2018年10月11日

在 GitHub 查看
 (3 留言) (0 反應) (0 負責人)Python (3,526 star) (909 fork)batch import
code:pythoncomponent:schema-registrygood first issuemaintenance

描述

Description

I use Pycharm as my IDE, and I dislike seeing complaints about type mismatch. The value attribute of Message objects is typed as Optional[Union[str, bytes]]. However, AvroConsumers set that value to the deserialized message, i.e. whatever python datatype match the avro schema(most often, a dict). This generates red flags for any type checkers when I treat that value as a dict(or whatever I expect the deserialized message to be).

Not sure what's the best way to change the type hinting when using C bindings.

Edit: Also, Pycharm thinks Message.value takes a payload argument. Not sure why that is.

How to reproduce

e.g.

consumer = AvroConsumer(...)
message = consumer.poll()
field = message.value().get("field") # Pycharm highlights this as an error

Checklist

Please provide the following information:

  • confluent-kafka-python and librdkafka version (confluent_kafka.version() and confluent_kafka.libversion()): confluent_kafka.version() = ('0.11.5', 722176), confluent_kafka.libversion() = ('0.11.5', 722431)
  • Apache Kafka broker version: N/A
  • Client configuration: N/A
  • Operating system: N/A
  • Provide client logs (with 'debug': '..' as necessary)
  • Provide broker log excerpts
  • Critical issue

貢獻者指南

Fix type hinting of avro messages · confluentinc/confluent-kafka-python#466 | Good First Issue