|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| |\ |  | 
| | | 
| | 
| | 
| | | Issue #25888 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | | In practice, bytecode instruction arguments are unsigned. Update the assertion
to make it more explicit that argument must be greater or equal than 0.
Rewrite also the comment. | 
| |\ \  
| |/ |  | 
| | | |  | 
| | | 
| | 
| | 
| | 
| | 
| | | * Inline compiler_use_new_block() function into its only callee,
  compiler_enter_scope()
* Remove unused NEW_BLOCK() macro | 
| | | |  | 
| | | |  | 
| | | |  | 
| |\ \  
| |/ |  | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | | 'level' is specified but no __package__.
This brings the function inline with builtins.__import__(). Thanks to
Manuel Jacob for the patch. | 
| | | 
| | 
| | 
| | | to format short Python version. | 
| | | 
| | 
| | 
| | 
| | | PyArg_ParseTupleAndKeywords().  RuntimeError did raised before in some
programming bugs. | 
| |\ \  
| |/  
| |   
| | | if the stack is too deep. | 
| | | 
| | 
| | 
| | | if the stack is too deep. | 
| | | 
| | 
| | 
| | 
| | | Issue #26204: the compiler doesn't emit SyntaxWarning warnings anymore when
constant statements are ignored. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | The compile ignores constant statements and emit a SyntaxWarning warning.
Don't emit the warning for string statement because triple quoted string is a
common syntax for multiline comments.
Don't emit the warning on ellipis neither: 'def f(): ...' is a legit syntax for
abstract functions.
Changes:
* test_ast: ignore SyntaxWarning when compiling test statements. Modify
  test_load_const() to use assignment expressions rather than constant
  expression.
* test_code: add more kinds of constant statements, ignore SyntaxWarning when
  testing that the compiler removes constant statements.
* test_grammar: ignore SyntaxWarning on the statement "1" | 
| | | 
| | 
| | 
| | 
| | | overflow in parsing "es#" and "et#" format units.  SystemError is now raised
instead of TypeError on programmical error in parsing format string. | 
| |\ \  
| |/ |  | 
| | | 
| | 
| | 
| | 
| | | Fixed the documented about buffer overflow error for "es#" and "et#" format
units. | 
| | | |  | 
| | | 
| | 
| | 
| | | being corrupted if an error occurred in PyObject_Format(). | 
| |\ \  
| |/ |  | 
| | | 
| | 
| | 
| | | Based on patch by Hagen Fürstenau and Daniel Urban. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #25843: When compiling code, don't merge constants if they are equal but
have a different types. For example, "f1, f2 = lambda: 1, lambda: 1.0" is now
correctly compiled to two different functions: f1() returns 1 (int) and f2()
returns 1.0 (int), even if 1 and 1.0 are equal.
Add a new _PyCode_ConstantKey() private function. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | | Mention the name of the invalid type in error message of AST validation for
constants.
Suggestion made by Joseph Jevnik on a review. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | obj2ast_constant() code is baesd on obj2ast_object() which has a special case
for Py_None. But in practice, we don't need to have a special case for
constants.
Issue noticed by Joseph Jevnik on a review. | 
| | | 
| | 
| | 
| | | Issue #26146. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #26146: Add a new kind of AST node: ast.Constant. It can be used by
external AST optimizers, but the compiler does not emit directly such node.
An optimizer can replace the following AST nodes with ast.Constant:
* ast.NameConstant: None, False, True
* ast.Num: int, float, complex
* ast.Str: str
* ast.Bytes: bytes
* ast.Tuple if items are constants too: tuple
* frozenset
Update code to accept ast.Constant instead of ast.Num and/or ast.Str:
* compiler
* docstrings
* ast.literal_eval()
* Tools/parser/unparse.py | 
| | | |  | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | with no known parent package.
Previously SystemError was raised if the parent package didn't exist
(e.g., __package__ was set to '').
Thanks to Florent Xicluna and Yongzhi Pan for reporting the issue. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | In a previous change, __spec__.parent was prioritized over
__package__. That is a backwards-compatibility break, but we do
eventually want __spec__ to be the ground truth for module details. So
this change reverts the change in semantics and instead raises an
ImportWarning when __package__ != __spec__.parent to give people time
to adjust to using spec objects. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #26161: Use Py_uintptr_t instead of void* for atomic pointers in
pyatomic.h. Use atomic_uintptr_t when <stdatomic.h> is used.
Using void* causes compilation warnings depending on which implementation of
atomic types is used. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #25843: When compiling code, don't merge constants if they are equal but
have a different types. For example, "f1, f2 = lambda: 1, lambda: 1.0" is now
correctly compiled to two different functions: f1() returns 1 (int) and f2()
returns 1.0 (int), even if 1 and 1.0 are equal.
Add a new _PyCode_ConstantKey() private function. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #26107: The format of the co_lnotab attribute of code objects changes to
support negative line number delta.
Changes:
* assemble_lnotab(): if line number delta is less than -128 or greater than
  127, emit multiple (offset_delta, lineno_delta) in co_lnotab
* update functions decoding co_lnotab to use signed 8-bit integers
  - dis.findlinestarts()
  - PyCode_Addr2Line()
  - _PyCode_CheckLineNumber()
  - frame_setlineno()
* update lnotab_notes.txt
* increase importlib MAGIC_NUMBER to 3361
* document the change in What's New in Python 3.6
* cleanup also PyCode_Optimize() to use better variable names | 
| |\ \  
| |/  
| |   
| | | Issue #26154: Add a new private _PyThreadState_UncheckedGet() function. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Issue #26154: Add a new private _PyThreadState_UncheckedGet() function which
gets the current thread state, but don't call Py_FatalError() if it is NULL.
Python 3.5.1 removed the _PyThreadState_Current symbol from the Python C API to
no more expose complex and private atomic types. Atomic types depends on the
compiler or can even depend on compiler options. The new function
_PyThreadState_UncheckedGet() allows to get the variable value without having
to care of the exact implementation of atomic types.
Changes:
* Replace direct usage of the _PyThreadState_Current variable with a call to
  _PyThreadState_UncheckedGet().
* In pystate.c, replace direct usage of the _PyThreadState_Current variable
  with the PyThreadState_GET() macro for readability.
* Document also PyThreadState_Get() in pystate.h | 
| | | |  | 
| | | |  | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | not defined for a relative import.
This is the start of work to try and clean up import semantics to rely
more on a module's spec than on the myriad attributes that get set on
a module. Thanks to Rose Ames for the patch. | 
| | | |  | 
| |\ \  
| |/ |  | 
| | |\ |  | 
| | | |\ |  | 
| | | | | |  | 
| |\ \ \ \  
| |/ / / |  | 
| | | | | 
| | | | 
| | | | 
| | | | | robust (closes #25973) | 
| | | | | 
| | | | 
| | | | 
| | | | 
| | | | 
| | | | 
| | | | | importlib.machinery.SourceFileLoader and SourcelessFileLoader.
They were the only remaining implementations of load_module() not
documented as deprecated. | 
| |\ \ \ \  
| |/ / /  
| | | |   
| | | |   
| | | | | This patch is manually crafted and contains changes that couldn't be handled
automatically. | 
| | | | | 
| | | | 
| | | | 
| | | | 
| | | | | This patch is manually crafted and contains changes that couldn't be handled
automatically. |