@@ -245,14 +245,24 @@ def addresses_by_version(self, version: IPVersion) -> List[bytes]:
245245 This means the first address will always be the most recently added
246246 address of the given IP version.
247247 """
248+ if version == IPVersion .All :
249+ return [
250+ * (addr .packed for addr in self ._ipv4_addresses ),
251+ * (addr .packed for addr in self ._ipv6_addresses ),
252+ ]
248253 if version == IPVersion .V4Only :
249254 return [addr .packed for addr in self ._ipv4_addresses ]
250- if version == IPVersion .V6Only :
251- return [addr .packed for addr in self ._ipv6_addresses ]
252- return [
253- * (addr .packed for addr in self ._ipv4_addresses ),
254- * (addr .packed for addr in self ._ipv6_addresses ),
255- ]
255+ return [addr .packed for addr in self ._ipv6_addresses ]
256+
257+ def _ip_addresses_by_version_value (
258+ self , version_value : int
259+ ) -> Union [List [ipaddress .IPv4Address ], List [ipaddress .IPv6Address ], List [ipaddress ._BaseAddress ]]:
260+ """Backend for addresses_by_version that uses the raw value."""
261+ if version_value == IPVersion .All .value :
262+ return [* self ._ipv4_addresses , * self ._ipv6_addresses ]
263+ if version_value == IPVersion .V4Only .value :
264+ return self ._ipv4_addresses
265+ return self ._ipv6_addresses
256266
257267 def ip_addresses_by_version (
258268 self , version : IPVersion
@@ -265,11 +275,7 @@ def ip_addresses_by_version(
265275 This means the first address will always be the most recently added
266276 address of the given IP version.
267277 """
268- if version == IPVersion .V4Only :
269- return self ._ipv4_addresses
270- if version == IPVersion .V6Only :
271- return self ._ipv6_addresses
272- return [* self ._ipv4_addresses , * self ._ipv6_addresses ]
278+ return self ._ip_addresses_by_version_value (version .value )
273279
274280 def parsed_addresses (self , version : IPVersion = IPVersion .All ) -> List [str ]:
275281 """List addresses in their parsed string form.
@@ -280,7 +286,7 @@ def parsed_addresses(self, version: IPVersion = IPVersion.All) -> List[str]:
280286 This means the first address will always be the most recently added
281287 address of the given IP version.
282288 """
283- return [str (addr ) for addr in self .ip_addresses_by_version (version )]
289+ return [str (addr ) for addr in self ._ip_addresses_by_version_value (version . value )]
284290
285291 def parsed_scoped_addresses (self , version : IPVersion = IPVersion .All ) -> List [str ]:
286292 """Equivalent to parsed_addresses, with the exception that IPv6 Link-Local
@@ -296,7 +302,7 @@ def parsed_scoped_addresses(self, version: IPVersion = IPVersion.All) -> List[st
296302 return self .parsed_addresses (version )
297303 return [
298304 f"{ addr } %{ self .interface_index } " if addr .version == 6 and addr .is_link_local else str (addr )
299- for addr in self .ip_addresses_by_version (version )
305+ for addr in self ._ip_addresses_by_version_value (version . value )
300306 ]
301307
302308 def _set_properties (self , properties : Dict ) -> None :
@@ -494,7 +500,7 @@ def dns_addresses(
494500 address .packed ,
495501 created = created ,
496502 )
497- for address in self .ip_addresses_by_version (version )
503+ for address in self ._ip_addresses_by_version_value (version . value )
498504 ]
499505
500506 def dns_pointer (self , override_ttl : Optional [int ] = None , created : Optional [float ] = None ) -> DNSPointer :
0 commit comments