safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
--- a/mercurial/sslutil.py Thu Feb 02 17:36:07 2023 +0100
+++ b/mercurial/sslutil.py Thu Feb 02 17:36:15 2023 +0100
@@ -628,7 +628,7 @@
# Otherwise, use the list of more secure ciphers if found in the ssl module.
if exactprotocol:
sslcontext.set_ciphers('DEFAULT:@SECLEVEL=0')
- elif util.safehasattr(ssl, b'_RESTRICTED_SERVER_CIPHERS'):
+ elif util.safehasattr(ssl, '_RESTRICTED_SERVER_CIPHERS'):
sslcontext.options |= getattr(ssl, 'OP_CIPHER_SERVER_PREFERENCE', 0)
# pytype: disable=module-attr
sslcontext.set_ciphers(ssl._RESTRICTED_SERVER_CIPHERS)