mirror of
https://github.com/ansible/awx.git
synced 2026-02-15 18:20:00 -03:30
49 lines
1.1 KiB
Python
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
|