+++ /dev/null
-import sys
-from contextlib import contextmanager
-
-from eventlet.support import greenlets, six
-
-
-def get_errno(exc):
- """ Get the error code out of socket.error objects.
- socket.error in <2.5 does not have errno attribute
- socket.error in 3.x does not allow indexing access
- e.args[0] works for all.
- There are cases when args[0] is not errno.
- i.e. http://bugs.python.org/issue6471
- Maybe there are cases when errno is set, but it is not the first argument?
- """
-
- try:
- if exc.errno is not None:
- return exc.errno
- except AttributeError:
- pass
- try:
- return exc.args[0]
- except IndexError:
- return None
-
-
-if sys.version_info[0] < 3 and not greenlets.preserves_excinfo:
- from sys import exc_clear as clear_sys_exc_info
-else:
- def clear_sys_exc_info():
- """No-op In py3k.
- Exception information is not visible outside of except statements.
- sys.exc_clear became obsolete and removed."""
- pass
-
-if sys.version_info[0] < 3:
- def bytes_to_str(b, encoding='ascii'):
- return b
-else:
- def bytes_to_str(b, encoding='ascii'):
- return b.decode(encoding)
-
-PY33 = sys.version_info[:2] == (3, 3)
-
-@contextmanager
-def capture_stderr():
- stream = six.StringIO()
- original = sys.stderr
- try:
- sys.stderr = stream
- yield stream
- finally:
- sys.stderr = original
- stream.seek(0)