Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: third_party/google-endpoints/setuptools/py33compat.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)
« no previous file with comments | « third_party/google-endpoints/setuptools/py31compat.py ('k') | third_party/google-endpoints/setuptools/py36compat.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698