Mercurial > cpython-lru_cache-weakref
annotate Parser/Python.asdl @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 7c5c678e4164 |
| children |
| rev | line source |
|---|---|
|
80738
03f92a9f0875
create NameConstant AST class for None, True, and False literals (closes #16619)
Benjamin Peterson <benjamin@python.org>
parents:
80589
diff
changeset
|
1 -- ASDL's six builtin types are identifier, int, string, bytes, object, singleton |
| 35742 | 2 |
|
68412
0daa6ba25d9b
convert ast versioning to mercurial
Benjamin Peterson <benjamin@python.org>
parents:
62447
diff
changeset
|
3 module Python |
| 35742 | 4 { |
| 74446 | 5 mod = Module(stmt* body) |
| 6 | Interactive(stmt* body) | |
| 7 | Expression(expr body) | |
| 35742 | 8 |
| 74446 | 9 -- not really an actual node but useful in Jython's typesystem. |
| 10 | Suite(stmt* body) | |
| 35742 | 11 |
| 74446 | 12 stmt = FunctionDef(identifier name, arguments args, |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
13 stmt* body, expr* decorator_list, expr? returns) |
| 74446 | 14 | ClassDef(identifier name, |
| 15 expr* bases, | |
| 16 keyword* keywords, | |
| 17 expr? starargs, | |
| 18 expr? kwargs, | |
| 19 stmt* body, | |
| 20 expr* decorator_list) | |
| 21 | Return(expr? value) | |
| 35742 | 22 |
| 74446 | 23 | Delete(expr* targets) |
| 24 | Assign(expr* targets, expr value) | |
| 25 | AugAssign(expr target, operator op, expr value) | |
| 35742 | 26 |
| 74446 | 27 -- use 'orelse' because else is a keyword in target languages |
| 28 | For(expr target, expr iter, stmt* body, stmt* orelse) | |
| 29 | While(expr test, stmt* body, stmt* orelse) | |
| 30 | If(expr test, stmt* body, stmt* orelse) | |
| 31 | With(withitem* items, stmt* body) | |
| 35742 | 32 |
| 74446 | 33 | Raise(expr? exc, expr? cause) |
| 34 | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | |
| 35 | Assert(expr test, expr? msg) | |
| 35742 | 36 |
| 74446 | 37 | Import(alias* names) |
| 38 | ImportFrom(identifier? module, alias* names, int? level) | |
| 35742 | 39 |
| 74446 | 40 | Global(identifier* names) |
| 41 | Nonlocal(identifier* names) | |
| 42 | Expr(expr value) | |
| 43 | Pass | Break | Continue | |
| 35742 | 44 |
| 74446 | 45 -- XXX Jython will be different |
| 46 -- col_offset is the byte offset in the utf8 string the parser uses | |
| 47 attributes (int lineno, int col_offset) | |
| 35742 | 48 |
| 74446 | 49 -- BoolOp() can use left & right? |
| 50 expr = BoolOp(boolop op, expr* values) | |
| 51 | BinOp(expr left, operator op, expr right) | |
| 52 | UnaryOp(unaryop op, expr operand) | |
| 53 | Lambda(arguments args, expr body) | |
| 54 | IfExp(expr test, expr body, expr orelse) | |
| 55 | Dict(expr* keys, expr* values) | |
| 56 | Set(expr* elts) | |
| 57 | ListComp(expr elt, comprehension* generators) | |
| 58 | SetComp(expr elt, comprehension* generators) | |
| 59 | DictComp(expr key, expr value, comprehension* generators) | |
| 60 | GeneratorExp(expr elt, comprehension* generators) | |
| 61 -- the grammar constrains where yield expressions can occur | |
| 62 | Yield(expr? value) | |
|
80589
ffb2fa900cb7
Issue #16546: make ast.YieldFrom argument mandatory.
Mark Dickinson <mdickinson@enthought.com>
parents:
74446
diff
changeset
|
63 | YieldFrom(expr value) |
| 74446 | 64 -- need sequences for compare to distinguish between |
| 65 -- x < 4 < 3 and (x < 4) < 3 | |
| 66 | Compare(expr left, cmpop* ops, expr* comparators) | |
| 67 | Call(expr func, expr* args, keyword* keywords, | |
| 68 expr? starargs, expr? kwargs) | |
| 69 | Num(object n) -- a number as a PyObject. | |
| 70 | Str(string s) -- need to specify raw, unicode, etc? | |
| 71 | Bytes(bytes s) | |
|
80738
03f92a9f0875
create NameConstant AST class for None, True, and False literals (closes #16619)
Benjamin Peterson <benjamin@python.org>
parents:
80589
diff
changeset
|
72 | NameConstant(singleton value) |
| 74446 | 73 | Ellipsis |
| 35742 | 74 |
| 74446 | 75 -- the following expression can appear in assignment context |
| 76 | Attribute(expr value, identifier attr, expr_context ctx) | |
| 77 | Subscript(expr value, slice slice, expr_context ctx) | |
| 78 | Starred(expr value, expr_context ctx) | |
| 79 | Name(identifier id, expr_context ctx) | |
| 80 | List(expr* elts, expr_context ctx) | |
| 81 | Tuple(expr* elts, expr_context ctx) | |
| 35742 | 82 |
| 74446 | 83 -- col_offset is the byte offset in the utf8 string the parser uses |
| 84 attributes (int lineno, int col_offset) | |
| 35742 | 85 |
| 74446 | 86 expr_context = Load | Store | Del | AugLoad | AugStore | Param |
| 35742 | 87 |
| 74446 | 88 slice = Slice(expr? lower, expr? upper, expr? step) |
| 89 | ExtSlice(slice* dims) | |
| 90 | Index(expr value) | |
| 35742 | 91 |
| 74446 | 92 boolop = And | Or |
| 35742 | 93 |
| 74446 | 94 operator = Add | Sub | Mult | Div | Mod | Pow | LShift |
| 35742 | 95 | RShift | BitOr | BitXor | BitAnd | FloorDiv |
| 96 | |
| 74446 | 97 unaryop = Invert | Not | UAdd | USub |
| 35742 | 98 |
| 74446 | 99 cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn |
| 35742 | 100 |
| 74446 | 101 comprehension = (expr target, expr iter, expr* ifs) |
| 35742 | 102 |
| 74446 | 103 excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) |
| 104 attributes (int lineno, int col_offset) | |
| 35742 | 105 |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
106 arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, |
|
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
107 arg? kwarg, expr* defaults) |
|
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
108 |
| 74446 | 109 arg = (identifier arg, expr? annotation) |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
110 attributes (int lineno, int col_offset) |
| 35742 | 111 |
| 74446 | 112 -- keyword arguments supplied to call |
| 113 keyword = (identifier arg, expr value) | |
| 35742 | 114 |
| 74446 | 115 -- import name with optional 'as' alias. |
| 116 alias = (identifier name, identifier? asname) | |
|
70438
9b11cc4e2918
reflect with statements with multiple items in the AST (closes #12106)
Benjamin Peterson <benjamin@python.org>
parents:
68412
diff
changeset
|
117 |
| 74446 | 118 withitem = (expr context_expr, expr? optional_vars) |
| 35742 | 119 } |
|
40895
bd1419e94773
Touch file to regenerate Python-ast.[ch]
Thomas Wouters <thomas@python.org>
parents:
40894
diff
changeset
|
120 |
