| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
From SF patch #852334.
 | 
| | 
| 
| 
| 
|  | 
Added dis.findlinestarts().
SF bug 811294
 | 
| |  | 
 | 
| | 
| 
| 
| 
|  | 
* add disassemble_string
* allow classes and strings containing bytecode to be disassembled
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Use a slightly different strategy to determine when not to call the line
trace function.  This removes the need for the RETURN_NONE opcode, so
that's gone again.  Update docs and comments to match.
Thanks to Neal and Armin!
Also add a test suite.  This should have come with the original patch...
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
[ 587993 ] SET_LINENO killer
Remove SET_LINENO.  Tracing is now supported by inspecting co_lnotab.
Many sundry changes to document and adapt to this change.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
in a for loop.
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
|  | 
Bugfix candidate in inspect.py:  it was referencing "self" outside of
a method.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
new slot tp_iter in type object, plus new flag Py_TPFLAGS_HAVE_ITER
new C API PyObject_GetIter(), calls tp_iter
new builtin iter(), with two forms: iter(obj), and iter(function, sentinel)
new internal object types iterobject and calliterobject
new exception StopIteration
new opcodes for "for" loops, GET_ITER and FOR_ITER (also supported by dis.py)
new magic number for .pyc files
new special method for instances: __iter__() returns an iterator
iteration over dictionaries: "for x in dict" iterates over the keys
iteration over files: "for x in file" iterates over lines
TODO:
documentation
test suite
decide whether to use a different way to spell iter(function, sentinal)
decide whether "for key in dict" is a good idea
use iterators in map/filter/reduce, min/max, and elsewhere (in/not in?)
speed tuning (make next() a slot tp_next???)
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
SF patch 102989 by Thomas Wouters
 | 
| | 
| 
| 
| 
|  | 
Track changes to new opcodes.  Add hasfree list that applies to all
ops that use the closure.
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
added test script and expected output file as well
this closes patch 103297.
__all__ attributes will be added to other modules without first submitting
a patch, just adding the necessary line to the test script to verify
more-or-less correct implementation.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
|  | 
rfc822 (Addresslist) modules. Also a preliminary testcase for augmented
assignment, which should actually be merged with the test_class testcase I
added last week.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Add the EXTENDED_ARG opcode to the virtual machine, allowing 32-bit
arguments to opcodes instead of being forced to stick to the 16-bit
limit.  This is especially useful for machine-generated code, which
can be too long for the SET_LINENO parameter to fit into 16 bits.
This closes the implementation portion of SourceForge patch #100893.
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
name as n'. By doing some twists and turns, "as" is not a reserved word.
There is a slight change in semantics for 'from module import name' (it will
now honour the 'global' keyword) but only in cases that are explicitly
undocumented.
 | 
| | 
| 
| 
| 
| 
| 
|  | 
did the same anyway.
I'm not sure what to do with Tools/compiler/compiler/* -- that isn't part of
distutils, is it ? Should it try to be compatible with old bytecode version ?
 | 
| | 
| 
| 
| 
|  | 
name is much longer, which fouls up dis's formatting slightly; this is
a "fix" for that.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
executive summary:
Instead of typing 'apply(f, args, kwargs)' you can type 'f(*arg, **kwargs)'.
Some file-by-file details follow.
Grammar/Grammar:
    simplify varargslist, replacing '*' '*' with '**'
    add * & ** options to arglist
Include/opcode.h & Lib/dis.py:
    define three new opcodes
        CALL_FUNCTION_VAR
        CALL_FUNCTION_KW
        CALL_FUNCTION_VAR_KW
Python/ceval.c:
    extend TypeError "keyword parameter redefined" message to include
        the name of the offending keyword
    reindent CALL_FUNCTION using four spaces
    add handling of sequences and dictionaries using extend calls
    fix function import_from to use PyErr_Format
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
|  | 
should raise TypeError, not ValueError...
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
dis() still disassembles the last frame of the lats stack trace.
dis(x) disassembles x, which may be a code object, function, or method.
disassemble(co, [lasti]) disassembles a code object; the lasti
argument is now optional.
disco(...) is an alias for disassemble(...), for backward compatibility.
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
- add opcodes BINARY_LSHIFT ... BINARY_OR
- remove RESERVE_FAST
- Skip M's suggestion for displaying which comparison operator is meant
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
negative start indices starting from the right.
* ftplib.py: debug() -> set_debuglevel(); change demo to use __init__().
* os.py: added execl, execlp, and execvp.
* lambda.py: removed (now that we have built-in map, reduce, bagof, lambda)
* test_b{1,2}.py, testall.out: added tests for bagof, lambda, map, reduce
* commands.py: use os, not posix
* test_grammar.py: make it easy to disable non-portable int overflow tests
* dis.py: don't abuse range()
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
|    | 
 |