Make zerconf monkeypatching work on zeroconf 0.32 as well

Fixes #1936889 [zeroconf dep only works on zeroconf versions less than 0.32](https://bugs.launchpad.net/calibre/+bug/1936889)
This commit is contained in:
Kovid Goyal 2021-07-20 10:01:10 +05:30
parent beb87c45a6
commit 4f9e83e642
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -2048,14 +2048,6 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
# Copied from https://github.com/jstasiak/python-zeroconf version 0.28.1
from zeroconf import (
_HAS_A_TO_Z, _HAS_ASCII_CONTROL_CHARS, _HAS_ONLY_A_TO_Z_NUM_HYPHEN,
_HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE, _LOCAL_TRAILER,
_NONTCP_PROTOCOL_LOCAL_TRAILER, _TCP_PROTOCOL_LOCAL_TRAILER,
BadTypeInNameException
)
def monkeypatched_service_type_name(type_: str, *, strict: bool = True) -> str:
"""
Validate a fully qualified service name, instance or subtype. [rfc6763]
@ -2099,6 +2091,13 @@ def monkeypatched_service_type_name(type_: str, *, strict: bool = True) -> str:
:return: fully qualified service name (eg: _http._tcp.local.)
"""
from zeroconf import (
_HAS_A_TO_Z, _HAS_ASCII_CONTROL_CHARS, _HAS_ONLY_A_TO_Z_NUM_HYPHEN,
_HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE, _LOCAL_TRAILER,
_NONTCP_PROTOCOL_LOCAL_TRAILER, _TCP_PROTOCOL_LOCAL_TRAILER,
BadTypeInNameException
)
if type_.endswith(_TCP_PROTOCOL_LOCAL_TRAILER) or type_.endswith(_NONTCP_PROTOCOL_LOCAL_TRAILER):
remaining = type_[: -len(_TCP_PROTOCOL_LOCAL_TRAILER)].split('.')
trailer = type_[-len(_TCP_PROTOCOL_LOCAL_TRAILER) :]