| Index: third_party/google-endpoints/setuptools/py33compat.py
|
| diff --git a/third_party/google-endpoints/setuptools/py33compat.py b/third_party/google-endpoints/setuptools/py33compat.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0caa2003d816997921972cc5f63f180da1a2f05f
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/setuptools/py33compat.py
|
| @@ -0,0 +1,45 @@
|
| +import dis
|
| +import array
|
| +import collections
|
| +
|
| +import six
|
| +
|
| +
|
| +OpArg = collections.namedtuple('OpArg', 'opcode arg')
|
| +
|
| +
|
| +class Bytecode_compat(object):
|
| + def __init__(self, code):
|
| + self.code = code
|
| +
|
| + def __iter__(self):
|
| + """Yield '(op,arg)' pair for each operation in code object 'code'"""
|
| +
|
| + bytes = array.array('b', self.code.co_code)
|
| + eof = len(self.code.co_code)
|
| +
|
| + ptr = 0
|
| + extended_arg = 0
|
| +
|
| + while ptr < eof:
|
| +
|
| + op = bytes[ptr]
|
| +
|
| + if op >= dis.HAVE_ARGUMENT:
|
| +
|
| + arg = bytes[ptr + 1] + bytes[ptr + 2] * 256 + extended_arg
|
| + ptr += 3
|
| +
|
| + if op == dis.EXTENDED_ARG:
|
| + long_type = six.integer_types[-1]
|
| + extended_arg = arg * long_type(65536)
|
| + continue
|
| +
|
| + else:
|
| + arg = None
|
| + ptr += 1
|
| +
|
| + yield OpArg(op, arg)
|
| +
|
| +
|
| +Bytecode = getattr(dis, 'Bytecode', Bytecode_compat)
|
|
|