From 4f9e83e6426483b6cc0929c61f9207c33c573fec Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 20 Jul 2021 10:01:10 +0530 Subject: [PATCH] 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) --- src/calibre/devices/smart_device_app/driver.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/calibre/devices/smart_device_app/driver.py b/src/calibre/devices/smart_device_app/driver.py index bc779cfb7d..6a2fa5f937 100644 --- a/src/calibre/devices/smart_device_app/driver.py +++ b/src/calibre/devices/smart_device_app/driver.py @@ -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) :]