confluentinc/confluent-kafka-python

Fix type hinting of avro messages

Open

#466 ouverte le 11 oct. 2018

Voir sur GitHub
 (3 commentaires) (0 réactions) (0 assignés)Python (909 forks)batch import
code:pythoncomponent:schema-registrygood first issuemaintenance

Métriques du dépôt

Stars
 (3 526 stars)
Métriques de merge PR
 (Merge moyen 10j 2h) (27 PRs mergées en 30 j)

Description

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

Guide contributeur