2323import asyncio
2424import ipaddress
2525import random
26+ from collections .abc import Sequence
2627from functools import lru_cache
2728from typing import TYPE_CHECKING , Dict , List , Optional , Set , Union , cast
2829
@@ -366,7 +367,7 @@ def get_name(self) -> str:
366367
367368 def _get_ip_addresses_from_cache_lifo (
368369 self , zc : 'Zeroconf' , now : float , type : int
369- ) -> List [Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]]:
370+ ) -> Sequence [Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]]:
370371 """Set IPv6 addresses from the cache."""
371372 address_list : List [Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]] = []
372373 for record in self ._get_address_records_from_cache_by_type (zc , type ):
@@ -383,15 +384,17 @@ def _get_ip_addresses_from_cache_lifo(
383384
384385 def _set_ipv6_addresses_from_cache (self , zc : 'Zeroconf' , now : float ) -> None :
385386 """Set IPv6 addresses from the cache."""
386- self ._ipv6_addresses = cast (
387- "List[ipaddress.IPv6Address]" , self ._get_ip_addresses_from_cache_lifo (zc , now , _TYPE_AAAA )
388- )
387+ ipv6_addresses = self ._get_ip_addresses_from_cache_lifo (zc , now , _TYPE_AAAA )
388+ if TYPE_CHECKING :
389+ ipv6_addresses = cast ("List[ipaddress.IPv6Address]" , ipv6_addresses )
390+ self ._ipv6_addresses = ipv6_addresses
389391
390392 def _set_ipv4_addresses_from_cache (self , zc : 'Zeroconf' , now : float ) -> None :
391393 """Set IPv4 addresses from the cache."""
392- self ._ipv4_addresses = cast (
393- "List[ipaddress.IPv4Address]" , self ._get_ip_addresses_from_cache_lifo (zc , now , _TYPE_A )
394- )
394+ ipv4_addresses = self ._get_ip_addresses_from_cache_lifo (zc , now , _TYPE_A )
395+ if TYPE_CHECKING :
396+ ipv4_addresses = cast ("List[ipaddress.IPv4Address]" , ipv4_addresses )
397+ self ._ipv4_addresses = ipv4_addresses
395398
396399 def update_record (self , zc : 'Zeroconf' , now : float , record : Optional [DNSRecord ]) -> None :
397400 """Updates service information from a DNS record.
@@ -520,14 +523,17 @@ def dns_pointer(self, override_ttl: Optional[int] = None, created: Optional[floa
520523
521524 def dns_service (self , override_ttl : Optional [int ] = None , created : Optional [float ] = None ) -> DNSService :
522525 """Return DNSService from ServiceInfo."""
526+ port = self .port
527+ if TYPE_CHECKING :
528+ port = cast (int , port )
523529 return DNSService (
524530 self .name ,
525531 _TYPE_SRV ,
526532 _CLASS_IN | _CLASS_UNIQUE ,
527533 override_ttl if override_ttl is not None else self .host_ttl ,
528534 self .priority ,
529535 self .weight ,
530- cast ( int , self . port ) ,
536+ port ,
531537 self .server or self .name ,
532538 created ,
533539 )
@@ -576,7 +582,10 @@ def _get_address_records_from_cache_by_type(self, zc: 'Zeroconf', _type: int) ->
576582 """Get the addresses from the cache."""
577583 if self .server_key is None :
578584 return []
579- return cast ("List[DNSAddress]" , zc .cache .get_all_by_details (self .server_key , _type , _CLASS_IN ))
585+ result = zc .cache .get_all_by_details (self .server_key , _type , _CLASS_IN )
586+ if TYPE_CHECKING :
587+ result = cast ("List[DNSAddress]" , result )
588+ return result
580589
581590 def set_server_if_missing (self ) -> None :
582591 """Set the server if it is missing.
0 commit comments