added setdefaultencoding method so reload(sys) not needed
reload(sys) could cause problem in user code - ie, sys.stdout, excepthook, and displayhook would be reset, etc
This commit is contained in:
parent
a22ca228cc
commit
52feabbe76
25 changed files with 74 additions and 50 deletions
|
@ -69,8 +69,8 @@ use ASCII. We can get Python to use UTF-8 as the default encoding by including:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,8 @@ from stanza import Action
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
@ -56,8 +56,8 @@ class ActionBot(sleekxmpp.ClientXMPP):
|
||||||
StanzaPath('iq@type=set/action'),
|
StanzaPath('iq@type=set/action'),
|
||||||
self._handle_action))
|
self._handle_action))
|
||||||
|
|
||||||
self.add_event_handler('custom_action',
|
self.add_event_handler('custom_action',
|
||||||
self._handle_action_event,
|
self._handle_action_event,
|
||||||
threaded=True)
|
threaded=True)
|
||||||
|
|
||||||
register_stanza_plugin(Iq, Action)
|
register_stanza_plugin(Iq, Action)
|
||||||
|
|
|
@ -26,8 +26,8 @@ from stanza import Action
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ from sleekxmpp.exceptions import IqError, IqTimeout
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ from sleekxmpp.exceptions import XMPPError
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@ from sleekxmpp.componentxmpp import ComponentXMPP
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,8 @@ from sleekxmpp.xmlstream import cert
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ from sleekxmpp.xmlstream import ET, tostring
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ from sleekxmpp.xmlstream.handler import Callback
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@ from sleekxmpp.exceptions import IqError, IqTimeout
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ from sleekxmpp.exceptions import IqError, IqTimeout
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import sleekxmpp
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@ from sleekxmpp.exceptions import XMPPError
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ from sleekxmpp.xmlstream import JID
|
||||||
# throughout SleekXMPP, we will set the default encoding
|
# throughout SleekXMPP, we will set the default encoding
|
||||||
# ourselves to UTF-8.
|
# ourselves to UTF-8.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
else:
|
else:
|
||||||
raw_input = input
|
raw_input = input
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,8 @@ log = logging.getLogger(__name__)
|
||||||
# In order to make sure that Unicode is handled properly
|
# In order to make sure that Unicode is handled properly
|
||||||
# in Python 2.x, reset the default encoding.
|
# in Python 2.x, reset the default encoding.
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
reload(sys)
|
from sleekxmpp.util.misc_ops import setdefaultencoding
|
||||||
sys.setdefaultencoding('utf8')
|
setdefaultencoding('utf8')
|
||||||
|
|
||||||
|
|
||||||
class BaseXMPP(XMLStream):
|
class BaseXMPP(XMLStream):
|
||||||
|
|
|
@ -125,3 +125,27 @@ def hashes():
|
||||||
t += ['MD2']
|
t += ['MD2']
|
||||||
hashes = ['SHA-' + h[3:] for h in dir(hashlib) if h.startswith('sha')]
|
hashes = ['SHA-' + h[3:] for h in dir(hashlib) if h.startswith('sha')]
|
||||||
return t + hashes
|
return t + hashes
|
||||||
|
|
||||||
|
def setdefaultencoding(encoding):
|
||||||
|
"""
|
||||||
|
Set the current default string encoding used by the Unicode implementation.
|
||||||
|
|
||||||
|
Actually calls sys.setdefaultencoding under the hood - see the docs for that
|
||||||
|
for more details. This method exists only as a way to call find/call it
|
||||||
|
even after it has been 'deleted' when the site module is executed.
|
||||||
|
|
||||||
|
:param string encoding: An encoding name, compatible with sys.setdefaultencoding
|
||||||
|
"""
|
||||||
|
func = getattr(sys, 'setdefaultencoding', None)
|
||||||
|
if func is None:
|
||||||
|
import gc
|
||||||
|
import types
|
||||||
|
for obj in gc.get_objects():
|
||||||
|
if (isinstance(obj, types.BuiltinFunctionType)
|
||||||
|
and obj.__name__ == 'setdefaultencoding'):
|
||||||
|
func = obj
|
||||||
|
break
|
||||||
|
if func is None:
|
||||||
|
raise RuntimeError("Could not find setdefaultencoding")
|
||||||
|
sys.setdefaultencoding = func
|
||||||
|
return func(encoding)
|
Loading…
Reference in a new issue