fix: remove typing on reset_ttl for cython compat by bdraco · Pull Request #1213 · python-zeroconf/python-zeroconf

Cythonizing src/zeroconf/_dns.py

Error compiling Cython file:
------------------------------------------------------------
...

    def is_recent(self, now: _float) -> bool:
        """Returns true if the record more than one quarter of its TTL remaining."""
        return self.created + (_RECENT_TIME_MS * self.ttl) > now

    def reset_ttl(self, other: 'DNSRecord') -> None:
                       ^
------------------------------------------------------------

src/zeroconf/_dns.py:210:24: Compiler crash in AnalyseDeclarationsTransform

File 'ModuleNode.py', line 124, in analyse_declarations: ModuleNode(_dns.py:1:0,
    doc = ' Multicast DNS Service Discovery for Python, v0.14-wmcbrine\n    Copyright 2003 Paul Scott-Murphy, 2014 William McBrine\n\n    This module provides a framework for the use of DNS Service Discovery\n    using IP multicast.\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with this library; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n    USA\n',
    full_module_name = 'zeroconf._dns')
File 'Nodes.py', line 431, in analyse_declarations: StatListNode(_dns.py:23:0)
File 'Nodes.py', line 431, in analyse_declarations: StatListNode(_dns.py:156:0)
File 'Nodes.py', line 4817, in analyse_declarations: CClassDefNode(_dns.py:156:0,
    class_name = 'DNSRecord',
    doc = 'A DNS record - like a DNS entry, but has a TTL',
    visibility = 'private')
File 'Nodes.py', line 431, in analyse_declarations: StatListNode(_dns.py:158:4)
File 'Nodes.py', line 2359, in analyse_declarations: CFuncDefNode(_dns.py:210:4,
    doc = "Sets this record's TTL and created time to that of\n        another record.",
    is_c_class_method = 1,
    modifiers = [...]/0,
    overridable = 1,
    visibility = 'private')
File 'Nodes.py', line 681, in analyse: CFuncDeclaratorNode(_dns.py:210:4,
    calling_convention = '')
File 'Nodes.py', line 909, in analyse: CArgDeclNode(_dns.py:210:24,
    is_generic = 1,
    outer_attrs = [...]/2)

Compiler crash traceback from this point on:
  File "/usr/lib64/python3.8/site-packages/Cython/Compiler/Nodes.py", line 909, in analyse
    if self.annotation and env and env.directives['annotation_typing'] and self.base_type.name is None:
AttributeError: 'CAnalysedBaseTypeNode' object has no attribute 'name'