summaryrefslogtreecommitdiffstats
path: root/Parser
Commit message (Collapse)AuthorAgeFilesLines
* gh-122581: Avoid data races when collecting parser statistics (#122694)Lysandros Nikolaou2024-08-061-0/+17
|
* gh-122300: Preserve AST nodes for format specifiers with single elements ↵Pablo Galindo Salgado2024-07-261-1/+2
| | | | (#122308)
* gh-122270: Fix typos in the Py_DEBUG macro name (GH-122271)Serhiy Storchaka2024-07-251-1/+1
|
* Fix typos in comments and exception message (#122147)Xie Yanbo2024-07-233-3/+3
|
* gh-122026: Fix identification of mismatched parentheses inside f-strings ↵Pablo Galindo Salgado2024-07-191-0/+3
| | | | (#122028)
* gh-121905: Consistently use "floating-point" instead of "floating point" ↵Serhiy Storchaka2024-07-191-1/+1
| | | | (GH-121907)
* gh-121130: Fix f-string format specifiers with debug expressions (#121150)Pablo Galindo Salgado2024-07-164-27/+62
|
* gh-121332: Make AST node constructor check _attributes instead of hardcoding ↵Jelle Zijlstra2024-07-111-14/+25
| | | | attributes (#121334)
* gh-121141: add support for `copy.replace` to AST nodes (#121162)Bénédikt Tran2024-07-041-0/+279
|
* gh-120155: Fix Coverity issue in parse_string() (#120997)Victor Stinner2024-06-251-0/+5
|
* gh-120108: Fix deepcopying of AST trees with .parent attributes (#120114)Jelle Zijlstra2024-06-251-17/+14
|
* gh-120956: Avoid comparison of int to Py_ssize_t in parser (#120959)Lysandros Nikolaou2024-06-241-116/+116
|
* Fixes loop variables to be the same types as their limit (GH-120958)Steve Dower2024-06-241-1/+1
|
* gh-119521: Rename IncompleteInputError to _IncompleteInputError and remove ↵Pablo Galindo Salgado2024-06-241-0/+1
| | | | | | | from public API/ABI (GH-119680) Signed-off-by: Pablo Galindo <pablogsal@gmail.com> Co-authored-by: Petr Viktorin <encukou@gmail.com>
* gh-113993: Allow interned strings to be mortal, and fix related issues ↵Petr Viktorin2024-06-212-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (GH-120520) * Add an InternalDocs file describing how interning should work and how to use it. * Add internal functions to *explicitly* request what kind of interning is done: - `_PyUnicode_InternMortal` - `_PyUnicode_InternImmortal` - `_PyUnicode_InternStatic` * Switch uses of `PyUnicode_InternInPlace` to those. * Disallow using `_Py_SetImmortal` on strings directly. You should use `_PyUnicode_InternImmortal` instead: - Strings should be interned before immortalization, otherwise you're possibly interning a immortalizing copy. - `_Py_SetImmortal` doesn't handle the `SSTATE_INTERNED_MORTAL` to `SSTATE_INTERNED_IMMORTAL` update, and those flags can't be changed in backports, as they are now part of public API and version-specific ABI. * Add private `_only_immortal` argument for `sys.getunicodeinternedsize`, used in refleak test machinery. * Make sure the statically allocated string singletons are unique. This means these sets are now disjoint: - `_Py_ID` - `_Py_STR` (including the empty string) - one-character latin-1 singletons Now, when you intern a singleton, that exact singleton will be interned. * Add a `_Py_LATIN1_CHR` macro, use it instead of `_Py_ID`/`_Py_STR` for one-character latin-1 singletons everywhere (including Clinic). * Intern `_Py_STR` singletons at startup. * For free-threaded builds, intern `_Py_LATIN1_CHR` singletons at startup. * Beef up the tests. Cover internal details (marked with `@cpython_only`). * Add lots of assertions Co-Authored-By: Eric Snow <ericsnowcurrently@gmail.com>
* gh-94808: Reorganize _make_posargs and mark unused code (GH-119227)Mark Jason Dominus (陶敏修)2024-06-041-13/+21
| | | | | | | | | | | * Reorganize four-way if-elsif-elsif-elsif as nested if-elses * Mark unused branch in _make_posargs `names_with_default` is never `NULL`, even if there are no names with defaults. In that case it points to a structure with `size` zero. Rather than eliminating the branch, we leave it behind with an `assert(0)` in case a future change to the grammar exercises the branch.
* gh-119724: Revert "bpo-45759: Better error messages for non-matching ↵Petr Viktorin2024-06-041-548/+450
| | | | | | 'elif'/'else' statements (#29513)" (#119974) This reverts commit 1c8f912ebdfdb146cd7dd2d7a3a67d2c5045ddb0.
* gh-118235: Move RAISE_SYNTAX_ERROR actions to invalid rules and make sure ↵Petr Viktorin2024-05-301-1416/+1538
| | | | | | | | they stay there (GH-119731) The Full Grammar specification in the docs omits rule actions, so grammar rules that raise a syntax error looked like valid syntax. This was solved in ef940de by hiding those rules in the custom syntax highlighter. This moves all syntax-error alternatives to invalid rules, adds a validator that ensures that actions containing RAISE_SYNTAX_ERROR are in invalid rules, and reverts the syntax highlighter hack.
* gh-119118: Fix performance regression in tokenize module (#119615)Lysandros Nikolaou2024-05-282-0/+26
| | | | | | | | | | * gh-119118: Fix performance regression in tokenize module - Cache line object to avoid creating a Unicode object for all of the tokens in the same line. - Speed up byte offset to column offset conversion by using the smallest buffer possible to measure the difference. Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
* gh-118851: Default ctx arguments to AST constructors to Load() (#118854)Jelle Zijlstra2024-05-091-0/+7
| | | Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
* gh-118090: Improve error message for empty type param brackets (GH-118091)Nikita Sobolev2024-05-071-797/+962
|
* gh-117486: Improve behavior for user-defined AST subclasses (#118212)Jelle Zijlstra2024-05-061-14/+17
| | | | | | | | Now, such classes will no longer require changes in Python 3.13 in the normal case. The test suite for robotframework passes with no DeprecationWarnings under this PR. I also added a new DeprecationWarning for the case where `_field_types` exists but is incomplete, since that seems likely to indicate a user mistake.
* gh-116322: Add Py_mod_gil module slot (#116882)Brett Simmers2024-05-031-0/+1
| | | | | | | | | | | | | | This PR adds the ability to enable the GIL if it was disabled at interpreter startup, and modifies the multi-phase module initialization path to enable the GIL when loading a module, unless that module's spec includes a slot indicating it can run safely without the GIL. PEP 703 called the constant for the slot `Py_mod_gil_not_used`; I went with `Py_MOD_GIL_NOT_USED` for consistency with gh-104148. A warning will be issued up to once per interpreter for the first GIL-using module that is loaded. If `-v` is given, a shorter message will be printed to stderr every time a GIL-using module is loaded (including the first one that issues a warning).
* gh-116126: Implement PEP 696 (#116129)Jelle Zijlstra2024-05-032-446/+551
| | | | | Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
* gh-116988: Remove duplicates of `annotated_rhs` in the Grammar (#117004)David Rubin2024-04-241-2091/+1560
|
* gh-118082: Improve `import` without names syntax error message (#118083)Nikita Sobolev2024-04-231-149/+200
|
* gh-109120: Fix syntax error in handlinh of incorrect star expressions (#117444)Grigoriev Semyon2024-04-021-1230/+1417
|
* gh-117266: Fix crashes on user-created AST subclasses (GH-117276)Jelle Zijlstra2024-03-281-2/+13
| | | Fix crashes on user-created AST subclasses
* bpo-24612: Improve syntax error for 'not' after an operator (GH-28170)Pablo Galindo Salgado2024-03-261-594/+970
| | | Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
* gh-116437: Use new C API PyDict_Pop() to simplify the code (GH-116438)Serhiy Storchaka2024-03-071-9/+9
|
* gh-105858: Improve AST node constructors (#105880)Jelle Zijlstra2024-02-281-7/+231
| | | | | | | | | | | | | | | | | Demonstration: >>> ast.FunctionDef.__annotations__ {'name': <class 'str'>, 'args': <class 'ast.arguments'>, 'body': list[ast.stmt], 'decorator_list': list[ast.expr], 'returns': ast.expr | None, 'type_comment': str | None, 'type_params': list[ast.type_param]} >>> ast.FunctionDef() <stdin>:1: DeprecationWarning: FunctionDef.__init__ missing 1 required positional argument: 'name'. This will become an error in Python 3.15. <stdin>:1: DeprecationWarning: FunctionDef.__init__ missing 1 required positional argument: 'args'. This will become an error in Python 3.15. <ast.FunctionDef object at 0x101959460> >>> node = ast.FunctionDef(name="foo", args=ast.arguments()) >>> node.decorator_list [] >>> ast.FunctionDef(whatever="you want", name="x", args=ast.arguments()) <stdin>:1: DeprecationWarning: FunctionDef.__init__ got an unexpected keyword argument 'whatever'. Support for arbitrary keyword arguments is deprecated and will be removed in Python 3.15. <ast.FunctionDef object at 0x1019581f0>
* gh-115823: Calculate correctly error locations when dealing with implicit ↵Pablo Galindo Salgado2024-02-261-11/+9
| | | | encodings (#115824)
* gh-115881: Ensure `ast.parse()` parses conditional context managers even ↵Alex Waygood2024-02-261-1/+1
| | | | with low `feature_version` passed (#115920)
* gh-113744: Add a new IncompleteInputError exception to improve incomplete ↵Pablo Galindo Salgado2024-01-301-1/+1
| | | | | input detection in the codeop module (#113745) Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
* gh-114569: Use PyMem_* APIs for most non-PyObject uses (#114574)Erlend E. Aasland2024-01-261-2/+2
| | | Fix usage in Modules, Objects, and Parser subdirectories.
* GH-113655: Lower the C recursion limit on various platforms (GH-113944)Mark Shannon2024-01-161-3/+2
|
* gh-111488: Changed error message in case of no 'in' keyword after 'for' in ↵Grigoriev Semyon2024-01-061-1592/+1785
| | | | cmp (#113656)
* gh-113703: Correctly identify incomplete f-strings in the codeop module ↵Pablo Galindo Salgado2024-01-051-2/+6
| | | | (#113709)
* gh-113602: Bail out when the parser tries to override existing errors (#113607)Pablo Galindo Salgado2024-01-021-0/+4
| | | Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
* gh-106905: Use separate structs to track recursion depth in each ↵Yilei Yang2023-12-251-25/+28
| | | | | | PyAST_mod2obj call. (GH-113035) Co-authored-by: Gregory P. Smith [Google LLC] <greg@krypto.org>
* gh-112943: Correctly compute end offsets for multiline tokens in the ↵Pablo Galindo Salgado2023-12-112-5/+12
| | | | tokenize module (#112949)
* Fix typos in variable names, function names, and comments (GH-101868)Yang Hau2023-12-011-1/+1
|
* gh-112387: Fix error positions for decoded strings with backwards tokenize ↵Pablo Galindo Salgado2023-11-271-0/+4
| | | | | errors (#112409) Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
* gh-112388: Fix an error that was causing the parser to try to overwrite ↵Pablo Galindo Salgado2023-11-271-0/+4
| | | | | tokenizer errors (#112410) Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
* gh-112243: Don't include comments in f-string debug expressions (#112284)Pablo Galindo Salgado2023-11-201-6/+49
|
* bpo-45759: Better error messages for non-matching 'elif'/'else' statements ↵Crowthebird2023-11-201-435/+533
| | | | (#29513)
* GH-111807: Lower the parser stack depth under WASI debug builds (#112225)Brett Cannon2023-11-201-1/+5
|
* gh-111956: Add thread-safe one-time initialization. (gh-111960)Sam Gross2023-11-161-47/+42
|
* gh-106905: avoid incorrect SystemError about recursion depth mismatch (#106906)Markus Mohrhard2023-11-131-0/+1
| | | | | | | | | | * gh-106905: avoid incorrect SystemError about recursion depth mismatch * Update Misc/NEWS.d/next/Core and Builtins/2023-07-20-11-41-16.gh-issue-106905.AyZpuB.rst --------- Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
* Simplify _PyPegen_join_names_with_dot() (GH-111602)Serhiy Storchaka2023-11-011-32/+2
|