8000 Cython 3.1 compatibility · Issue #1575 · python-zeroconf/python-zeroconf · GitHub
[go: up one dir, main page]

Skip to content
Cython 3.1 compatibility #1575
Closed
Closed
@mgorny

Description

@mgorny

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:

cdef class DNSRecord(DNSEntry):
cdef public cython.float ttl

class DNSRecord(DNSEntry):
"""A DNS record - like a DNS entry, but has a TTL"""
__slots__ = ("created", "ttl")
# TODO: Switch to just int ttl
def __init__(
self,
name: str,
type_: int,
class_: int,
ttl: float | int,
created: float | None = None,
) -> None:
self._fast_init_record(name, type_, class_, ttl, created or current_time_millis())


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:

cdef void foo(object x);

.py:

def foo(x: int) -> None:
    ...

but I don't know how int is supposed to be mapped here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0