- The MD5 of the password is what the phone's login API expects, the wire
format and no protection of ours (the session runs over HTTPS):
hashlib.md5(..., usedforsecurity=False) (B324). The digest is the same.
- A failed logout in close() and an unreadable system info in get_facts()
now log at debug level (B110), so a swallowed failure leaves a trace; the
module gets its logger.
- The comment on the "yealink" fingerprint rule moves above it (ruff
format had split the line around it) and is in English.