confluentinc / confluentinc/confluent-kafka-python

Fix type hinting of avro messages

Open
#466 4 comments 0 reactions 0 assignees View on GitHub
code:python component:schema-registry good first issue maintenance
Dominant language
Python
Stars
509
Forks
964
Avg merge
2d 2h
Merged PRs (30d)
14

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, `AvroConsumer`s 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:

- [x] 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

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.