Files
awx/awx/lib/site-packages/billiard/compat.py

49 lines
1.1 KiB
Python

from __future__ import absolute_import
import errno
import os
import sys
import __builtin__
if sys.version_info[0] == 3:
bytes = bytes
else:
try:
_bytes = __builtin__.bytes
except AttributeError:
_bytes = str
class bytes(_bytes): # noqa
def __new__(cls, *args):
if len(args) > 1:
return _bytes(args[0]).encode(*args[1:])
return _bytes(*args)
try:
closerange = os.closerange
except AttributeError:
def closerange(fd_low, fd_high): # noqa
for fd in reversed(xrange(fd_low, fd_high)):
try:
os.close(fd)
except OSError, exc:
if exc.errno != errno.EBADF:
raise
def get_errno(exc):
""":exc:`socket.error` and :exc:`IOError` first got
the ``.errno`` attribute in Py2.7"""
try:
return exc.errno
except AttributeError:
try:
# e.args = (errno, reason)
if isinstance(exc.args, tuple) and len(exc.args) == 2:
return exc.args[0]
except AttributeError:
pass
return 0