| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -219,7 +219,7 @@ def __init__( | |||
| 219 | 219 | host_ttl: int = _DNS_HOST_TTL, | |
| 220 | 220 | other_ttl: int = _DNS_OTHER_TTL, | |
| 221 | 221 | *, | |
| 222 | - addresses: list[bytes] | None = None, | ||
| 222 | + addresses: Sequence[bytes | str] | None = None, | ||
| 223 | 223 | parsed_addresses: list[str] | None = None, | |
| 224 | 224 | interface_index: int | None = None, | |
| 225 | 225 | ) -> None: | |
@@ -292,7 +292,7 @@ def addresses(self) -> list[bytes]: | |||
| 292 | 292 | return self.addresses_by_version(IPVersion.V4Only) | |
| 293 | 293 | ||
| 294 | 294 | @addresses.setter | |
| 295 | - def addresses(self, value: list[bytes]) -> None: | ||
| 295 | + def addresses(self, value: Sequence[bytes | str]) -> None: | ||
| 296 | 296 | """Replace the addresses list. | |
| 297 | 297 | ||
| 298 | 298 | This replaces all currently stored addresses, both IPv4 and IPv6. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -137,7 +137,7 @@ def get_ip_address_object_from_record( | |||
| 137 | 137 | ||
| 138 | 138 | ||
| 139 | 139 | def ip_bytes_and_scope_to_address( | |
| 140 | - address: bytes_, scope: int_ | ||
| 140 | + address: bytes_ | str, scope: int_ | ||
| 141 | 141 | ) -> ZeroconfIPv4Address | ZeroconfIPv6Address | None: | |
| 142 | 142 | """Convert the bytes and scope to an IP address object.""" | |
| 143 | 143 | base_address = cached_ip_addresses_wrapper(address) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3071,3 +3071,30 @@ def test_denied_flag_is_ignored_when_address_is_held(zc_loopback: r.Zeroconf) -> | |||
| 3071 | 3071 | assert info.addresses == [socket.inet_aton("127.0.0.1")] | |
| 3072 | 3072 | # the held A record keeps the request querying instead of fast failing | |
| 3073 | 3073 | assert info._is_denied is False | |
| 3074 | + | ||
| 3075 | + | ||
| 3076 | + @pytest.mark.parametrize( | ||
| 3077 | + "addresses", | ||
| 3078 | + [ | ||
| 3079 | + ["10.0.1.2", "2001:db8::1"], | ||
| 3080 | + [socket.inet_aton("10.0.1.2"), socket.inet_pton(socket.AF_INET6, "2001:db8::1")], | ||
| 3081 | + ["10.0.1.2", socket.inet_pton(socket.AF_INET6, "2001:db8::1")], | ||
| 3082 | + ], | ||
| 3083 | + ) | ||
| 3084 | + def test_addresses_setter_accepts_str_and_bytes(addresses): | ||
| 3085 | + """The addresses setter accepts str and bytes addresses.""" | ||
| 3086 | + type_ = "_http._tcp.local." | ||
| 3087 | + info = ServiceInfo(type_, f"xxxyyy.{type_}", 80, server="ash-2.local.") | ||
| 3088 | + info.addresses = addresses | ||
| 3089 | + assert info.parsed_addresses() == ["10.0.1.2", "2001:db8::1"] | ||
| 3090 | + | ||
| 3091 | + info = ServiceInfo(type_, f"xxxyyy.{type_}", 80, server="ash-2.local.", addresses=addresses) | ||
| 3092 | + assert info.parsed_addresses() == ["10.0.1.2", "2001:db8::1"] | ||
| 3093 | + | ||
| 3094 | + | ||
| 3095 | + def test_addresses_setter_rejects_invalid_address(): | ||
| 3096 | + """The addresses setter raises TypeError for invalid addresses.""" | ||
| 3097 | + type_ = "_http._tcp.local." | ||
| 3098 | + info = ServiceInfo(type_, f"xxxyyy.{type_}", 80, server="ash-2.local.") | ||
| 3099 | + with pytest.raises(TypeError, match="Addresses must either be"): | ||
| 3100 | + info.addresses = ["not an address"] | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments