confluentinc/confluent-kafka-python

Fix type hinting of avro messages

Open

#466 aperta il 11 ott 2018

Vedi su GitHub
 (3 commenti) (0 reazioni) (0 assegnatari)Python (909 fork)batch import
code:pythoncomponent:schema-registrygood first issuemaintenance

Metriche repository

Star
 (3526 star)
Metriche merge PR
 (Merge medio 10g 2h) (27 PR mergiate in 30 g)

Descrizione

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

Guida contributor