Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 524494e

Browse filesBrowse files
authored
feat: add ip_addresses_by_version to ServiceInfo (#1145)
1 parent 6a327d0 commit 524494e
Copy full SHA for 524494e

File tree

2 files changed

+21
-0
lines changed
Filter options

2 files changed

+21
-0
lines changed

‎src/zeroconf/_services/info.py

Copy file name to clipboardExpand all lines: src/zeroconf/_services/info.py
+10Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,16 @@ def addresses_by_version(self, version: IPVersion) -> List[bytes]:
233233
*(addr.packed for addr in self._ipv6_addresses),
234234
]
235235

236+
def ip_addresses_by_version(
237+
self, version: IPVersion
238+
) -> Union[List[ipaddress.IPv4Address], List[ipaddress.IPv6Address], List[ipaddress._BaseAddress]]:
239+
"""List ip_address objects matching IP version."""
240+
if version == IPVersion.V4Only:
241+
return self._ipv4_addresses
242+
if version == IPVersion.V6Only:
243+
return self._ipv6_addresses
244+
return [*self._ipv4_addresses, *self._ipv6_addresses]
245+
236246
def parsed_addresses(self, version: IPVersion = IPVersion.All) -> List[str]:
237247
"""List addresses in their parsed string form."""
238248
result = self.addresses_by_version(version)

‎tests/services/test_info.py

Copy file name to clipboardExpand all lines: tests/services/test_info.py
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import socket
1010
import threading
1111
import unittest
12+
from ipaddress import ip_address
1213
from threading import Event
1314
from typing import Iterable, List, Optional
1415
from unittest.mock import patch
@@ -540,8 +541,18 @@ def test_multiple_addresses():
540541
for info in infos:
541542
assert info.addresses == [address]
542543
assert info.addresses_by_version(r.IPVersion.All) == [address, address_v6, address_v6_ll]
544+
assert info.ip_addresses_by_version(r.IPVersion.All) == [
545+
ip_address(address),
546+
ip_address(address_v6),
547+
ip_address(address_v6_ll),
548+
]
543549
assert info.addresses_by_version(r.IPVersion.V4Only) == [address]
550+
assert info.ip_addresses_by_version(r.IPVersion.V4Only) == [ip_address(address)]
544551
assert info.addresses_by_version(r.IPVersion.V6Only) == [address_v6, address_v6_ll]
552+
assert info.ip_addresses_by_version(r.IPVersion.V6Only) == [
553+
ip_address(address_v6),
554+
ip_address(address_v6_ll),
555+
]
545556
assert info.parsed_addresses() == [address_parsed, address_v6_parsed, address_v6_ll_parsed]
546557
assert info.parsed_addresses(r.IPVersion.V4Only) == [address_parsed]
547558
assert info.parsed_addresses(r.IPVersion.V6Only) == [address_v6_parsed, address_v6_ll_parsed]

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.