confluentinc/confluent-kafka-python

Fix type hinting of avro messages

Open

#466 opened on 2018年10月11日

GitHub で見る
 (3 comments) (0 reactions) (0 assignees)Python (3,526 stars) (909 forks)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