Cython 3.1.0 is in RC phase already, so we can expect a final release sooner than later. As #1559 shows, zeroconf currently doesn't work with it and I wasn't able to find any tracking issue for the issues.
I have been trying to fix it myself but I'm afraid it's above my pay grade. From what I gather, Cython 3.1 got better at type annotations in .py files, and all the issues I've hit were somehow related to type annotations.
I've filed #1574 to fix one case of low-hanging fruit.
Another issue I've noticed is the type mismatch in DNSRecord.ttl:
Other signature mismatches I couldn't grasp. It is possible that they are actually a bug in Cython, but I don't really know Cython, so I'd appreciate if someone with better understanding of it checked, and possibly reported a bug upstream.
FWICS I can reproduce the same error with the following minimal reproducer:
.pxd:
cdefvoidfoo(objectx);
.py:
deffoo(x: int) ->None:
...
but I don't know how int is supposed to be mapped here.
I have ~16 projects that I’m working on that don’t work with 3.1.x. I’m working through the smaller ones first. It’s going to take a while to get here. If it ships before I get to it, I’ll do a new release to pin Cython
Activity
bdraco commented on May 3, 2025
I have ~16 projects that I’m working on that don’t work with 3.1.x. I’m working through the smaller ones first. It’s going to take a while to get here. If it ships before I get to it, I’ll do a new release to pin Cython
bdraco commented on May 3, 2025
We use object when we don’t want Cython to convert it to a native type and we want a PyInt.
Usual workaround it to assign the type to _int = int and than change the type to _int. That has prevented Cython from converting it
mgorny commented on May 3, 2025
There's also the possibility of using "annotation_typing": False directive, but that's a kind of big cannon.
bdraco commented on May 3, 2025
Fixed in master, release pending