confluent-kafka-python
confluent-kafka-python copied to clipboard
String representation of a TopicPartition raises a SystemError on Windows with Python 3.12.1 and Confluent Kafka Python 2.3.0
Description
String representation of a TopicPartition raises a SystemError on Windows with Python 3.12.1 and Confluent Kafka Python 2.3.0.
How to reproduce
(test-2024-02-28) PS C:\gdavey\src\test> python
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec 7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import confluent_kafka
>>> tp = confluent_kafka.TopicPartition("my_topic")
>>> print(tp)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: invalid format string: %I32d,offset=%s,leader_epoch=%s,error=%s}
>>>
Checklist
Please provide the following information:
- [x] confluent-kafka-python and librdkafka version (
confluent_kafka.version()andconfluent_kafka.libversion()): ('2.3.0', 33751040), ('2.3.0', 33751295) - [ ] Apache Kafka broker version:
- [ ] Client configuration:
{...} - [x] Operating system: Windows
- [ ] Provide client logs (with
'debug': '..'as necessary) - [ ] Provide broker log excerpts
- [ ] Critical issue
I have got the same issue with Python 3.12.11 on Windows 11. Quick research found the possible error source:
https://github.com/confluentinc/confluent-kafka-python/blob/c84a2176646564c733b95c9cb71b25f3c0c759d1/src/confluent_kafka/src/confluent_kafka.c#L1129-L1135
maybe should be modified to
ret = cfl_PyUnistr(
_FromFormat("TopicPartition{topic=%s,partition=%d,offset=%s,leader_epoch=%s,error=%s}",
self->topic, self->partition,
offset_str,
leader_epoch_str,
c_errstr ? c_errstr : "None"));