2020USA
2121"""
2222
23+ from collections .abc import Iterable
2324from heapq import heapify , heappop , heappush
24- from typing import Dict , Iterable , List , Optional , Set , Tuple , Union , cast
25+ from typing import Optional , Union , cast
2526
2627from ._dns import (
2728 DNSAddress ,
3839
3940_UNIQUE_RECORD_TYPES = (DNSAddress , DNSHinfo , DNSPointer , DNSText , DNSService )
4041_UniqueRecordsType = Union [DNSAddress , DNSHinfo , DNSPointer , DNSText , DNSService ]
41- _DNSRecordCacheType = Dict [str , Dict [DNSRecord , DNSRecord ]]
42+ _DNSRecordCacheType = dict [str , dict [DNSRecord , DNSRecord ]]
4243_DNSRecord = DNSRecord
4344_str = str
4445_float = float
@@ -66,8 +67,8 @@ class DNSCache:
6667
6768 def __init__ (self ) -> None :
6869 self .cache : _DNSRecordCacheType = {}
69- self ._expire_heap : List [ Tuple [float , DNSRecord ]] = []
70- self ._expirations : Dict [DNSRecord , float ] = {}
70+ self ._expire_heap : list [ tuple [float , DNSRecord ]] = []
71+ self ._expirations : dict [DNSRecord , float ] = {}
7172 self .service_cache : _DNSRecordCacheType = {}
7273
7374 # Functions prefixed with async_ are NOT threadsafe and must
@@ -132,7 +133,7 @@ def async_remove_records(self, entries: Iterable[DNSRecord]) -> None:
132133 for entry in entries :
133134 self ._async_remove (entry )
134135
135- def async_expire (self , now : _float ) -> List [DNSRecord ]:
136+ def async_expire (self , now : _float ) -> list [DNSRecord ]:
136137 """Purge expired entries from the cache.
137138
138139 This function must be run in from event loop.
@@ -142,7 +143,7 @@ def async_expire(self, now: _float) -> List[DNSRecord]:
142143 if not (expire_heap_len := len (self ._expire_heap )):
143144 return []
144145
145- expired : List [DNSRecord ] = []
146+ expired : list [DNSRecord ] = []
146147 # Find any expired records and add them to the to-delete list
147148 while self ._expire_heap :
148149 when , record = self ._expire_heap [0 ]
@@ -189,31 +190,31 @@ def async_get_unique(self, entry: _UniqueRecordsType) -> Optional[DNSRecord]:
189190 return None
190191 return store .get (entry )
191192
192- def async_all_by_details (self , name : _str , type_ : _int , class_ : _int ) -> List [DNSRecord ]:
193+ def async_all_by_details (self , name : _str , type_ : _int , class_ : _int ) -> list [DNSRecord ]:
193194 """Gets all matching entries by details.
194195
195196 This function is not thread-safe and must be called from
196197 the event loop.
197198 """
198199 key = name .lower ()
199200 records = self .cache .get (key )
200- matches : List [DNSRecord ] = []
201+ matches : list [DNSRecord ] = []
201202 if records is None :
202203 return matches
203204 for record in records .values ():
204205 if type_ == record .type and class_ == record .class_ :
205206 matches .append (record )
206207 return matches
207208
208- def async_entries_with_name (self , name : str ) -> List [DNSRecord ]:
209+ def async_entries_with_name (self , name : str ) -> list [DNSRecord ]:
209210 """Returns a dict of entries whose key matches the name.
210211
211212 This function is not threadsafe and must be called from
212213 the event loop.
213214 """
214215 return self .entries_with_name (name )
215216
216- def async_entries_with_server (self , name : str ) -> List [DNSRecord ]:
217+ def async_entries_with_server (self , name : str ) -> list [DNSRecord ]:
217218 """Returns a dict of entries whose key matches the server.
218219
219220 This function is not threadsafe and must be called from
@@ -256,21 +257,21 @@ def get_by_details(self, name: str, type_: _int, class_: _int) -> Optional[DNSRe
256257 return cached_entry
257258 return None
258259
259- def get_all_by_details (self , name : str , type_ : _int , class_ : _int ) -> List [DNSRecord ]:
260+ def get_all_by_details (self , name : str , type_ : _int , class_ : _int ) -> list [DNSRecord ]:
260261 """Gets all matching entries by details."""
261262 key = name .lower ()
262263 records = self .cache .get (key )
263264 if records is None :
264265 return []
265266 return [entry for entry in list (records .values ()) if type_ == entry .type and class_ == entry .class_ ]
266267
267- def entries_with_server (self , server : str ) -> List [DNSRecord ]:
268+ def entries_with_server (self , server : str ) -> list [DNSRecord ]:
268269 """Returns a list of entries whose server matches the name."""
269270 if entries := self .service_cache .get (server .lower ()):
270271 return list (entries .values ())
271272 return []
272273
273- def entries_with_name (self , name : str ) -> List [DNSRecord ]:
274+ def entries_with_name (self , name : str ) -> list [DNSRecord ]:
274275 """Returns a list of entries whose key matches the name."""
275276 if entries := self .cache .get (name .lower ()):
276277 return list (entries .values ())
@@ -287,13 +288,13 @@ def current_entry_with_name_and_alias(self, name: str, alias: str) -> Optional[D
287288 return record
288289 return None
289290
290- def names (self ) -> List [str ]:
291+ def names (self ) -> list [str ]:
291292 """Return a copy of the list of current cache names."""
292293 return list (self .cache )
293294
294295 def async_mark_unique_records_older_than_1s_to_expire (
295296 self ,
296- unique_types : Set [ Tuple [_str , _int , _int ]],
297+ unique_types : set [ tuple [_str , _int , _int ]],
297298 answers : Iterable [DNSRecord ],
298299 now : _float ,
299300 ) -> None :
0 commit comments