Python-Dev
Threads by month
- ----- 2024 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1999 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
May 2016
- 79 participants
- 50 discussions
I would like to take another stab at adding a threadlocal "str(bytes)
raises an exception" to the Python interpreter, but I had a very hard time
understanding both how to add a threadlocal value to either the interpreter
state or the threadlocal dict that is part of that state, and then how to
access the same value from both Python and CPython code. The structs were
there but it was just hard to understand. Can someone explain it to me?
Thanks,
Daniel Holth
3
4
https://github.com/python/devinabox
The single issue for devinabox has moved to its own issue tracker, so
there's no need to worry about those issues cluttering b.p.o in the future.
I have made the Python core team I created on GitHub last week have write
privileges and Nick and I as admins on the repository. I have also turned
on the CLA bot for the repository (FYI
https://github.com/python/the-knights-who-say-ni has that bot's code).
I've asked Georg, Antoine, and Benjamin to tell me what I need to do to
shut off -- either by making it read-only or just deleting --
hg.python.org/devinabox.
Now that the migration has seriously begun, the next repos will be the peps
and devguide (slightly more complicated thanks to needing to update
commands for building their online versions). There's also the benchmarks
repo, but that might not get migrated if we start from scratch (see the
speed@ ML about that).
As for cpython, I've been asked to talk about it at the language summit
where I will start a conversation about what the minimal feature set will
need to be to migrate. Once we have settled on what has to be in place to
migrate the cpython repo then we can start working on that TODO list.
3
4
Re: [Python-Dev] [Python-checkins] peps: Short subsection on annotating coroutines (Ivan L, #225).
by Brett Cannon 25 May '16
by Brett Cannon 25 May '16
25 May '16
On Tue, 24 May 2016 at 12:20 guido.van.rossum <python-checkins(a)python.org>
wrote:
> https://hg.python.org/peps/rev/50c3f5aefbb7
> changeset: 6341:50c3f5aefbb7
> user: Guido van Rossum <guido(a)python.org>
> date: Tue May 24 12:18:54 2016 -0700
> summary:
> Short subsection on annotating coroutines (Ivan L, #225).
>
> files:
> pep-0484.txt | 34 ++++++++++++++++++++++++++++++++++
> 1 files changed, 34 insertions(+), 0 deletions(-)
>
>
> diff --git a/pep-0484.txt b/pep-0484.txt
> --- a/pep-0484.txt
> +++ b/pep-0484.txt
> @@ -1015,6 +1015,40 @@
> ellipsis, i.e. the above example is literally what you would write.
>
>
> +Annotating generator functions and coroutines
> +---------------------------------------------
> +
> +The return type of generator functions can be annotated by
> +the generic type ``Generator[yield_type, send_type,
> +return_type]`` provided by ``typing.py`` module::
> +
> + def echo_round() -> Generator[int, float, str]:
> + res = yield
> + while res:
> + res = yield round(res)
> + return 'OK'
> +
> +Coroutines introduced in PEP 492 are annotated with the same syntax as
> +ordinary functions. However, the return type annotation corresponds to the
> +type of ``await`` expression, not to the coroutine type::
> +
> + async def spam(ignored: int) -> str:
> + return 'spam'
> +
> + async def foo():
> + bar = await spam(42) # type: str
>
If the coroutine has multiple await expressions that return different types
then do you simply use a Union to express that?
-Brett
> +
> +The ``typing.py`` module also provides generic ABCs ``Awaitable``,
> +``AsyncIterable``, and ``AsyncIterator`` for situations where more precise
> +types cannot be specified::
> +
> + def op() -> typing.Awaitable[str]:
> + if cond:
> + return spam(42)
> + else:
> + return asyncio.Future(...)
> +
> +
> Compatibility with other uses of function annotations
> =====================================================
>
>
> --
> Repository URL: https://hg.python.org/peps
> _______________________________________________
> Python-checkins mailing list
> Python-checkins(a)python.org
> https://mail.python.org/mailman/listinfo/python-checkins
>
1
0
Three questions:
1. Should pathlib gain __fspath__() all the way back to 3.4?
2. Should pathlib's constructor support __fspath__() all the way back to
3.4? (separate question as os.fspath() will only be in 3.6; and if we
backport I'm not looking forward to making Typeshed happy w/o os.PathLike
being available only in 3.6 :/)
3. Should the docs from 3.4 and forward reflect the removal of the
provisional status? (I assume yes, but wanted to double-check)
And a quick thanks to Guido for removing `path` from pathlib for me
already. :)
9
12
Re: [Python-Dev] [Python-checkins] cpython: Issue #26647: Python interpreter now uses 16-bit wordcode instead of bytecode.
by Brett Cannon 24 May '16
by Brett Cannon 24 May '16
24 May '16
This probably deserves a "What's New" entry since it does break
bytecode-inspecting code.
On Mon, 23 May 2016 at 23:15 serhiy.storchaka <python-checkins(a)python.org>
wrote:
> https://hg.python.org/cpython/rev/3a57eafd8401
> changeset: 101486:3a57eafd8401
> user: Serhiy Storchaka <storchaka(a)gmail.com>
> date: Tue May 24 09:15:14 2016 +0300
> summary:
> Issue #26647: Python interpreter now uses 16-bit wordcode instead of
> bytecode.
> Patch by Demur Rumed.
>
> files:
> Doc/library/dis.rst | 9 +-
> Lib/ctypes/test/test_values.py | 6 +-
> Lib/dis.py | 35 +-
> Lib/importlib/_bootstrap_external.py | 3 +-
> Lib/test/test_dis.py | 512 +-
> Misc/NEWS | 3 +
> Objects/frameobject.c | 12 +-
> Objects/genobject.c | 4 +-
> PC/launcher.c | 2 +-
> PCbuild/pythoncore.vcxproj | 1 +
> PCbuild/pythoncore.vcxproj.filters | 3 +
> Python/ceval.c | 133 +-
> Python/compile.c | 81 +-
> Python/frozen.c | 20 +-
> Python/importlib.h | 3719 +++++-----
> Python/importlib_external.h | 4612 ++++++-------
> Python/peephole.c | 578 +-
> Python/wordcode_helpers.h | 38 +
> 18 files changed, 4748 insertions(+), 5023 deletions(-)
>
>
> diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
> --- a/Doc/library/dis.rst
> +++ b/Doc/library/dis.rst
> @@ -31,9 +31,9 @@
>
> >>> dis.dis(myfunc)
> 2 0 LOAD_GLOBAL 0 (len)
> - 3 LOAD_FAST 0 (alist)
> - 6 CALL_FUNCTION 1
> - 9 RETURN_VALUE
> + 2 LOAD_FAST 0 (alist)
> + 4 CALL_FUNCTION 1
> + 6 RETURN_VALUE
>
> (The "2" is a line number).
>
> @@ -682,8 +682,7 @@
> .. XXX explain the WHY stuff!
>
>
> -All of the following opcodes expect arguments. An argument is two bytes,
> with
> -the more significant byte last.
> +All of the following opcodes use their arguments.
>
> .. opcode:: STORE_NAME (namei)
>
> diff --git a/Lib/ctypes/test/test_values.py
> b/Lib/ctypes/test/test_values.py
> --- a/Lib/ctypes/test/test_values.py
> +++ b/Lib/ctypes/test/test_values.py
> @@ -79,9 +79,9 @@
> continue
> items.append((entry.name.decode("ascii"), entry.size))
>
> - expected = [("__hello__", 161),
> - ("__phello__", -161),
> - ("__phello__.spam", 161),
> + expected = [("__hello__", 139),
> + ("__phello__", -139),
> + ("__phello__.spam", 139),
> ]
> self.assertEqual(items, expected, "PyImport_FrozenModules example
> "
> "in Doc/library/ctypes.rst may be out of date")
> diff --git a/Lib/dis.py b/Lib/dis.py
> --- a/Lib/dis.py
> +++ b/Lib/dis.py
> @@ -285,7 +285,6 @@
> """
> labels = findlabels(code)
> starts_line = None
> - free = None
> for offset, op, arg in _unpack_opargs(code):
> if linestarts is not None:
> starts_line = linestarts.get(offset, None)
> @@ -296,7 +295,7 @@
> argrepr = ''
> if arg is not None:
> # Set argval to the dereferenced value of the argument when
> - # availabe, and argrepr to the string representation of
> argval.
> + # available, and argrepr to the string representation of
> argval.
> # _disassemble_bytes needs the string repr of the
> # raw name index for LOAD_GLOBAL, LOAD_CONST, etc.
> argval = arg
> @@ -305,7 +304,7 @@
> elif op in hasname:
> argval, argrepr = _get_name_info(arg, names)
> elif op in hasjrel:
> - argval = offset + 3 + arg
> + argval = offset + 2 + arg
> argrepr = "to " + repr(argval)
> elif op in haslocal:
> argval, argrepr = _get_name_info(arg, varnames)
> @@ -352,23 +351,15 @@
> disco = disassemble # XXX For backwards compatibility
>
> def _unpack_opargs(code):
> - # enumerate() is not an option, since we sometimes process
> - # multiple elements on a single pass through the loop
> extended_arg = 0
> - n = len(code)
> - i = 0
> - while i < n:
> + for i in range(0, len(code), 2):
> op = code[i]
> - offset = i
> - i = i+1
> - arg = None
> if op >= HAVE_ARGUMENT:
> - arg = code[i] + code[i+1]*256 + extended_arg
> - extended_arg = 0
> - i = i+2
> - if op == EXTENDED_ARG:
> - extended_arg = arg*65536
> - yield (offset, op, arg)
> + arg = code[i+1] | extended_arg
> + extended_arg = (arg << 8) if op == EXTENDED_ARG else 0
> + else:
> + arg = None
> + yield (i, op, arg)
>
> def findlabels(code):
> """Detect all offsets in a byte code which are jump targets.
> @@ -379,14 +370,14 @@
> labels = []
> for offset, op, arg in _unpack_opargs(code):
> if arg is not None:
> - label = -1
> if op in hasjrel:
> - label = offset + 3 + arg
> + label = offset + 2 + arg
> elif op in hasjabs:
> label = arg
> - if label >= 0:
> - if label not in labels:
> - labels.append(label)
> + else:
> + continue
> + if label not in labels:
> + labels.append(label)
> return labels
>
> def findlinestarts(code):
> diff --git a/Lib/importlib/_bootstrap_external.py
> b/Lib/importlib/_bootstrap_external.py
> --- a/Lib/importlib/_bootstrap_external.py
> +++ b/Lib/importlib/_bootstrap_external.py
> @@ -225,6 +225,7 @@
> # Python 3.5b2 3350 (add GET_YIELD_FROM_ITER opcode #24400)
> # Python 3.6a0 3360 (add FORMAT_VALUE opcode #25483
> # Python 3.6a0 3361 (lineno delta of code.co_lnotab becomes signed)
> +# Python 3.6a0 3370 (16 bit wordcode)
> #
> # MAGIC must change whenever the bytecode emitted by the compiler may no
> # longer be understood by older implementations of the eval loop (usually
> @@ -233,7 +234,7 @@
> # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
> # in PC/launcher.c must also be updated.
>
> -MAGIC_NUMBER = (3361).to_bytes(2, 'little') + b'\r\n'
> +MAGIC_NUMBER = (3370).to_bytes(2, 'little') + b'\r\n'
> _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
>
> _PYCACHE = '__pycache__'
> diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py
> --- a/Lib/test/test_dis.py
> +++ b/Lib/test/test_dis.py
> @@ -40,41 +40,41 @@
>
> dis_c_instance_method = """\
> %3d 0 LOAD_FAST 1 (x)
> - 3 LOAD_CONST 1 (1)
> - 6 COMPARE_OP 2 (==)
> - 9 LOAD_FAST 0 (self)
> - 12 STORE_ATTR 0 (x)
> - 15 LOAD_CONST 0 (None)
> - 18 RETURN_VALUE
> + 2 LOAD_CONST 1 (1)
> + 4 COMPARE_OP 2 (==)
> + 6 LOAD_FAST 0 (self)
> + 8 STORE_ATTR 0 (x)
> + 10 LOAD_CONST 0 (None)
> + 12 RETURN_VALUE
> """ % (_C.__init__.__code__.co_firstlineno + 1,)
>
> dis_c_instance_method_bytes = """\
> 0 LOAD_FAST 1 (1)
> - 3 LOAD_CONST 1 (1)
> - 6 COMPARE_OP 2 (==)
> - 9 LOAD_FAST 0 (0)
> - 12 STORE_ATTR 0 (0)
> - 15 LOAD_CONST 0 (0)
> - 18 RETURN_VALUE
> + 2 LOAD_CONST 1 (1)
> + 4 COMPARE_OP 2 (==)
> + 6 LOAD_FAST 0 (0)
> + 8 STORE_ATTR 0 (0)
> + 10 LOAD_CONST 0 (0)
> + 12 RETURN_VALUE
> """
>
> dis_c_class_method = """\
> %3d 0 LOAD_FAST 1 (x)
> - 3 LOAD_CONST 1 (1)
> - 6 COMPARE_OP 2 (==)
> - 9 LOAD_FAST 0 (cls)
> - 12 STORE_ATTR 0 (x)
> - 15 LOAD_CONST 0 (None)
> - 18 RETURN_VALUE
> + 2 LOAD_CONST 1 (1)
> + 4 COMPARE_OP 2 (==)
> + 6 LOAD_FAST 0 (cls)
> + 8 STORE_ATTR 0 (x)
> + 10 LOAD_CONST 0 (None)
> + 12 RETURN_VALUE
> """ % (_C.cm.__code__.co_firstlineno + 2,)
>
> dis_c_static_method = """\
> %3d 0 LOAD_FAST 0 (x)
> - 3 LOAD_CONST 1 (1)
> - 6 COMPARE_OP 2 (==)
> - 9 STORE_FAST 0 (x)
> - 12 LOAD_CONST 0 (None)
> - 15 RETURN_VALUE
> + 2 LOAD_CONST 1 (1)
> + 4 COMPARE_OP 2 (==)
> + 6 STORE_FAST 0 (x)
> + 8 LOAD_CONST 0 (None)
> + 10 RETURN_VALUE
> """ % (_C.sm.__code__.co_firstlineno + 2,)
>
> # Class disassembling info has an extra newline at end.
> @@ -95,23 +95,23 @@
>
> dis_f = """\
> %3d 0 LOAD_GLOBAL 0 (print)
> - 3 LOAD_FAST 0 (a)
> - 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> - 9 POP_TOP
> + 2 LOAD_FAST 0 (a)
> + 4 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> + 6 POP_TOP
>
> -%3d 10 LOAD_CONST 1 (1)
> - 13 RETURN_VALUE
> +%3d 8 LOAD_CONST 1 (1)
> + 10 RETURN_VALUE
> """ % (_f.__code__.co_firstlineno + 1,
> _f.__code__.co_firstlineno + 2)
>
>
> dis_f_co_code = """\
> 0 LOAD_GLOBAL 0 (0)
> - 3 LOAD_FAST 0 (0)
> - 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> - 9 POP_TOP
> - 10 LOAD_CONST 1 (1)
> - 13 RETURN_VALUE
> + 2 LOAD_FAST 0 (0)
> + 4 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> + 6 POP_TOP
> + 8 LOAD_CONST 1 (1)
> + 10 RETURN_VALUE
> """
>
>
> @@ -121,20 +121,20 @@
> pass
>
> dis_bug708901 = """\
> -%3d 0 SETUP_LOOP 23 (to 26)
> - 3 LOAD_GLOBAL 0 (range)
> - 6 LOAD_CONST 1 (1)
> +%3d 0 SETUP_LOOP 18 (to 20)
> + 2 LOAD_GLOBAL 0 (range)
> + 4 LOAD_CONST 1 (1)
>
> -%3d 9 LOAD_CONST 2 (10)
> - 12 CALL_FUNCTION 2 (2 positional, 0 keyword pair)
> - 15 GET_ITER
> - >> 16 FOR_ITER 6 (to 25)
> - 19 STORE_FAST 0 (res)
> +%3d 6 LOAD_CONST 2 (10)
> + 8 CALL_FUNCTION 2 (2 positional, 0 keyword pair)
> + 10 GET_ITER
> + >> 12 FOR_ITER 4 (to 18)
> + 14 STORE_FAST 0 (res)
>
> -%3d 22 JUMP_ABSOLUTE 16
> - >> 25 POP_BLOCK
> - >> 26 LOAD_CONST 0 (None)
> - 29 RETURN_VALUE
> +%3d 16 JUMP_ABSOLUTE 12
> + >> 18 POP_BLOCK
> + >> 20 LOAD_CONST 0 (None)
> + 22 RETURN_VALUE
> """ % (bug708901.__code__.co_firstlineno + 1,
> bug708901.__code__.co_firstlineno + 2,
> bug708901.__code__.co_firstlineno + 3)
> @@ -147,22 +147,22 @@
>
> dis_bug1333982 = """\
> %3d 0 LOAD_CONST 1 (0)
> - 3 POP_JUMP_IF_TRUE 35
> - 6 LOAD_GLOBAL 0 (AssertionError)
> - 9 LOAD_CONST 2 (<code object <listcomp> at
> 0x..., file "%s", line %d>)
> - 12 LOAD_CONST 3
> ('bug1333982.<locals>.<listcomp>')
> - 15 MAKE_FUNCTION 0
> - 18 LOAD_FAST 0 (x)
> - 21 GET_ITER
> + 2 POP_JUMP_IF_TRUE 26
> + 4 LOAD_GLOBAL 0 (AssertionError)
> + 6 LOAD_CONST 2 (<code object <listcomp> at
> 0x..., file "%s", line %d>)
> + 8 LOAD_CONST 3
> ('bug1333982.<locals>.<listcomp>')
> + 10 MAKE_FUNCTION 0
> + 12 LOAD_FAST 0 (x)
> + 14 GET_ITER
> + 16 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> +
> +%3d 18 LOAD_CONST 4 (1)
> + 20 BINARY_ADD
> 22 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> + 24 RAISE_VARARGS 1
>
> -%3d 25 LOAD_CONST 4 (1)
> - 28 BINARY_ADD
> - 29 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
> - 32 RAISE_VARARGS 1
> -
> -%3d >> 35 LOAD_CONST 0 (None)
> - 38 RETURN_VALUE
> +%3d >> 26 LOAD_CONST 0 (None)
> + 28 RETURN_VALUE
> """ % (bug1333982.__code__.co_firstlineno + 1,
> __file__,
> bug1333982.__code__.co_firstlineno + 1,
> @@ -171,19 +171,19 @@
>
> _BIG_LINENO_FORMAT = """\
> %3d 0 LOAD_GLOBAL 0 (spam)
> - 3 POP_TOP
> + 2 POP_TOP
> 4 LOAD_CONST 0 (None)
> - 7 RETURN_VALUE
> + 6 RETURN_VALUE
> """
>
> dis_module_expected_results = """\
> Disassembly of f:
> 4 0 LOAD_CONST 0 (None)
> - 3 RETURN_VALUE
> + 2 RETURN_VALUE
>
> Disassembly of g:
> 5 0 LOAD_CONST 0 (None)
> - 3 RETURN_VALUE
> + 2 RETURN_VALUE
>
> """
>
> @@ -191,20 +191,20 @@
>
> dis_expr_str = """\
> 1 0 LOAD_NAME 0 (x)
> - 3 LOAD_CONST 0 (1)
> - 6 BINARY_ADD
> - 7 RETURN_VALUE
> + 2 LOAD_CONST 0 (1)
> + 4 BINARY_ADD
> + 6 RETURN_VALUE
> """
>
> simple_stmt_str = "x = x + 1"
>
> dis_simple_stmt_str = """\
> 1 0 LOAD_NAME 0 (x)
> - 3 LOAD_CONST 0 (1)
> - 6 BINARY_ADD
> - 7 STORE_NAME 0 (x)
> - 10 LOAD_CONST 1 (None)
> - 13 RETURN_VALUE
> + 2 LOAD_CONST 0 (1)
> + 4 BINARY_ADD
> + 6 STORE_NAME 0 (x)
> + 8 LOAD_CONST 1 (None)
> + 10 RETURN_VALUE
> """
>
> compound_stmt_str = """\
> @@ -215,54 +215,54 @@
>
> dis_compound_stmt_str = """\
> 1 0 LOAD_CONST 0 (0)
> - 3 STORE_NAME 0 (x)
> + 2 STORE_NAME 0 (x)
>
> - 2 6 SETUP_LOOP 14 (to 23)
> + 2 4 SETUP_LOOP 12 (to 18)
>
> - 3 >> 9 LOAD_NAME 0 (x)
> - 12 LOAD_CONST 1 (1)
> - 15 INPLACE_ADD
> - 16 STORE_NAME 0 (x)
> - 19 JUMP_ABSOLUTE 9
> - 22 POP_BLOCK
> - >> 23 LOAD_CONST 2 (None)
> - 26 RETURN_VALUE
> + 3 >> 6 LOAD_NAME 0 (x)
> + 8 LOAD_CONST 1 (1)
> + 10 INPLACE_ADD
> + 12 STORE_NAME 0 (x)
> + 14 JUMP_ABSOLUTE 6
> + 16 POP_BLOCK
> + >> 18 LOAD_CONST 2 (None)
> + 20 RETURN_VALUE
> """
>
> dis_traceback = """\
> -%3d 0 SETUP_EXCEPT 12 (to 15)
> +%3d 0 SETUP_EXCEPT 12 (to 14)
>
> -%3d 3 LOAD_CONST 1 (1)
> - 6 LOAD_CONST 2 (0)
> - --> 9 BINARY_TRUE_DIVIDE
> - 10 POP_TOP
> - 11 POP_BLOCK
> - 12 JUMP_FORWARD 46 (to 61)
> +%3d 2 LOAD_CONST 1 (1)
> + 4 LOAD_CONST 2 (0)
> + --> 6 BINARY_TRUE_DIVIDE
> + 8 POP_TOP
> + 10 POP_BLOCK
> + 12 JUMP_FORWARD 40 (to 54)
>
> -%3d >> 15 DUP_TOP
> +%3d >> 14 DUP_TOP
> 16 LOAD_GLOBAL 0 (Exception)
> - 19 COMPARE_OP 10 (exception match)
> - 22 POP_JUMP_IF_FALSE 60
> - 25 POP_TOP
> - 26 STORE_FAST 0 (e)
> - 29 POP_TOP
> - 30 SETUP_FINALLY 14 (to 47)
> + 18 COMPARE_OP 10 (exception match)
> + 20 POP_JUMP_IF_FALSE 52
> + 22 POP_TOP
> + 24 STORE_FAST 0 (e)
> + 26 POP_TOP
> + 28 SETUP_FINALLY 12 (to 42)
>
> -%3d 33 LOAD_FAST 0 (e)
> - 36 LOAD_ATTR 1 (__traceback__)
> - 39 STORE_FAST 1 (tb)
> - 42 POP_BLOCK
> - 43 POP_EXCEPT
> - 44 LOAD_CONST 0 (None)
> - >> 47 LOAD_CONST 0 (None)
> - 50 STORE_FAST 0 (e)
> - 53 DELETE_FAST 0 (e)
> - 56 END_FINALLY
> - 57 JUMP_FORWARD 1 (to 61)
> - >> 60 END_FINALLY
> +%3d 30 LOAD_FAST 0 (e)
> + 32 LOAD_ATTR 1 (__traceback__)
> + 34 STORE_FAST 1 (tb)
> + 36 POP_BLOCK
> + 38 POP_EXCEPT
> + 40 LOAD_CONST 0 (None)
> + >> 42 LOAD_CONST 0 (None)
> + 44 STORE_FAST 0 (e)
> + 46 DELETE_FAST 0 (e)
> + 48 END_FINALLY
> + 50 JUMP_FORWARD 2 (to 54)
> + >> 52 END_FINALLY
>
> -%3d >> 61 LOAD_FAST 1 (tb)
> - 64 RETURN_VALUE
> +%3d >> 54 LOAD_FAST 1 (tb)
> + 56 RETURN_VALUE
> """ % (TRACEBACK_CODE.co_firstlineno + 1,
> TRACEBACK_CODE.co_firstlineno + 2,
> TRACEBACK_CODE.co_firstlineno + 3,
> @@ -650,170 +650,170 @@
> Instruction = dis.Instruction
> expected_opinfo_outer = [
> Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=3,
> argrepr='3', offset=0, starts_line=2, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=3, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='a',
> argrepr='a', offset=6, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='b',
> argrepr='b', offset=9, starts_line=None, is_jump_target=False),
> - Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2,
> argrepr='', offset=12, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=3,
> argval=code_object_f, argrepr=repr(code_object_f), offset=15,
> starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=4,
> argval='outer.<locals>.f', argrepr="'outer.<locals>.f'", offset=18,
> starts_line=None, is_jump_target=False),
> - Instruction(opname='MAKE_CLOSURE', opcode=134, arg=2, argval=2,
> argrepr='', offset=21, starts_line=None, is_jump_target=False),
> - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f',
> argrepr='f', offset=24, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print',
> argrepr='print', offset=27, starts_line=7, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a',
> argrepr='a', offset=30, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b',
> argrepr='b', offset=33, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='',
> argrepr="''", offset=36, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1,
> argrepr='1', offset=39, starts_line=None, is_jump_target=False),
> - Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0,
> argrepr='', offset=42, starts_line=None, is_jump_target=False),
> - Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0,
> argrepr='', offset=45, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello
> world!', argrepr="'Hello world!'", offset=48, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7,
> argrepr='7 positional, 0 keyword pair', offset=51, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=54, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f',
> argrepr='f', offset=55, starts_line=8, is_jump_target=False),
> - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=58, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=2, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='a',
> argrepr='a', offset=4, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='b',
> argrepr='b', offset=6, starts_line=None, is_jump_target=False),
> + Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2,
> argrepr='', offset=8, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=3,
> argval=code_object_f, argrepr=repr(code_object_f), offset=10,
> starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=4,
> argval='outer.<locals>.f', argrepr="'outer.<locals>.f'", offset=12,
> starts_line=None, is_jump_target=False),
> + Instruction(opname='MAKE_CLOSURE', opcode=134, arg=2, argval=2,
> argrepr='', offset=14, starts_line=None, is_jump_target=False),
> + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f',
> argrepr='f', offset=16, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print',
> argrepr='print', offset=18, starts_line=7, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a',
> argrepr='a', offset=20, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b',
> argrepr='b', offset=22, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='',
> argrepr="''", offset=24, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1,
> argrepr='1', offset=26, starts_line=None, is_jump_target=False),
> + Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0,
> argrepr='', offset=28, starts_line=None, is_jump_target=False),
> + Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0,
> argrepr='', offset=30, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello
> world!', argrepr="'Hello world!'", offset=32, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7,
> argrepr='7 positional, 0 keyword pair', offset=34, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=36, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f',
> argrepr='f', offset=38, starts_line=8, is_jump_target=False),
> + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=40, starts_line=None, is_jump_target=False),
> ]
>
> expected_opinfo_f = [
> Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=5,
> argrepr='5', offset=0, starts_line=3, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=6,
> argrepr='6', offset=3, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=2, argval='a',
> argrepr='a', offset=6, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='b',
> argrepr='b', offset=9, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='c',
> argrepr='c', offset=12, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='d',
> argrepr='d', offset=15, starts_line=None, is_jump_target=False),
> - Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4,
> argrepr='', offset=18, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=3,
> argval=code_object_inner, argrepr=repr(code_object_inner), offset=21,
> starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=4,
> argval='outer.<locals>.f.<locals>.inner',
> argrepr="'outer.<locals>.f.<locals>.inner'", offset=24, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='MAKE_CLOSURE', opcode=134, arg=2, argval=2,
> argrepr='', offset=27, starts_line=None, is_jump_target=False),
> - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner',
> argrepr='inner', offset=30, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print',
> argrepr='print', offset=33, starts_line=5, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a',
> argrepr='a', offset=36, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b',
> argrepr='b', offset=39, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='c',
> argrepr='c', offset=42, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='d',
> argrepr='d', offset=45, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4,
> argrepr='4 positional, 0 keyword pair', offset=48, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=51, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner',
> argrepr='inner', offset=52, starts_line=6, is_jump_target=False),
> - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=55, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=6,
> argrepr='6', offset=2, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=2, argval='a',
> argrepr='a', offset=4, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='b',
> argrepr='b', offset=6, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='c',
> argrepr='c', offset=8, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='d',
> argrepr='d', offset=10, starts_line=None, is_jump_target=False),
> + Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4,
> argrepr='', offset=12, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=3,
> argval=code_object_inner, argrepr=repr(code_object_inner), offset=14,
> starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=4,
> argval='outer.<locals>.f.<locals>.inner',
> argrepr="'outer.<locals>.f.<locals>.inner'", offset=16, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='MAKE_CLOSURE', opcode=134, arg=2, argval=2,
> argrepr='', offset=18, starts_line=None, is_jump_target=False),
> + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner',
> argrepr='inner', offset=20, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print',
> argrepr='print', offset=22, starts_line=5, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a',
> argrepr='a', offset=24, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b',
> argrepr='b', offset=26, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='c',
> argrepr='c', offset=28, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='d',
> argrepr='d', offset=30, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4,
> argrepr='4 positional, 0 keyword pair', offset=32, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=34, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner',
> argrepr='inner', offset=36, starts_line=6, is_jump_target=False),
> + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=38, starts_line=None, is_jump_target=False),
> ]
>
> expected_opinfo_inner = [
> Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print',
> argrepr='print', offset=0, starts_line=4, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a',
> argrepr='a', offset=3, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b',
> argrepr='b', offset=6, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='c',
> argrepr='c', offset=9, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='d',
> argrepr='d', offset=12, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e',
> argrepr='e', offset=15, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f',
> argrepr='f', offset=18, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6,
> argrepr='6 positional, 0 keyword pair', offset=21, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=24, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=25, starts_line=None, is_jump_target=False),
> - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=28, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a',
> argrepr='a', offset=2, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b',
> argrepr='b', offset=4, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='c',
> argrepr='c', offset=6, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='d',
> argrepr='d', offset=8, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e',
> argrepr='e', offset=10, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f',
> argrepr='f', offset=12, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6,
> argrepr='6 positional, 0 keyword pair', offset=14, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=16, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=18, starts_line=None, is_jump_target=False),
> + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=20, starts_line=None, is_jump_target=False),
> ]
>
> expected_opinfo_jumpy = [
> - Instruction(opname='SETUP_LOOP', opcode=120, arg=68, argval=71,
> argrepr='to 71', offset=0, starts_line=3, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range',
> argrepr='range', offset=3, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10,
> argrepr='10', offset=6, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=9, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None,
> argrepr='', offset=12, starts_line=None, is_jump_target=False),
> - Instruction(opname='FOR_ITER', opcode=93, arg=44, argval=60,
> argrepr='to 60', offset=13, starts_line=None, is_jump_target=True),
> - Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i',
> argrepr='i', offset=16, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=19, starts_line=4, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=22, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=25, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=28, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=29, starts_line=5, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=32, starts_line=None, is_jump_target=False),
> - Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<',
> argrepr='<', offset=35, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=44, argval=44,
> argrepr='', offset=38, starts_line=None, is_jump_target=False),
> - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=13, argval=13,
> argrepr='', offset=41, starts_line=6, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=44, starts_line=7, is_jump_target=True),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6,
> argrepr='6', offset=47, starts_line=None, is_jump_target=False),
> - Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>',
> argrepr='>', offset=50, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=13, argval=13,
> argrepr='', offset=53, starts_line=None, is_jump_target=False),
> - Instruction(opname='BREAK_LOOP', opcode=80, arg=None, argval=None,
> argrepr='', offset=56, starts_line=8, is_jump_target=False),
> - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=13, argval=13,
> argrepr='', offset=57, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=60, starts_line=None, is_jump_target=True),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=61, starts_line=10, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz
> else clause?', argrepr="'I can haz else clause?'", offset=64,
> starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=67, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=70, starts_line=None, is_jump_target=False),
> - Instruction(opname='SETUP_LOOP', opcode=120, arg=68, argval=142,
> argrepr='to 142', offset=71, starts_line=11, is_jump_target=True),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=74, starts_line=None, is_jump_target=True),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=131,
> argval=131, argrepr='', offset=77, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=80, starts_line=12, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=83, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=86, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=89, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=90, starts_line=13, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1,
> argrepr='1', offset=93, starts_line=None, is_jump_target=False),
> - Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None,
> argval=None, argrepr='', offset=96, starts_line=None, is_jump_target=False),
> - Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i',
> argrepr='i', offset=97, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=100, starts_line=14, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6,
> argrepr='6', offset=103, starts_line=None, is_jump_target=False),
> - Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>',
> argrepr='>', offset=106, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=115,
> argval=115, argrepr='', offset=109, starts_line=None, is_jump_target=False),
> - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=74, argval=74,
> argrepr='', offset=112, starts_line=15, is_jump_target=False),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=115, starts_line=16, is_jump_target=True),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=118, starts_line=None, is_jump_target=False),
> - Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<',
> argrepr='<', offset=121, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=74, argval=74,
> argrepr='', offset=124, starts_line=None, is_jump_target=False),
> - Instruction(opname='BREAK_LOOP', opcode=80, arg=None, argval=None,
> argrepr='', offset=127, starts_line=17, is_jump_target=False),
> - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=74, argval=74,
> argrepr='', offset=128, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=131, starts_line=None, is_jump_target=True),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=132, starts_line=19, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let
> lolcatz into this test suite?', argrepr="'Who let lolcatz into this test
> suite?'", offset=135, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=138, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=141, starts_line=None, is_jump_target=False),
> - Instruction(opname='SETUP_FINALLY', opcode=122, arg=73, argval=218,
> argrepr='to 218', offset=142, starts_line=20, is_jump_target=True),
> - Instruction(opname='SETUP_EXCEPT', opcode=121, arg=12, argval=160,
> argrepr='to 160', offset=145, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1,
> argrepr='1', offset=148, starts_line=21, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0,
> argrepr='0', offset=151, starts_line=None, is_jump_target=False),
> - Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None,
> argval=None, argrepr='', offset=154, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=155, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=156, starts_line=None, is_jump_target=False),
> - Instruction(opname='JUMP_FORWARD', opcode=110, arg=28, argval=188,
> argrepr='to 188', offset=157, starts_line=None, is_jump_target=False),
> - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None,
> argrepr='', offset=160, starts_line=22, is_jump_target=True),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2,
> argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=161,
> starts_line=None, is_jump_target=False),
> - Instruction(opname='COMPARE_OP', opcode=107, arg=10, argval='exception
> match', argrepr='exception match', offset=164, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=187,
> argval=187, argrepr='', offset=167, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=170, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=171, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=172, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=173, starts_line=23, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go,
> here we go, here we go...', argrepr="'Here we go, here we go, here we
> go...'", offset=176, starts_line=None, is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=179, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=182, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None,
> argrepr='', offset=183, starts_line=None, is_jump_target=False),
> - Instruction(opname='JUMP_FORWARD', opcode=110, arg=27, argval=214,
> argrepr='to 214', offset=184, starts_line=None, is_jump_target=False),
> - Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=187, starts_line=None, is_jump_target=True),
> - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=188, starts_line=25, is_jump_target=True),
> - Instruction(opname='SETUP_WITH', opcode=143, arg=17, argval=211,
> argrepr='to 211', offset=191, starts_line=None, is_jump_target=False),
> - Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy',
> argrepr='dodgy', offset=194, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=197, starts_line=26, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach
> this', argrepr="'Never reach this'", offset=200, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=203, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=206, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=207, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=208, starts_line=None, is_jump_target=False),
> - Instruction(opname='WITH_CLEANUP_START', opcode=81, arg=None,
> argval=None, argrepr='', offset=211, starts_line=None, is_jump_target=True),
> - Instruction(opname='WITH_CLEANUP_FINISH', opcode=82, arg=None,
> argval=None, argrepr='', offset=212, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=213, starts_line=None, is_jump_target=False),
> - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=214, starts_line=None, is_jump_target=True),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=215, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=218, starts_line=28, is_jump_target=True),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now
> we're done", argrepr='"OK, now we\'re done"', offset=221, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=224, starts_line=None,
> is_jump_target=False),
> - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=227, starts_line=None, is_jump_target=False),
> - Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=228, starts_line=None, is_jump_target=False),
> - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=229, starts_line=None, is_jump_target=False),
> - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=232, starts_line=None, is_jump_target=False),
> + Instruction(opname='SETUP_LOOP', opcode=120, arg=52, argval=54,
> argrepr='to 54', offset=0, starts_line=3, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range',
> argrepr='range', offset=2, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10,
> argrepr='10', offset=4, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=6, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None,
> argrepr='', offset=8, starts_line=None, is_jump_target=False),
> + Instruction(opname='FOR_ITER', opcode=93, arg=32, argval=44,
> argrepr='to 44', offset=10, starts_line=None, is_jump_target=True),
> + Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i',
> argrepr='i', offset=12, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=14, starts_line=4, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=16, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=18, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=20, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=22, starts_line=5, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=24, starts_line=None, is_jump_target=False),
> + Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<',
> argrepr='<', offset=26, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=32, argval=32,
> argrepr='', offset=28, starts_line=None, is_jump_target=False),
> + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=10, argval=10,
> argrepr='', offset=30, starts_line=6, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=32, starts_line=7, is_jump_target=True),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6,
> argrepr='6', offset=34, starts_line=None, is_jump_target=False),
> + Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>',
> argrepr='>', offset=36, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=10, argval=10,
> argrepr='', offset=38, starts_line=None, is_jump_target=False),
> + Instruction(opname='BREAK_LOOP', opcode=80, arg=None, argval=None,
> argrepr='', offset=40, starts_line=8, is_jump_target=False),
> + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=10, argval=10,
> argrepr='', offset=42, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=44, starts_line=None, is_jump_target=True),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=46, starts_line=10, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz
> else clause?', argrepr="'I can haz else clause?'", offset=48,
> starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=50, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=52, starts_line=None, is_jump_target=False),
> + Instruction(opname='SETUP_LOOP', opcode=120, arg=52, argval=108,
> argrepr='to 108', offset=54, starts_line=11, is_jump_target=True),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=56, starts_line=None, is_jump_target=True),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=98, argval=98,
> argrepr='', offset=58, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=60, starts_line=12, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=62, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=64, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=66, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=68, starts_line=13, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1,
> argrepr='1', offset=70, starts_line=None, is_jump_target=False),
> + Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None,
> argval=None, argrepr='', offset=72, starts_line=None, is_jump_target=False),
> + Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i',
> argrepr='i', offset=74, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=76, starts_line=14, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6,
> argrepr='6', offset=78, starts_line=None, is_jump_target=False),
> + Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>',
> argrepr='>', offset=80, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=86, argval=86,
> argrepr='', offset=82, starts_line=None, is_jump_target=False),
> + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=56, argval=56,
> argrepr='', offset=84, starts_line=15, is_jump_target=False),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=86, starts_line=16, is_jump_target=True),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4,
> argrepr='4', offset=88, starts_line=None, is_jump_target=False),
> + Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<',
> argrepr='<', offset=90, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=56, argval=56,
> argrepr='', offset=92, starts_line=None, is_jump_target=False),
> + Instruction(opname='BREAK_LOOP', opcode=80, arg=None, argval=None,
> argrepr='', offset=94, starts_line=17, is_jump_target=False),
> + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=56, argval=56,
> argrepr='', offset=96, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=98, starts_line=None, is_jump_target=True),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=100, starts_line=19, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let
> lolcatz into this test suite?', argrepr="'Who let lolcatz into this test
> suite?'", offset=102, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=104, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=106, starts_line=None, is_jump_target=False),
> + Instruction(opname='SETUP_FINALLY', opcode=122, arg=70, argval=180,
> argrepr='to 180', offset=108, starts_line=20, is_jump_target=True),
> + Instruction(opname='SETUP_EXCEPT', opcode=121, arg=12, argval=124,
> argrepr='to 124', offset=110, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1,
> argrepr='1', offset=112, starts_line=21, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0,
> argrepr='0', offset=114, starts_line=None, is_jump_target=False),
> + Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None,
> argval=None, argrepr='', offset=116, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=118, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=120, starts_line=None, is_jump_target=False),
> + Instruction(opname='JUMP_FORWARD', opcode=110, arg=28, argval=152,
> argrepr='to 152', offset=122, starts_line=None, is_jump_target=False),
> + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None,
> argrepr='', offset=124, starts_line=22, is_jump_target=True),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2,
> argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=126,
> starts_line=None, is_jump_target=False),
> + Instruction(opname='COMPARE_OP', opcode=107, arg=10, argval='exception
> match', argrepr='exception match', offset=128, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=150,
> argval=150, argrepr='', offset=130, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=132, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=134, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=136, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=138, starts_line=23, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go,
> here we go, here we go...', argrepr="'Here we go, here we go, here we
> go...'", offset=140, starts_line=None, is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=142, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=144, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None,
> argrepr='', offset=146, starts_line=None, is_jump_target=False),
> + Instruction(opname='JUMP_FORWARD', opcode=110, arg=26, argval=176,
> argrepr='to 176', offset=148, starts_line=None, is_jump_target=False),
> + Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=150, starts_line=None, is_jump_target=True),
> + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i',
> argrepr='i', offset=152, starts_line=25, is_jump_target=True),
> + Instruction(opname='SETUP_WITH', opcode=143, arg=14, argval=170,
> argrepr='to 170', offset=154, starts_line=None, is_jump_target=False),
> + Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy',
> argrepr='dodgy', offset=156, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=158, starts_line=26, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach
> this', argrepr="'Never reach this'", offset=160, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=162, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=164, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=166, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=168, starts_line=None, is_jump_target=False),
> + Instruction(opname='WITH_CLEANUP_START', opcode=81, arg=None,
> argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=True),
> + Instruction(opname='WITH_CLEANUP_FINISH', opcode=82, arg=None,
> argval=None, argrepr='', offset=172, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=174, starts_line=None, is_jump_target=False),
> + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None,
> argrepr='', offset=176, starts_line=None, is_jump_target=True),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=178, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print',
> argrepr='print', offset=180, starts_line=28, is_jump_target=True),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now
> we're done", argrepr='"OK, now we\'re done"', offset=182, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1,
> argrepr='1 positional, 0 keyword pair', offset=184, starts_line=None,
> is_jump_target=False),
> + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None,
> argrepr='', offset=186, starts_line=None, is_jump_target=False),
> + Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None,
> argrepr='', offset=188, starts_line=None, is_jump_target=False),
> + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=190, starts_line=None, is_jump_target=False),
> + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=192, starts_line=None, is_jump_target=False),
> ]
>
> # One last piece of inspect fodder to check the default line number
> handling
> def simple(): pass
> expected_opinfo_simple = [
> Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None,
> argrepr='None', offset=0, starts_line=simple.__code__.co_firstlineno,
> is_jump_target=False),
> - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=3, starts_line=None, is_jump_target=False)
> + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None,
> argrepr='', offset=2, starts_line=None, is_jump_target=False)
> ]
>
>
> diff --git a/Misc/NEWS b/Misc/NEWS
> --- a/Misc/NEWS
> +++ b/Misc/NEWS
> @@ -10,6 +10,9 @@
> Core and Builtins
> -----------------
>
> +- Issue #26647: Python interpreter now uses 16-bit wordcode instead of
> bytecode.
> + Patch by Demur Rumed.
> +
> - Issue #23275: Allow assigning to an empty target list in round brackets:
> () = iterable.
>
> diff --git a/Objects/frameobject.c b/Objects/frameobject.c
> --- a/Objects/frameobject.c
> +++ b/Objects/frameobject.c
> @@ -189,7 +189,7 @@
> memset(blockstack, '\0', sizeof(blockstack));
> memset(in_finally, '\0', sizeof(in_finally));
> blockstack_top = 0;
> - for (addr = 0; addr < code_len; addr++) {
> + for (addr = 0; addr < code_len; addr += 2) {
> unsigned char op = code[addr];
> switch (op) {
> case SETUP_LOOP:
> @@ -251,10 +251,6 @@
> }
> }
> }
> -
> - if (op >= HAVE_ARGUMENT) {
> - addr += 2;
> - }
> }
>
> /* Verify that the blockstack tracking code didn't get lost. */
> @@ -277,7 +273,7 @@
> * can tell whether the jump goes into any blocks without coming out
> * again - in that case we raise an exception below. */
> delta_iblock = 0;
> - for (addr = min_addr; addr < max_addr; addr++) {
> + for (addr = min_addr; addr < max_addr; addr += 2) {
> unsigned char op = code[addr];
> switch (op) {
> case SETUP_LOOP:
> @@ -294,10 +290,6 @@
> }
>
> min_delta_iblock = Py_MIN(min_delta_iblock, delta_iblock);
> -
> - if (op >= HAVE_ARGUMENT) {
> - addr += 2;
> - }
> }
>
> /* Derive the absolute iblock values from the deltas. */
> diff --git a/Objects/genobject.c b/Objects/genobject.c
> --- a/Objects/genobject.c
> +++ b/Objects/genobject.c
> @@ -277,7 +277,7 @@
> PyObject *bytecode = f->f_code->co_code;
> unsigned char *code = (unsigned char
> *)PyBytes_AS_STRING(bytecode);
>
> - if (code[f->f_lasti + 1] != YIELD_FROM)
> + if (code[f->f_lasti + 2] != YIELD_FROM)
> return NULL;
> yf = f->f_stacktop[-1];
> Py_INCREF(yf);
> @@ -376,7 +376,7 @@
> assert(ret == yf);
> Py_DECREF(ret);
> /* Termination repetition of YIELD_FROM */
> - gen->gi_frame->f_lasti++;
> + gen->gi_frame->f_lasti += 2;
> if (_PyGen_FetchStopIterationValue(&val) == 0) {
> ret = gen_send_ex(gen, val, 0, 0);
> Py_DECREF(val);
> diff --git a/PC/launcher.c b/PC/launcher.c
> --- a/PC/launcher.c
> +++ b/PC/launcher.c
> @@ -1089,7 +1089,7 @@
> { 3190, 3230, L"3.3" },
> { 3250, 3310, L"3.4" },
> { 3320, 3350, L"3.5" },
> - { 3360, 3361, L"3.6" },
> + { 3360, 3370, L"3.6" },
> { 0 }
> };
>
> diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
> --- a/PCbuild/pythoncore.vcxproj
> +++ b/PCbuild/pythoncore.vcxproj
> @@ -209,6 +209,7 @@
> <ClInclude Include="..\Python\condvar.h" />
> <ClInclude Include="..\Python\importdl.h" />
> <ClInclude Include="..\Python\thread_nt.h" />
> + <ClInclude Include="..\Python\wordcode_helpers.h" />
> </ItemGroup>
> <ItemGroup>
> <ClCompile Include="..\Modules\_bisectmodule.c" />
> diff --git a/PCbuild/pythoncore.vcxproj.filters
> b/PCbuild/pythoncore.vcxproj.filters
> --- a/PCbuild/pythoncore.vcxproj.filters
> +++ b/PCbuild/pythoncore.vcxproj.filters
> @@ -420,6 +420,9 @@
> <ClInclude Include="..\Python\thread_nt.h">
> <Filter>Python</Filter>
> </ClInclude>
> + <ClInclude Include="..\Python\wordcode_helpers.h">
> + <Filter>Python</Filter>
> + </ClInclude>
> <ClInclude Include="..\Python\condvar.h">
> <Filter>Python</Filter>
> </ClInclude>
> diff --git a/Python/ceval.c b/Python/ceval.c
> --- a/Python/ceval.c
> +++ b/Python/ceval.c
> @@ -886,24 +886,10 @@
> /* Import the static jump table */
> #include "opcode_targets.h"
>
> -/* This macro is used when several opcodes defer to the same
> implementation
> - (e.g. SETUP_LOOP, SETUP_FINALLY) */
> -#define TARGET_WITH_IMPL(op, impl) \
> - TARGET_##op: \
> - opcode = op; \
> - if (HAS_ARG(op)) \
> - oparg = NEXTARG(); \
> - case op: \
> - goto impl; \
> -
> #define TARGET(op) \
> TARGET_##op: \
> - opcode = op; \
> - if (HAS_ARG(op)) \
> - oparg = NEXTARG(); \
> case op:
>
> -
> #define DISPATCH() \
> { \
> if (!_Py_atomic_load_relaxed(&eval_breaker)) { \
> @@ -917,7 +903,9 @@
> { \
> if (!lltrace && !_Py_TracingPossible) { \
> f->f_lasti = INSTR_OFFSET(); \
> - goto *opcode_targets[*next_instr++]; \
> + opcode = NEXTOP(); \
> + oparg = NEXTARG(); \
> + goto *opcode_targets[opcode]; \
> } \
> goto fast_next_opcode; \
> }
> @@ -926,7 +914,9 @@
> { \
> if (!_Py_TracingPossible) { \
> f->f_lasti = INSTR_OFFSET(); \
> - goto *opcode_targets[*next_instr++]; \
> + opcode = NEXTOP(); \
> + oparg = NEXTARG(); \
> + goto *opcode_targets[opcode]; \
> } \
> goto fast_next_opcode; \
> }
> @@ -935,10 +925,7 @@
> #else
> #define TARGET(op) \
> case op:
> -#define TARGET_WITH_IMPL(op, impl) \
> - /* silence compiler warnings about `impl` unused */ \
> - if (0) goto impl; \
> - case op:
> +
> #define DISPATCH() continue
> #define FAST_DISPATCH() goto fast_next_opcod
1
0
On behalf of the Python development community and the Python 3.6 release
team, I'm happy to announce the availability of Python 3.6.0a1.
3.6.0a1 is the first of four planned alpha releases of Python 3.6,
the next major release of Python. During the alpha phase, Python 3.6
remains under heavy development: additional features will be added
and existing features may be modified or deleted. Please keep in mind
that this is a preview release and its use is not recommended for
production environments.
You can find Python 3.6.0a1 here:
https://www.python.org/downloads/release/python-360a1/
The next release of Python 3.6 will be 3.6.0a2, currently scheduled for
2016-06-13.
Enjoy!
--Ned
--
Ned Deily
nad(a)python.org -- []
2
1
Is there a specific reason for calling out two spaces in comments after a
period(I realize it's probably for consistency, but I sure don't ever think
about this when I write comment)? Otherwise who actually still writes using
two spaces after punctuation? :)
9
12
I've got another proposed update to PEP 484 ready. There was previously
some discussion on python-ideas (Bcc'ed for closure) and quite a bit on the
typing issue tracker: https://github.com/python/typing/issues/107
I've worked all that into a patch for PEP 484:
https://github.com/python/typing/pull/218
Once we're okay with that I will work on getting the implementation ready
in time for Python 3.5.2.
Here's the added text:
Meta-types
----------
A meta-type can be used to indicate a value that is itself a class
object that is a subclass of a given class. It is spelled as
``Type[C]`` where ``C`` is a class. To clarify: while ``C`` (when
used as an annotation) refers to instances of class ``C``, ``Type[C]``
refers to *subclasses* of ``C``. (This is a similar distinction as
between ``object`` and ``type``.)
For example, suppose we have the following classes::
class User: ... # Abstract base for User classes
class BasicUser(User): ...
class ProUser(User): ...
class TeamUser(User): ...
And suppose we have a function that creates an instance of one of
these classes if you pass it a class object::
def new_user(user_class):
user = user_class()
# (Here we could write the user object to a database)
return user
Without ``Type[]`` the best we could do to annotate ``new_user()``
would be::
def new_user(user_class: type) -> User:
...
However using ``Type[]`` and a type variable with an upper bound we
can do much better::
U = TypeVar('U', bound=User)
def new_user(user_class: Type[U]) -> U:
...
Now when we call ``new_user()`` with a specific subclass of ``User`` a
type checker will infer the correct type of the result::
joe = new_user(BasicUser) # Inferred type is BasicUser
At runtime the value corresponding to ``Type[C]`` must be an actual
class object that's a subtype of ``C``, not a special form. IOW, in
the above example calling e.g. ``new_user(Union[BasicUser, ProUser])``
is not allowed.
There are some concerns with this feature: for example when
``new_user()`` calls ``user_class()`` this implies that all subclasses
of ``User`` must support this in their constructor signature. However
this is not unique to ``Type[]``: class methods have similar concerns.
A type checker ought to flag violations of such assumptions, but by
default constructor calls that match the constructor signature in the
indicated base class (``User`` in the example above) should be
allowed. A program containing a complex or extensible class hierarchy
might also handle this by using a factory class method.
Plain ``Type`` without brackets is equivalent to using ``type`` (the
root of Python's metaclass hierarchy). This equivalence also
motivates the name, ``Type``, as opposed to alternatives like
``Class`` or ``SubType``, which were proposed while this feature was
under discussion; this is similar to the relationship between
e.g. ``List`` and ``list``.
--
--Guido van Rossum (python.org/~guido)
6
10
Is this deliberate? Could we change it for 3.6 so PyGC_Collect does take `enabled` into account?
Context: we’re experimenting with disabling the gc entirely for some workloads because it doesn’t fare too well with Copy-on-Write on Linux. What ends up happening is that disabling the gc actually drops memory usage significantly if you’re using hundreds of the same processes on one box :-)
However, because of PyGC_Collect() called in Py_Finalize(), during interpreter shutdown the collection is done anyway, Linux does CoW and the memory usage spikes. Which is ironic on process shutdown.
--
Lukasz Langa | Facebook
Production Engineer | The Ministry of Silly Walks
(+1) 650-681-7811
6
7
ACTIVITY SUMMARY (2016-05-13 - 2016-05-20)
Python tracker at http://bugs.python.org/
To view or respond to any of the issues listed below, click on the issue.
Do NOT respond to this message.
Issues counts and deltas:
open 5504 ( +3)
closed 33322 (+52)
total 38826 (+55)
Open issues with patches: 2381
Issues opened (33)
==================
#26741: subprocess.Popen should emit a ResourceWarning in destructor i
http://bugs.python.org/issue26741 reopened by haypo
#27015: subprocess.CalledProcessError's repr changes based on kwargs,
http://bugs.python.org/issue27015 opened by Taywee
#27016: BlockingIOError not raised inside function.
http://bugs.python.org/issue27016 opened by pcunningham80(a)gmail.com
#27019: Reduce marshal stack depth for 2.7 on Windows debug build
http://bugs.python.org/issue27019 opened by db3l
#27020: os.writev() does not accept generators (as buffers argument)
http://bugs.python.org/issue27020 opened by mmarkk
#27021: It is not documented that os.writev() suffer from SC_IOV_MAX
http://bugs.python.org/issue27021 opened by mmarkk
#27022: expose sendmmsg() syscall in sockets API
http://bugs.python.org/issue27022 opened by mmarkk
#27024: IDLE shutdown glitch when started by import
http://bugs.python.org/issue27024 opened by terry.reedy
#27025: More human readable generated widget names
http://bugs.python.org/issue27025 opened by serhiy.storchaka
#27026: async/await keywords are missing from reference docs
http://bugs.python.org/issue27026 opened by hongminhee
#27027: add is_android in test.support to detect Android platform
http://bugs.python.org/issue27027 opened by xdegaye
#27029: Remove support of deprecated mode 'U' in zipfile
http://bugs.python.org/issue27029 opened by serhiy.storchaka
#27030: Remove deprecated re features
http://bugs.python.org/issue27030 opened by serhiy.storchaka
#27032: Remove deprecated html.parser.HTMLParser.unescape()
http://bugs.python.org/issue27032 opened by serhiy.storchaka
#27033: Change the decode_data default in smtpd to False
http://bugs.python.org/issue27033 opened by serhiy.storchaka
#27035: Cannot set exit code in atexit callback
http://bugs.python.org/issue27035 opened by Melebius
#27036: Mark up of references in different form
http://bugs.python.org/issue27036 opened by serhiy.storchaka
#27037: Universal newline support for zipFile.ZipExtFile.read() is not
http://bugs.python.org/issue27037 opened by David Pitchford
#27038: Make os.DirEntry exist
http://bugs.python.org/issue27038 opened by brett.cannon
#27043: Describe what ‘inspect.cleandoc’ does to synopsis line.
http://bugs.python.org/issue27043 opened by bignose
#27048: distutils._msvccompiler._get_vc_env() fails with UnicodeDecode
http://bugs.python.org/issue27048 opened by ebarry
#27050: Demote run() below the high level APIs in subprocess docs
http://bugs.python.org/issue27050 opened by ncoghlan
#27051: Create PIP gui
http://bugs.python.org/issue27051 opened by upendra-k14
#27052: Python2.7.11+ as in Debian testing and Ubuntu 16.04 LTS crashe
http://bugs.python.org/issue27052 opened by Ján Jockusch
#27054: Python installation problem: No module named 'encodings'
http://bugs.python.org/issue27054 opened by lauer(a)wpi.edu
#27060: Documentation of assertItemsEqual in unittest is VERY misleadi
http://bugs.python.org/issue27060 opened by vitaly
#27062: `inspect` doesn't have `__all__`
http://bugs.python.org/issue27062 opened by leewz
#27063: Some unittest loader tests are silently skipped by mistake
http://bugs.python.org/issue27063 opened by serhiy.storchaka
#27064: Make py.exe default to Python 3 when used interactively
http://bugs.python.org/issue27064 opened by paul.moore
#27066: SystemError if custom opener returns -1
http://bugs.python.org/issue27066 opened by barry
#27067: Improve curses tests
http://bugs.python.org/issue27067 opened by serhiy.storchaka
#27068: Add a detach() method to subprocess.Popen
http://bugs.python.org/issue27068 opened by haypo
#27069: webbrowser creates zombi processes in the background mode
http://bugs.python.org/issue27069 opened by haypo
Most recent 15 issues with no replies (15)
==========================================
#27067: Improve curses tests
http://bugs.python.org/issue27067
#27063: Some unittest loader tests are silently skipped by mistake
http://bugs.python.org/issue27063
#27060: Documentation of assertItemsEqual in unittest is VERY misleadi
http://bugs.python.org/issue27060
#27051: Create PIP gui
http://bugs.python.org/issue27051
#27043: Describe what ‘inspect.cleandoc’ does to synopsis line.
http://bugs.python.org/issue27043
#27038: Make os.DirEntry exist
http://bugs.python.org/issue27038
#27032: Remove deprecated html.parser.HTMLParser.unescape()
http://bugs.python.org/issue27032
#27030: Remove deprecated re features
http://bugs.python.org/issue27030
#27029: Remove support of deprecated mode 'U' in zipfile
http://bugs.python.org/issue27029
#27021: It is not documented that os.writev() suffer from SC_IOV_MAX
http://bugs.python.org/issue27021
#27019: Reduce marshal stack depth for 2.7 on Windows debug build
http://bugs.python.org/issue27019
#27006: C implementation of Decimal.from_float() bypasses __new__ and
http://bugs.python.org/issue27006
#27002: Support different modes in posixpath.realpath()
http://bugs.python.org/issue27002
#26997: Docs for pdb should note that __future__ magic doesn't work
http://bugs.python.org/issue26997
#26990: file.tell affect decoding
http://bugs.python.org/issue26990
Most recent 15 issues waiting for review (15)
=============================================
#27067: Improve curses tests
http://bugs.python.org/issue27067
#27066: SystemError if custom opener returns -1
http://bugs.python.org/issue27066
#27064: Make py.exe default to Python 3 when used interactively
http://bugs.python.org/issue27064
#27063: Some unittest loader tests are silently skipped by mistake
http://bugs.python.org/issue27063
#27048: distutils._msvccompiler._get_vc_env() fails with UnicodeDecode
http://bugs.python.org/issue27048
#27036: Mark up of references in different form
http://bugs.python.org/issue27036
#27033: Change the decode_data default in smtpd to False
http://bugs.python.org/issue27033
#27032: Remove deprecated html.parser.HTMLParser.unescape()
http://bugs.python.org/issue27032
#27030: Remove deprecated re features
http://bugs.python.org/issue27030
#27029: Remove support of deprecated mode 'U' in zipfile
http://bugs.python.org/issue27029
#27027: add is_android in test.support to detect Android platform
http://bugs.python.org/issue27027
#27026: async/await keywords are missing from reference docs
http://bugs.python.org/issue27026
#27025: More human readable generated widget names
http://bugs.python.org/issue27025
#27024: IDLE shutdown glitch when started by import
http://bugs.python.org/issue27024
#27019: Reduce marshal stack depth for 2.7 on Windows debug build
http://bugs.python.org/issue27019
Top 10 most discussed issues (10)
=================================
#26870: Unexpected call to readline's add_history in call_readline
http://bugs.python.org/issue26870 11 msgs
#27048: distutils._msvccompiler._get_vc_env() fails with UnicodeDecode
http://bugs.python.org/issue27048 11 msgs
#20371: datetime.datetime.replace bypasses a subclass's __new__
http://bugs.python.org/issue20371 9 msgs
#27036: Mark up of references in different form
http://bugs.python.org/issue27036 8 msgs
#27054: Python installation problem: No module named 'encodings'
http://bugs.python.org/issue27054 8 msgs
#26168: Py_BuildValue may leak 'N' arguments on PyTuple_New failure
http://bugs.python.org/issue26168 6 msgs
#26331: Tokenizer: allow underscores for grouping in numeric literals
http://bugs.python.org/issue26331 6 msgs
#26369: unicode.decode and str.encode are unnecessarily confusing for
http://bugs.python.org/issue26369 6 msgs
#26814: [WIP] Add a new _PyObject_FastCall() function which avoids the
http://bugs.python.org/issue26814 6 msgs
#26839: Python 3.5 running on Linux kernel 3.17+ can block at startup
http://bugs.python.org/issue26839 6 msgs
Issues closed (48)
==================
#3213: "pydoc -p" should listen to [::] if IPv6 is supported
http://bugs.python.org/issue3213 closed by martin.panter
#3948: readline steals sigwinch
http://bugs.python.org/issue3948 closed by martin.panter
#11980: zipfile.ZipFile.write should accept fp as argument
http://bugs.python.org/issue11980 closed by serhiy.storchaka
#14132: Redirect is not working correctly in urllib2
http://bugs.python.org/issue14132 closed by martin.panter
#18410: Idle: test SearchDialog.py
http://bugs.python.org/issue18410 closed by terry.reedy
#20640: Idle: test configHelpSourceEdit
http://bugs.python.org/issue20640 closed by terry.reedy
#20792: Idle: test PathBrowser more
http://bugs.python.org/issue20792 closed by terry.reedy
#21676: IDLE - Test Replace Dialog
http://bugs.python.org/issue21676 closed by terry.reedy
#21703: IDLE: Test UndoDelegator
http://bugs.python.org/issue21703 closed by terry.reedy
#21939: IDLE - Test Percolator
http://bugs.python.org/issue21939 closed by terry.reedy
#23275: Can assign [] = (), but not () = []
http://bugs.python.org/issue23275 closed by berker.peksag
#23958: compile warnings in libffi
http://bugs.python.org/issue23958 closed by berker.peksag
#23977: Enhancing IDLE's test_delegator.py unit test
http://bugs.python.org/issue23977 closed by terry.reedy
#25285: regrtest: run tests in subprocesses with -j1 on buildbots
http://bugs.python.org/issue25285 closed by haypo
#25650: Mismatching documentation <=> behaviour for typing.Any
http://bugs.python.org/issue25650 closed by berker.peksag
#25747: test_idle failure in leaks searching mode
http://bugs.python.org/issue25747 closed by terry.reedy
#26039: More flexibility in zipfile write interface
http://bugs.python.org/issue26039 closed by takluyver
#26807: mock_open()().readline() fails at EOF
http://bugs.python.org/issue26807 closed by rbcollins
#26848: asyncio.subprocess's communicate() method mishandles empty inp
http://bugs.python.org/issue26848 closed by berker.peksag
#26850: PyMem_RawMalloc(): update also sys.getallocatedblocks() in deb
http://bugs.python.org/issue26850 closed by haypo
#26938: android: test_concurrent_futures hangs on armv7
http://bugs.python.org/issue26938 closed by xdegaye
#26948: Simplify PyImport_ImportModuleLevelObject: avoid temporary tup
http://bugs.python.org/issue26948 closed by haypo
#26991: Possible reference leak in MAKE_FUNCTION
http://bugs.python.org/issue26991 closed by python-dev
#26995: Add tests for parsing float and object arguments
http://bugs.python.org/issue26995 closed by serhiy.storchaka
#27014: maximum recursion depth when using typing options
http://bugs.python.org/issue27014 closed by gvanrossum
#27017: Python3.5.1: type().startswith()
http://bugs.python.org/issue27017 closed by SilentGhost
#27018: Incorrect documentation of select module
http://bugs.python.org/issue27018 closed by orsenthil
#27023: Documentation of tempfile.gettempdir() does not mention it onl
http://bugs.python.org/issue27023 closed by r.david.murray
#27028: configparser BasicInterpolation issue with %()
http://bugs.python.org/issue27028 closed by r.david.murray
#27031: Remove interface to obsolete Tk commands
http://bugs.python.org/issue27031 closed by serhiy.storchaka
#27034: Remove deprecated asynchat.fifo
http://bugs.python.org/issue27034 closed by serhiy.storchaka
#27039: bytearray.remove cannot remove bytes with value greater than 1
http://bugs.python.org/issue27039 closed by serhiy.storchaka
#27040: asyncio: Add loop.get_exception_handler method
http://bugs.python.org/issue27040 closed by yselivanov
#27041: asyncio: Add loop.create_future method
http://bugs.python.org/issue27041 closed by yselivanov
#27042: Incorrect grammar for function definitions
http://bugs.python.org/issue27042 closed by python-dev
#27044: Stop test_idle memory leaks
http://bugs.python.org/issue27044 closed by terry.reedy
#27045: Forward slashes in Windows paths
http://bugs.python.org/issue27045 closed by ebarry
#27046: Emoji support in Pie Chart legend with matplotlib
http://bugs.python.org/issue27046 closed by berker.peksag
#27047: O(1) deque indexing
http://bugs.python.org/issue27047 closed by rhettinger
#27049: Typo in "The Python Language Reference" 7.11 -- "individiual"
http://bugs.python.org/issue27049 closed by ned.deily
#27053: Python Windows x86-64 embeddable zip file missing module encod
http://bugs.python.org/issue27053 closed by steve.dower
#27055: python fails to run zipapp when zip contains comments
http://bugs.python.org/issue27055 closed by serhiy.storchaka
#27056: pickle: constant propagation in _Unpickler_Read()
http://bugs.python.org/issue27056 closed by haypo
#27057: os.set_inheritable(): fall back to fcntl() if ioctl() fails wi
http://bugs.python.org/issue27057 closed by haypo
#27058: Tkinter's canvas' dashed lines have incorrect segment lengths
http://bugs.python.org/issue27058 closed by kms70847
#27059: find_spec and find_loader ignore package/path argument
http://bugs.python.org/issue27059 closed by brett.cannon
#27061: 2.7.11 OS X pkg doesn't put proper version in the receipts
http://bugs.python.org/issue27061 closed by ned.deily
#27065: robotparser user agent considered hostile by mod_security rule
http://bugs.python.org/issue27065 closed by berker.peksag
1
0