mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #27985: Implement PEP 526 -- Syntax for Variable Annotations.
Patch by Ivan Levkivskyi.
This commit is contained in:
parent
09ad17810c
commit
f8cb8a16a3
45 changed files with 3242 additions and 1308 deletions
|
@ -86,6 +86,15 @@ static char *AugAssign_fields[]={
|
|||
"op",
|
||||
"value",
|
||||
};
|
||||
static PyTypeObject *AnnAssign_type;
|
||||
_Py_IDENTIFIER(annotation);
|
||||
_Py_IDENTIFIER(simple);
|
||||
static char *AnnAssign_fields[]={
|
||||
"target",
|
||||
"annotation",
|
||||
"value",
|
||||
"simple",
|
||||
};
|
||||
static PyTypeObject *For_type;
|
||||
_Py_IDENTIFIER(iter);
|
||||
_Py_IDENTIFIER(orelse);
|
||||
|
@ -466,7 +475,6 @@ static char *arg_attributes[] = {
|
|||
"col_offset",
|
||||
};
|
||||
_Py_IDENTIFIER(arg);
|
||||
_Py_IDENTIFIER(annotation);
|
||||
static char *arg_fields[]={
|
||||
"arg",
|
||||
"annotation",
|
||||
|
@ -873,6 +881,8 @@ static int init_types(void)
|
|||
if (!Assign_type) return 0;
|
||||
AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3);
|
||||
if (!AugAssign_type) return 0;
|
||||
AnnAssign_type = make_type("AnnAssign", stmt_type, AnnAssign_fields, 4);
|
||||
if (!AnnAssign_type) return 0;
|
||||
For_type = make_type("For", stmt_type, For_fields, 4);
|
||||
if (!For_type) return 0;
|
||||
AsyncFor_type = make_type("AsyncFor", stmt_type, AsyncFor_fields, 4);
|
||||
|
@ -1406,6 +1416,34 @@ AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int
|
|||
return p;
|
||||
}
|
||||
|
||||
stmt_ty
|
||||
AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int simple, int
|
||||
lineno, int col_offset, PyArena *arena)
|
||||
{
|
||||
stmt_ty p;
|
||||
if (!target) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"field target is required for AnnAssign");
|
||||
return NULL;
|
||||
}
|
||||
if (!annotation) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"field annotation is required for AnnAssign");
|
||||
return NULL;
|
||||
}
|
||||
p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
|
||||
if (!p)
|
||||
return NULL;
|
||||
p->kind = AnnAssign_kind;
|
||||
p->v.AnnAssign.target = target;
|
||||
p->v.AnnAssign.annotation = annotation;
|
||||
p->v.AnnAssign.value = value;
|
||||
p->v.AnnAssign.simple = simple;
|
||||
p->lineno = lineno;
|
||||
p->col_offset = col_offset;
|
||||
return p;
|
||||
}
|
||||
|
||||
stmt_ty
|
||||
For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int
|
||||
lineno, int col_offset, PyArena *arena)
|
||||
|
@ -2740,6 +2778,30 @@ ast2obj_stmt(void* _o)
|
|||
goto failed;
|
||||
Py_DECREF(value);
|
||||
break;
|
||||
case AnnAssign_kind:
|
||||
result = PyType_GenericNew(AnnAssign_type, NULL, NULL);
|
||||
if (!result) goto failed;
|
||||
value = ast2obj_expr(o->v.AnnAssign.target);
|
||||
if (!value) goto failed;
|
||||
if (_PyObject_SetAttrId(result, &PyId_target, value) == -1)
|
||||
goto failed;
|
||||
Py_DECREF(value);
|
||||
value = ast2obj_expr(o->v.AnnAssign.annotation);
|
||||
if (!value) goto failed;
|
||||
if (_PyObject_SetAttrId(result, &PyId_annotation, value) == -1)
|
||||
goto failed;
|
||||
Py_DECREF(value);
|
||||
value = ast2obj_expr(o->v.AnnAssign.value);
|
||||
if (!value) goto failed;
|
||||
if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
|
||||
goto failed;
|
||||
Py_DECREF(value);
|
||||
value = ast2obj_int(o->v.AnnAssign.simple);
|
||||
if (!value) goto failed;
|
||||
if (_PyObject_SetAttrId(result, &PyId_simple, value) == -1)
|
||||
goto failed;
|
||||
Py_DECREF(value);
|
||||
break;
|
||||
case For_kind:
|
||||
result = PyType_GenericNew(For_type, NULL, NULL);
|
||||
if (!result) goto failed;
|
||||
|
@ -4535,6 +4597,64 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
|
|||
if (*out == NULL) goto failed;
|
||||
return 0;
|
||||
}
|
||||
isinstance = PyObject_IsInstance(obj, (PyObject*)AnnAssign_type);
|
||||
if (isinstance == -1) {
|
||||
return 1;
|
||||
}
|
||||
if (isinstance) {
|
||||
expr_ty target;
|
||||
expr_ty annotation;
|
||||
expr_ty value;
|
||||
int simple;
|
||||
|
||||
if (_PyObject_HasAttrId(obj, &PyId_target)) {
|
||||
int res;
|
||||
tmp = _PyObject_GetAttrId(obj, &PyId_target);
|
||||
if (tmp == NULL) goto failed;
|
||||
res = obj2ast_expr(tmp, &target, arena);
|
||||
if (res != 0) goto failed;
|
||||
Py_CLEAR(tmp);
|
||||
} else {
|
||||
PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AnnAssign");
|
||||
return 1;
|
||||
}
|
||||
if (_PyObject_HasAttrId(obj, &PyId_annotation)) {
|
||||
int res;
|
||||
tmp = _PyObject_GetAttrId(obj, &PyId_annotation);
|
||||
if (tmp == NULL) goto failed;
|
||||
res = obj2ast_expr(tmp, &annotation, arena);
|
||||
if (res != 0) goto failed;
|
||||
Py_CLEAR(tmp);
|
||||
} else {
|
||||
PyErr_SetString(PyExc_TypeError, "required field \"annotation\" missing from AnnAssign");
|
||||
return 1;
|
||||
}
|
||||
if (exists_not_none(obj, &PyId_value)) {
|
||||
int res;
|
||||
tmp = _PyObject_GetAttrId(obj, &PyId_value);
|
||||
if (tmp == NULL) goto failed;
|
||||
res = obj2ast_expr(tmp, &value, arena);
|
||||
if (res != 0) goto failed;
|
||||
Py_CLEAR(tmp);
|
||||
} else {
|
||||
value = NULL;
|
||||
}
|
||||
if (_PyObject_HasAttrId(obj, &PyId_simple)) {
|
||||
int res;
|
||||
tmp = _PyObject_GetAttrId(obj, &PyId_simple);
|
||||
if (tmp == NULL) goto failed;
|
||||
res = obj2ast_int(tmp, &simple, arena);
|
||||
if (res != 0) goto failed;
|
||||
Py_CLEAR(tmp);
|
||||
} else {
|
||||
PyErr_SetString(PyExc_TypeError, "required field \"simple\" missing from AnnAssign");
|
||||
return 1;
|
||||
}
|
||||
*out = AnnAssign(target, annotation, value, simple, lineno, col_offset,
|
||||
arena);
|
||||
if (*out == NULL) goto failed;
|
||||
return 0;
|
||||
}
|
||||
isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
|
||||
if (isinstance == -1) {
|
||||
return 1;
|
||||
|
@ -7517,6 +7637,8 @@ PyInit__ast(void)
|
|||
NULL;
|
||||
if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) < 0)
|
||||
return NULL;
|
||||
if (PyDict_SetItemString(d, "AnnAssign", (PyObject*)AnnAssign_type) < 0)
|
||||
return NULL;
|
||||
if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return NULL;
|
||||
if (PyDict_SetItemString(d, "AsyncFor", (PyObject*)AsyncFor_type) < 0)
|
||||
return NULL;
|
||||
|
|
86
Python/ast.c
86
Python/ast.c
|
@ -397,6 +397,17 @@ validate_stmt(stmt_ty stmt)
|
|||
case AugAssign_kind:
|
||||
return validate_expr(stmt->v.AugAssign.target, Store) &&
|
||||
validate_expr(stmt->v.AugAssign.value, Load);
|
||||
case AnnAssign_kind:
|
||||
if (stmt->v.AnnAssign.target->kind != Name_kind &&
|
||||
stmt->v.AnnAssign.simple) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"AnnAssign with simple non-Name target");
|
||||
return 0;
|
||||
}
|
||||
return validate_expr(stmt->v.AnnAssign.target, Store) &&
|
||||
(!stmt->v.AnnAssign.value ||
|
||||
validate_expr(stmt->v.AnnAssign.value, Load)) &&
|
||||
validate_expr(stmt->v.AnnAssign.annotation, Load);
|
||||
case For_kind:
|
||||
return validate_expr(stmt->v.For.target, Store) &&
|
||||
validate_expr(stmt->v.For.iter, Load) &&
|
||||
|
@ -2847,8 +2858,9 @@ static stmt_ty
|
|||
ast_for_expr_stmt(struct compiling *c, const node *n)
|
||||
{
|
||||
REQ(n, expr_stmt);
|
||||
/* expr_stmt: testlist_star_expr (augassign (yield_expr|testlist)
|
||||
| ('=' (yield_expr|testlist))*)
|
||||
/* expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) |
|
||||
('=' (yield_expr|testlist_star_expr))*)
|
||||
annassign: ':' test ['=' test]
|
||||
testlist_star_expr: (test|star_expr) (',' test|star_expr)* [',']
|
||||
augassign: '+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^='
|
||||
| '<<=' | '>>=' | '**=' | '//='
|
||||
|
@ -2900,6 +2912,76 @@ ast_for_expr_stmt(struct compiling *c, const node *n)
|
|||
|
||||
return AugAssign(expr1, newoperator, expr2, LINENO(n), n->n_col_offset, c->c_arena);
|
||||
}
|
||||
else if (TYPE(CHILD(n, 1)) == annassign) {
|
||||
expr_ty expr1, expr2, expr3;
|
||||
node *ch = CHILD(n, 0);
|
||||
node *deep, *ann = CHILD(n, 1);
|
||||
int simple = 1;
|
||||
|
||||
/* we keep track of parens to qualify (x) as expression not name */
|
||||
deep = ch;
|
||||
while (NCH(deep) == 1) {
|
||||
deep = CHILD(deep, 0);
|
||||
}
|
||||
if (NCH(deep) > 0 && TYPE(CHILD(deep, 0)) == LPAR) {
|
||||
simple = 0;
|
||||
}
|
||||
expr1 = ast_for_testlist(c, ch);
|
||||
if (!expr1) {
|
||||
return NULL;
|
||||
}
|
||||
switch (expr1->kind) {
|
||||
case Name_kind:
|
||||
if (forbidden_name(c, expr1->v.Name.id, n, 0)) {
|
||||
return NULL;
|
||||
}
|
||||
expr1->v.Name.ctx = Store;
|
||||
break;
|
||||
case Attribute_kind:
|
||||
if (forbidden_name(c, expr1->v.Attribute.attr, n, 1)) {
|
||||
return NULL;
|
||||
}
|
||||
expr1->v.Attribute.ctx = Store;
|
||||
break;
|
||||
case Subscript_kind:
|
||||
expr1->v.Subscript.ctx = Store;
|
||||
break;
|
||||
case List_kind:
|
||||
ast_error(c, ch,
|
||||
"only single target (not list) can be annotated");
|
||||
return NULL;
|
||||
case Tuple_kind:
|
||||
ast_error(c, ch,
|
||||
"only single target (not tuple) can be annotated");
|
||||
return NULL;
|
||||
default:
|
||||
ast_error(c, ch,
|
||||
"illegal target for annotation");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (expr1->kind != Name_kind) {
|
||||
simple = 0;
|
||||
}
|
||||
ch = CHILD(ann, 1);
|
||||
expr2 = ast_for_expr(c, ch);
|
||||
if (!expr2) {
|
||||
return NULL;
|
||||
}
|
||||
if (NCH(ann) == 2) {
|
||||
return AnnAssign(expr1, expr2, NULL, simple,
|
||||
LINENO(n), n->n_col_offset, c->c_arena);
|
||||
}
|
||||
else {
|
||||
ch = CHILD(ann, 3);
|
||||
expr3 = ast_for_expr(c, ch);
|
||||
if (!expr3) {
|
||||
return NULL;
|
||||
}
|
||||
return AnnAssign(expr1, expr2, expr3, simple,
|
||||
LINENO(n), n->n_col_offset, c->c_arena);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int i;
|
||||
asdl_seq *targets;
|
||||
|
|
112
Python/ceval.c
112
Python/ceval.c
|
@ -1873,6 +1873,62 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
|||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(STORE_ANNOTATION) {
|
||||
_Py_IDENTIFIER(__annotations__);
|
||||
PyObject *ann_dict;
|
||||
PyObject *ann = POP();
|
||||
PyObject *name = GETITEM(names, oparg);
|
||||
int err;
|
||||
if (f->f_locals == NULL) {
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals found when storing annotation");
|
||||
Py_DECREF(ann);
|
||||
goto error;
|
||||
}
|
||||
/* first try to get __annotations__ from locals... */
|
||||
if (PyDict_CheckExact(f->f_locals)) {
|
||||
ann_dict = _PyDict_GetItemId(f->f_locals,
|
||||
&PyId___annotations__);
|
||||
if (ann_dict == NULL) {
|
||||
PyErr_SetString(PyExc_NameError,
|
||||
"__annotations__ not found");
|
||||
Py_DECREF(ann);
|
||||
goto error;
|
||||
}
|
||||
Py_INCREF(ann_dict);
|
||||
}
|
||||
else {
|
||||
PyObject *ann_str = _PyUnicode_FromId(&PyId___annotations__);
|
||||
if (ann_str == NULL) {
|
||||
Py_DECREF(ann);
|
||||
goto error;
|
||||
}
|
||||
ann_dict = PyObject_GetItem(f->f_locals, ann_str);
|
||||
if (ann_dict == NULL) {
|
||||
if (PyErr_ExceptionMatches(PyExc_KeyError)) {
|
||||
PyErr_SetString(PyExc_NameError,
|
||||
"__annotations__ not found");
|
||||
}
|
||||
Py_DECREF(ann);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
/* ...if succeeded, __annotations__[name] = ann */
|
||||
if (PyDict_CheckExact(ann_dict)) {
|
||||
err = PyDict_SetItem(ann_dict, name, ann);
|
||||
}
|
||||
else {
|
||||
err = PyObject_SetItem(ann_dict, name, ann);
|
||||
}
|
||||
Py_DECREF(ann_dict);
|
||||
if (err != 0) {
|
||||
Py_DECREF(ann);
|
||||
goto error;
|
||||
}
|
||||
Py_DECREF(ann);
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(DELETE_SUBSCR) {
|
||||
PyObject *sub = TOP();
|
||||
PyObject *container = SECOND();
|
||||
|
@ -2680,6 +2736,62 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
|||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(SETUP_ANNOTATIONS) {
|
||||
_Py_IDENTIFIER(__annotations__);
|
||||
int err;
|
||||
PyObject *ann_dict;
|
||||
if (f->f_locals == NULL) {
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"no locals found when setting up annotations");
|
||||
goto error;
|
||||
}
|
||||
/* check if __annotations__ in locals()... */
|
||||
if (PyDict_CheckExact(f->f_locals)) {
|
||||
ann_dict = _PyDict_GetItemId(f->f_locals,
|
||||
&PyId___annotations__);
|
||||
if (ann_dict == NULL) {
|
||||
/* ...if not, create a new one */
|
||||
ann_dict = PyDict_New();
|
||||
if (ann_dict == NULL) {
|
||||
goto error;
|
||||
}
|
||||
err = _PyDict_SetItemId(f->f_locals,
|
||||
&PyId___annotations__, ann_dict);
|
||||
Py_DECREF(ann_dict);
|
||||
if (err != 0) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* do the same if locals() is not a dict */
|
||||
PyObject *ann_str = _PyUnicode_FromId(&PyId___annotations__);
|
||||
if (ann_str == NULL) {
|
||||
break;
|
||||
}
|
||||
ann_dict = PyObject_GetItem(f->f_locals, ann_str);
|
||||
if (ann_dict == NULL) {
|
||||
if (!PyErr_ExceptionMatches(PyExc_KeyError)) {
|
||||
goto error;
|
||||
}
|
||||
PyErr_Clear();
|
||||
ann_dict = PyDict_New();
|
||||
if (ann_dict == NULL) {
|
||||
goto error;
|
||||
}
|
||||
err = PyObject_SetItem(f->f_locals, ann_str, ann_dict);
|
||||
Py_DECREF(ann_dict);
|
||||
if (err != 0) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Py_DECREF(ann_dict);
|
||||
}
|
||||
}
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(BUILD_CONST_KEY_MAP) {
|
||||
Py_ssize_t i;
|
||||
PyObject *map;
|
||||
|
|
215
Python/compile.c
215
Python/compile.c
|
@ -179,6 +179,7 @@ static int compiler_visit_stmt(struct compiler *, stmt_ty);
|
|||
static int compiler_visit_keyword(struct compiler *, keyword_ty);
|
||||
static int compiler_visit_expr(struct compiler *, expr_ty);
|
||||
static int compiler_augassign(struct compiler *, stmt_ty);
|
||||
static int compiler_annassign(struct compiler *, stmt_ty);
|
||||
static int compiler_visit_slice(struct compiler *, slice_ty,
|
||||
expr_context_ty);
|
||||
|
||||
|
@ -933,6 +934,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
|
|||
return -1;
|
||||
case IMPORT_STAR:
|
||||
return -1;
|
||||
case SETUP_ANNOTATIONS:
|
||||
return 0;
|
||||
case YIELD_VALUE:
|
||||
return 0;
|
||||
case YIELD_FROM:
|
||||
|
@ -1020,6 +1023,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
|
|||
return -1;
|
||||
case DELETE_FAST:
|
||||
return 0;
|
||||
case STORE_ANNOTATION:
|
||||
return -1;
|
||||
|
||||
case RAISE_VARARGS:
|
||||
return -oparg;
|
||||
|
@ -1358,7 +1363,65 @@ get_const_value(expr_ty e)
|
|||
}
|
||||
}
|
||||
|
||||
/* Compile a sequence of statements, checking for a docstring. */
|
||||
/* Search if variable annotations are present statically in a block. */
|
||||
|
||||
static int
|
||||
find_ann(asdl_seq *stmts)
|
||||
{
|
||||
int i, j, res = 0;
|
||||
stmt_ty st;
|
||||
|
||||
for (i = 0; i < asdl_seq_LEN(stmts); i++) {
|
||||
st = (stmt_ty)asdl_seq_GET(stmts, i);
|
||||
switch (st->kind) {
|
||||
case AnnAssign_kind:
|
||||
return 1;
|
||||
case For_kind:
|
||||
res = find_ann(st->v.For.body) ||
|
||||
find_ann(st->v.For.orelse);
|
||||
break;
|
||||
case AsyncFor_kind:
|
||||
res = find_ann(st->v.AsyncFor.body) ||
|
||||
find_ann(st->v.AsyncFor.orelse);
|
||||
break;
|
||||
case While_kind:
|
||||
res = find_ann(st->v.While.body) ||
|
||||
find_ann(st->v.While.orelse);
|
||||
break;
|
||||
case If_kind:
|
||||
res = find_ann(st->v.If.body) ||
|
||||
find_ann(st->v.If.orelse);
|
||||
break;
|
||||
case With_kind:
|
||||
res = find_ann(st->v.With.body);
|
||||
break;
|
||||
case AsyncWith_kind:
|
||||
res = find_ann(st->v.AsyncWith.body);
|
||||
break;
|
||||
case Try_kind:
|
||||
for (j = 0; j < asdl_seq_LEN(st->v.Try.handlers); j++) {
|
||||
excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
|
||||
st->v.Try.handlers, j);
|
||||
if (find_ann(handler->v.ExceptHandler.body)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
res = find_ann(st->v.Try.body) ||
|
||||
find_ann(st->v.Try.finalbody) ||
|
||||
find_ann(st->v.Try.orelse);
|
||||
break;
|
||||
default:
|
||||
res = 0;
|
||||
}
|
||||
if (res) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Compile a sequence of statements, checking for a docstring
|
||||
and for annotations. */
|
||||
|
||||
static int
|
||||
compiler_body(struct compiler *c, asdl_seq *stmts)
|
||||
|
@ -1366,6 +1429,19 @@ compiler_body(struct compiler *c, asdl_seq *stmts)
|
|||
int i = 0;
|
||||
stmt_ty st;
|
||||
|
||||
/* Set current line number to the line number of first statement.
|
||||
This way line number for SETUP_ANNOTATIONS will always
|
||||
coincide with the line number of first "real" statement in module.
|
||||
If body is empy, then lineno will be set later in assemble. */
|
||||
if (c->u->u_scope_type == COMPILER_SCOPE_MODULE &&
|
||||
!c->u->u_lineno && asdl_seq_LEN(stmts)) {
|
||||
st = (stmt_ty)asdl_seq_GET(stmts, 0);
|
||||
c->u->u_lineno = st->lineno;
|
||||
}
|
||||
/* Every annotated class and module should have __annotations__. */
|
||||
if (find_ann(stmts)) {
|
||||
ADDOP(c, SETUP_ANNOTATIONS);
|
||||
}
|
||||
if (!asdl_seq_LEN(stmts))
|
||||
return 1;
|
||||
st = (stmt_ty)asdl_seq_GET(stmts, 0);
|
||||
|
@ -1403,6 +1479,9 @@ compiler_mod(struct compiler *c, mod_ty mod)
|
|||
}
|
||||
break;
|
||||
case Interactive_kind:
|
||||
if (find_ann(mod->v.Interactive.body)) {
|
||||
ADDOP(c, SETUP_ANNOTATIONS);
|
||||
}
|
||||
c->c_interactive = 1;
|
||||
VISIT_SEQ_IN_SCOPE(c, stmt,
|
||||
mod->v.Interactive.body);
|
||||
|
@ -2743,6 +2822,8 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s)
|
|||
break;
|
||||
case AugAssign_kind:
|
||||
return compiler_augassign(c, s);
|
||||
case AnnAssign_kind:
|
||||
return compiler_annassign(c, s);
|
||||
case For_kind:
|
||||
return compiler_for(c, s);
|
||||
case While_kind:
|
||||
|
@ -4222,6 +4303,138 @@ compiler_augassign(struct compiler *c, stmt_ty s)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
check_ann_expr(struct compiler *c, expr_ty e)
|
||||
{
|
||||
VISIT(c, expr, e);
|
||||
ADDOP(c, POP_TOP);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
check_annotation(struct compiler *c, stmt_ty s)
|
||||
{
|
||||
/* Annotations are only evaluated in a module or class. */
|
||||
if (c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
|
||||
c->u->u_scope_type == COMPILER_SCOPE_CLASS) {
|
||||
return check_ann_expr(c, s->v.AnnAssign.annotation);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
check_ann_slice(struct compiler *c, slice_ty sl)
|
||||
{
|
||||
switch(sl->kind) {
|
||||
case Index_kind:
|
||||
return check_ann_expr(c, sl->v.Index.value);
|
||||
case Slice_kind:
|
||||
if (sl->v.Slice.lower && !check_ann_expr(c, sl->v.Slice.lower)) {
|
||||
return 0;
|
||||
}
|
||||
if (sl->v.Slice.upper && !check_ann_expr(c, sl->v.Slice.upper)) {
|
||||
return 0;
|
||||
}
|
||||
if (sl->v.Slice.step && !check_ann_expr(c, sl->v.Slice.step)) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"unexpected slice kind");
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
check_ann_subscr(struct compiler *c, slice_ty sl)
|
||||
{
|
||||
/* We check that everything in a subscript is defined at runtime. */
|
||||
Py_ssize_t i, n;
|
||||
|
||||
switch (sl->kind) {
|
||||
case Index_kind:
|
||||
case Slice_kind:
|
||||
if (!check_ann_slice(c, sl)) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case ExtSlice_kind:
|
||||
n = asdl_seq_LEN(sl->v.ExtSlice.dims);
|
||||
for (i = 0; i < n; i++) {
|
||||
slice_ty subsl = (slice_ty)asdl_seq_GET(sl->v.ExtSlice.dims, i);
|
||||
switch (subsl->kind) {
|
||||
case Index_kind:
|
||||
case Slice_kind:
|
||||
if (!check_ann_slice(c, subsl)) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case ExtSlice_kind:
|
||||
default:
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"extended slice invalid in nested slice");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"invalid subscript kind %d", sl->kind);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
compiler_annassign(struct compiler *c, stmt_ty s)
|
||||
{
|
||||
expr_ty targ = s->v.AnnAssign.target;
|
||||
|
||||
assert(s->kind == AnnAssign_kind);
|
||||
|
||||
/* We perform the actual assignment first. */
|
||||
if (s->v.AnnAssign.value) {
|
||||
VISIT(c, expr, s->v.AnnAssign.value);
|
||||
VISIT(c, expr, targ);
|
||||
}
|
||||
switch (targ->kind) {
|
||||
case Name_kind:
|
||||
/* If we have a simple name in a module or class, store annotation. */
|
||||
if (s->v.AnnAssign.simple &&
|
||||
(c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
|
||||
c->u->u_scope_type == COMPILER_SCOPE_CLASS)) {
|
||||
VISIT(c, expr, s->v.AnnAssign.annotation);
|
||||
ADDOP_O(c, STORE_ANNOTATION, targ->v.Name.id, names)
|
||||
}
|
||||
break;
|
||||
case Attribute_kind:
|
||||
if (!s->v.AnnAssign.value &&
|
||||
!check_ann_expr(c, targ->v.Attribute.value)) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case Subscript_kind:
|
||||
if (!s->v.AnnAssign.value &&
|
||||
(!check_ann_expr(c, targ->v.Subscript.value) ||
|
||||
!check_ann_subscr(c, targ->v.Subscript.slice))) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"invalid node type (%d) for annotated assignment",
|
||||
targ->kind);
|
||||
return 0;
|
||||
}
|
||||
/* Annotation is evaluated last. */
|
||||
if (!s->v.AnnAssign.simple && !check_annotation(c, s)) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
compiler_push_fblock(struct compiler *c, enum fblocktype t, basicblock *b)
|
||||
{
|
||||
|
|
2055
Python/graminit.c
2055
Python/graminit.c
File diff suppressed because it is too large
Load diff
|
@ -242,7 +242,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
101,95,97,116,111,109,105,99,106,0,0,0,115,26,0,0,
|
||||
0,0,5,16,1,6,1,26,1,2,3,14,1,20,1,16,
|
||||
1,14,1,2,1,14,1,14,1,6,1,114,58,0,0,0,
|
||||
105,45,13,0,0,233,2,0,0,0,114,15,0,0,0,115,
|
||||
105,47,13,0,0,233,2,0,0,0,114,15,0,0,0,115,
|
||||
2,0,0,0,13,10,90,11,95,95,112,121,99,97,99,104,
|
||||
101,95,95,122,4,111,112,116,45,122,3,46,112,121,122,4,
|
||||
46,112,121,99,78,41,1,218,12,111,112,116,105,109,105,122,
|
||||
|
@ -346,7 +346,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
|
||||
109,101,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,
|
||||
117,114,99,101,1,1,0,0,115,48,0,0,0,0,18,8,
|
||||
117,114,99,101,3,1,0,0,115,48,0,0,0,0,18,8,
|
||||
1,6,1,6,1,8,1,4,1,8,1,12,1,10,1,12,
|
||||
1,16,1,8,1,8,1,8,1,24,1,8,1,12,1,6,
|
||||
2,8,1,8,1,8,1,8,1,14,1,14,1,114,83,0,
|
||||
|
@ -420,7 +420,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
112,116,95,108,101,118,101,108,90,13,98,97,115,101,95,102,
|
||||
105,108,101,110,97,109,101,114,4,0,0,0,114,4,0,0,
|
||||
0,114,6,0,0,0,218,17,115,111,117,114,99,101,95,102,
|
||||
114,111,109,95,99,97,99,104,101,46,1,0,0,115,46,0,
|
||||
114,111,109,95,99,97,99,104,101,48,1,0,0,115,46,0,
|
||||
0,0,0,9,12,1,8,1,10,1,12,1,12,1,8,1,
|
||||
6,1,10,1,10,1,8,1,6,1,10,1,8,1,16,1,
|
||||
10,1,6,1,8,1,16,1,8,1,6,1,8,1,14,1,
|
||||
|
@ -456,7 +456,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
115,105,111,110,218,11,115,111,117,114,99,101,95,112,97,116,
|
||||
104,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
|
||||
218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,108,
|
||||
101,80,1,0,0,115,20,0,0,0,0,7,12,1,4,1,
|
||||
101,82,1,0,0,115,20,0,0,0,0,7,12,1,4,1,
|
||||
16,1,26,1,4,1,2,1,12,1,18,1,18,1,114,95,
|
||||
0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,
|
||||
11,0,0,0,67,0,0,0,115,74,0,0,0,124,0,106,
|
||||
|
@ -469,7 +469,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,114,83,0,0,0,114,70,0,0,0,114,78,0,0,
|
||||
0,41,1,218,8,102,105,108,101,110,97,109,101,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,218,11,95,103,
|
||||
101,116,95,99,97,99,104,101,100,99,1,0,0,115,16,0,
|
||||
101,116,95,99,97,99,104,101,100,101,1,0,0,115,16,0,
|
||||
0,0,0,1,14,1,2,1,8,1,14,1,8,1,14,1,
|
||||
6,2,114,99,0,0,0,99,1,0,0,0,0,0,0,0,
|
||||
2,0,0,0,11,0,0,0,67,0,0,0,115,52,0,0,
|
||||
|
@ -483,7 +483,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,233,128,0,0,0,41,3,114,41,0,0,0,114,43,0,
|
||||
0,0,114,42,0,0,0,41,2,114,37,0,0,0,114,44,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,218,10,95,99,97,108,99,95,109,111,100,101,111,1,
|
||||
0,0,218,10,95,99,97,108,99,95,109,111,100,101,113,1,
|
||||
0,0,115,12,0,0,0,0,2,2,1,14,1,14,1,10,
|
||||
3,8,1,114,101,0,0,0,99,1,0,0,0,0,0,0,
|
||||
0,3,0,0,0,11,0,0,0,3,0,0,0,115,68,0,
|
||||
|
@ -521,7 +521,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
115,90,6,107,119,97,114,103,115,41,1,218,6,109,101,116,
|
||||
104,111,100,114,4,0,0,0,114,6,0,0,0,218,19,95,
|
||||
99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,
|
||||
101,114,131,1,0,0,115,12,0,0,0,0,1,8,1,8,
|
||||
101,114,133,1,0,0,115,12,0,0,0,0,1,8,1,8,
|
||||
1,10,1,4,1,20,1,122,40,95,99,104,101,99,107,95,
|
||||
110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99,
|
||||
104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,
|
||||
|
@ -541,7 +541,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
116,116,114,218,8,95,95,100,105,99,116,95,95,218,6,117,
|
||||
112,100,97,116,101,41,3,90,3,110,101,119,90,3,111,108,
|
||||
100,114,55,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,218,5,95,119,114,97,112,142,1,0,0,
|
||||
114,6,0,0,0,218,5,95,119,114,97,112,144,1,0,0,
|
||||
115,8,0,0,0,0,1,10,1,10,1,22,1,122,26,95,
|
||||
99,104,101,99,107,95,110,97,109,101,46,60,108,111,99,97,
|
||||
108,115,62,46,95,119,114,97,112,41,1,78,41,3,218,10,
|
||||
|
@ -549,7 +549,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
9,78,97,109,101,69,114,114,111,114,41,3,114,106,0,0,
|
||||
0,114,107,0,0,0,114,117,0,0,0,114,4,0,0,0,
|
||||
41,1,114,106,0,0,0,114,6,0,0,0,218,11,95,99,
|
||||
104,101,99,107,95,110,97,109,101,123,1,0,0,115,14,0,
|
||||
104,101,99,107,95,110,97,109,101,125,1,0,0,115,14,0,
|
||||
0,0,0,8,14,7,2,1,10,1,14,2,14,5,10,1,
|
||||
114,120,0,0,0,99,2,0,0,0,0,0,0,0,5,0,
|
||||
0,0,4,0,0,0,67,0,0,0,115,60,0,0,0,124,
|
||||
|
@ -577,7 +577,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
101,218,6,108,111,97,100,101,114,218,8,112,111,114,116,105,
|
||||
111,110,115,218,3,109,115,103,114,4,0,0,0,114,4,0,
|
||||
0,0,114,6,0,0,0,218,17,95,102,105,110,100,95,109,
|
||||
111,100,117,108,101,95,115,104,105,109,151,1,0,0,115,10,
|
||||
111,100,117,108,101,95,115,104,105,109,153,1,0,0,115,10,
|
||||
0,0,0,0,10,14,1,16,1,4,1,22,1,114,127,0,
|
||||
0,0,99,4,0,0,0,0,0,0,0,11,0,0,0,19,
|
||||
0,0,0,67,0,0,0,115,128,1,0,0,105,0,125,4,
|
||||
|
@ -657,7 +657,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
111,117,114,99,101,95,115,105,122,101,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,218,25,95,118,97,108,105,
|
||||
100,97,116,101,95,98,121,116,101,99,111,100,101,95,104,101,
|
||||
97,100,101,114,168,1,0,0,115,76,0,0,0,0,11,4,
|
||||
97,100,101,114,170,1,0,0,115,76,0,0,0,0,11,4,
|
||||
1,8,1,10,3,4,1,8,1,8,1,12,1,12,1,12,
|
||||
1,8,1,12,1,12,1,12,1,12,1,10,1,12,1,10,
|
||||
1,12,1,10,1,12,1,8,1,10,1,2,1,16,1,14,
|
||||
|
@ -686,7 +686,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
5,114,56,0,0,0,114,102,0,0,0,114,93,0,0,0,
|
||||
114,94,0,0,0,218,4,99,111,100,101,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,218,17,95,99,111,109,
|
||||
112,105,108,101,95,98,121,116,101,99,111,100,101,223,1,0,
|
||||
112,105,108,101,95,98,121,116,101,99,111,100,101,225,1,0,
|
||||
0,115,16,0,0,0,0,2,10,1,10,1,12,1,8,1,
|
||||
12,1,6,2,12,1,114,145,0,0,0,114,62,0,0,0,
|
||||
99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
|
||||
|
@ -705,7 +705,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
115,41,4,114,144,0,0,0,114,130,0,0,0,114,138,0,
|
||||
0,0,114,56,0,0,0,114,4,0,0,0,114,4,0,0,
|
||||
0,114,6,0,0,0,218,17,95,99,111,100,101,95,116,111,
|
||||
95,98,121,116,101,99,111,100,101,235,1,0,0,115,10,0,
|
||||
95,98,121,116,101,99,111,100,101,237,1,0,0,115,10,0,
|
||||
0,0,0,3,8,1,14,1,14,1,16,1,114,148,0,0,
|
||||
0,99,1,0,0,0,0,0,0,0,5,0,0,0,4,0,
|
||||
0,0,67,0,0,0,115,62,0,0,0,100,1,100,2,108,
|
||||
|
@ -732,7 +732,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
101,218,8,101,110,99,111,100,105,110,103,90,15,110,101,119,
|
||||
108,105,110,101,95,100,101,99,111,100,101,114,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,218,13,100,101,99,
|
||||
111,100,101,95,115,111,117,114,99,101,245,1,0,0,115,10,
|
||||
111,100,101,95,115,111,117,114,99,101,247,1,0,0,115,10,
|
||||
0,0,0,0,5,8,1,12,1,10,1,12,1,114,153,0,
|
||||
0,0,41,2,114,124,0,0,0,218,26,115,117,98,109,111,
|
||||
100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,97,
|
||||
|
@ -794,7 +794,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,90,7,100,105,114,110,97,109,101,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,218,23,115,112,101,99,
|
||||
95,102,114,111,109,95,102,105,108,101,95,108,111,99,97,116,
|
||||
105,111,110,6,2,0,0,115,62,0,0,0,0,12,8,4,
|
||||
105,111,110,8,2,0,0,115,62,0,0,0,0,12,8,4,
|
||||
4,1,10,2,2,1,14,1,14,1,8,2,10,8,18,1,
|
||||
6,3,8,1,16,1,14,1,10,1,6,1,6,2,4,3,
|
||||
8,2,10,1,2,1,14,1,14,1,6,2,4,1,8,2,
|
||||
|
@ -830,7 +830,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73,
|
||||
78,69,41,2,218,3,99,108,115,114,5,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,218,14,95,
|
||||
111,112,101,110,95,114,101,103,105,115,116,114,121,86,2,0,
|
||||
111,112,101,110,95,114,101,103,105,115,116,114,121,88,2,0,
|
||||
0,115,8,0,0,0,0,2,2,1,14,1,14,1,122,36,
|
||||
87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,
|
||||
105,110,100,101,114,46,95,111,112,101,110,95,114,101,103,105,
|
||||
|
@ -856,7 +856,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
114,121,95,107,101,121,114,5,0,0,0,90,4,104,107,101,
|
||||
121,218,8,102,105,108,101,112,97,116,104,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,218,16,95,115,101,97,
|
||||
114,99,104,95,114,101,103,105,115,116,114,121,93,2,0,0,
|
||||
114,99,104,95,114,101,103,105,115,116,114,121,95,2,0,0,
|
||||
115,22,0,0,0,0,2,6,1,8,2,6,1,10,1,22,
|
||||
1,2,1,12,1,26,1,14,1,6,1,122,38,87,105,110,
|
||||
100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,
|
||||
|
@ -878,7 +878,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,114,37,0,0,0,218,6,116,97,114,103,101,116,
|
||||
114,174,0,0,0,114,124,0,0,0,114,164,0,0,0,114,
|
||||
162,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,218,9,102,105,110,100,95,115,112,101,99,108,2,
|
||||
0,0,0,218,9,102,105,110,100,95,115,112,101,99,110,2,
|
||||
0,0,115,26,0,0,0,0,2,10,1,8,1,4,1,2,
|
||||
1,12,1,14,1,6,1,16,1,14,1,6,1,10,1,8,
|
||||
1,122,31,87,105,110,100,111,119,115,82,101,103,105,115,116,
|
||||
|
@ -897,7 +897,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
78,41,2,114,178,0,0,0,114,124,0,0,0,41,4,114,
|
||||
168,0,0,0,114,123,0,0,0,114,37,0,0,0,114,162,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,124,
|
||||
0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,126,
|
||||
2,0,0,115,8,0,0,0,0,7,12,1,8,1,8,2,
|
||||
122,33,87,105,110,100,111,119,115,82,101,103,105,115,116,114,
|
||||
121,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100,
|
||||
|
@ -907,7 +907,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
11,99,108,97,115,115,109,101,116,104,111,100,114,169,0,0,
|
||||
0,114,175,0,0,0,114,178,0,0,0,114,179,0,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
|
||||
6,0,0,0,114,166,0,0,0,74,2,0,0,115,20,0,
|
||||
6,0,0,0,114,166,0,0,0,76,2,0,0,115,20,0,
|
||||
0,0,8,2,4,3,4,3,4,2,4,2,12,7,12,15,
|
||||
2,1,12,15,2,1,114,166,0,0,0,99,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,
|
||||
|
@ -942,7 +942,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,114,123,0,0,0,114,98,0,0,0,90,13,102,105,108,
|
||||
101,110,97,109,101,95,98,97,115,101,90,9,116,97,105,108,
|
||||
95,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,
|
||||
6,0,0,0,114,157,0,0,0,143,2,0,0,115,8,0,
|
||||
6,0,0,0,114,157,0,0,0,145,2,0,0,115,8,0,
|
||||
0,0,0,3,18,1,16,1,14,1,122,24,95,76,111,97,
|
||||
100,101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,
|
||||
107,97,103,101,99,2,0,0,0,0,0,0,0,2,0,0,
|
||||
|
@ -953,7 +953,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
78,114,4,0,0,0,41,2,114,104,0,0,0,114,162,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,
|
||||
151,2,0,0,115,0,0,0,0,122,27,95,76,111,97,100,
|
||||
153,2,0,0,115,0,0,0,0,122,27,95,76,111,97,100,
|
||||
101,114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,
|
||||
109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,3,
|
||||
0,0,0,4,0,0,0,67,0,0,0,115,56,0,0,0,
|
||||
|
@ -972,7 +972,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
100,218,4,101,120,101,99,114,115,0,0,0,41,3,114,104,
|
||||
0,0,0,218,6,109,111,100,117,108,101,114,144,0,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,
|
||||
11,101,120,101,99,95,109,111,100,117,108,101,154,2,0,0,
|
||||
11,101,120,101,99,95,109,111,100,117,108,101,156,2,0,0,
|
||||
115,10,0,0,0,0,2,12,1,8,1,6,1,10,1,122,
|
||||
25,95,76,111,97,100,101,114,66,97,115,105,99,115,46,101,
|
||||
120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,
|
||||
|
@ -984,13 +984,13 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
117,108,101,95,115,104,105,109,41,2,114,104,0,0,0,114,
|
||||
123,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,
|
||||
162,2,0,0,115,2,0,0,0,0,2,122,25,95,76,111,
|
||||
164,2,0,0,115,2,0,0,0,0,2,122,25,95,76,111,
|
||||
97,100,101,114,66,97,115,105,99,115,46,108,111,97,100,95,
|
||||
109,111,100,117,108,101,78,41,8,114,109,0,0,0,114,108,
|
||||
0,0,0,114,110,0,0,0,114,111,0,0,0,114,157,0,
|
||||
0,0,114,183,0,0,0,114,188,0,0,0,114,190,0,0,
|
||||
0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,181,0,0,0,138,2,0,0,115,10,
|
||||
114,6,0,0,0,114,181,0,0,0,140,2,0,0,115,10,
|
||||
0,0,0,8,3,4,2,8,8,8,3,8,8,114,181,0,
|
||||
0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
|
||||
0,0,0,64,0,0,0,115,74,0,0,0,101,0,90,1,
|
||||
|
@ -1016,7 +1016,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
1,218,7,73,79,69,114,114,111,114,41,2,114,104,0,0,
|
||||
0,114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,218,10,112,97,116,104,95,109,116,105,109,
|
||||
101,169,2,0,0,115,2,0,0,0,0,6,122,23,83,111,
|
||||
101,171,2,0,0,115,2,0,0,0,0,6,122,23,83,111,
|
||||
117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,
|
||||
109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,0,
|
||||
0,0,3,0,0,0,67,0,0,0,115,14,0,0,0,100,
|
||||
|
@ -1051,7 +1051,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,41,1,114,193,0,0,0,41,2,114,104,0,0,
|
||||
0,114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,218,10,112,97,116,104,95,115,116,97,116,
|
||||
115,177,2,0,0,115,2,0,0,0,0,11,122,23,83,111,
|
||||
115,179,2,0,0,115,2,0,0,0,0,11,122,23,83,111,
|
||||
117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,
|
||||
115,116,97,116,115,99,4,0,0,0,0,0,0,0,4,0,
|
||||
0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,124,
|
||||
|
@ -1074,7 +1074,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
4,114,104,0,0,0,114,94,0,0,0,90,10,99,97,99,
|
||||
104,101,95,112,97,116,104,114,56,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,218,15,95,99,97,
|
||||
99,104,101,95,98,121,116,101,99,111,100,101,190,2,0,0,
|
||||
99,104,101,95,98,121,116,101,99,111,100,101,192,2,0,0,
|
||||
115,2,0,0,0,0,8,122,28,83,111,117,114,99,101,76,
|
||||
111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,116,
|
||||
101,99,111,100,101,99,3,0,0,0,0,0,0,0,3,0,
|
||||
|
@ -1091,7 +1091,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
108,101,115,46,10,32,32,32,32,32,32,32,32,78,114,4,
|
||||
0,0,0,41,3,114,104,0,0,0,114,37,0,0,0,114,
|
||||
56,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,114,195,0,0,0,200,2,0,0,115,0,0,0,
|
||||
0,0,0,114,195,0,0,0,202,2,0,0,115,0,0,0,
|
||||
0,122,21,83,111,117,114,99,101,76,111,97,100,101,114,46,
|
||||
115,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,
|
||||
0,5,0,0,0,16,0,0,0,67,0,0,0,115,84,0,
|
||||
|
@ -1112,7 +1112,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
104,0,0,0,114,123,0,0,0,114,37,0,0,0,114,151,
|
||||
0,0,0,218,3,101,120,99,114,4,0,0,0,114,4,0,
|
||||
0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117,
|
||||
114,99,101,207,2,0,0,115,14,0,0,0,0,2,10,1,
|
||||
114,99,101,209,2,0,0,115,14,0,0,0,0,2,10,1,
|
||||
2,1,14,1,16,1,6,1,28,1,122,23,83,111,117,114,
|
||||
99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
|
||||
114,99,101,114,31,0,0,0,41,1,218,9,95,111,112,116,
|
||||
|
@ -1134,7 +1134,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
104,0,0,0,114,56,0,0,0,114,37,0,0,0,114,200,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,218,14,115,111,117,114,99,101,95,116,111,95,99,111,
|
||||
100,101,217,2,0,0,115,4,0,0,0,0,5,14,1,122,
|
||||
100,101,219,2,0,0,115,4,0,0,0,0,5,14,1,122,
|
||||
27,83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,
|
||||
117,114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,
|
||||
0,0,0,0,0,10,0,0,0,43,0,0,0,67,0,0,
|
||||
|
@ -1190,7 +1190,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,218,2,115,116,114,56,0,0,0,218,10,98,121,116,
|
||||
101,115,95,100,97,116,97,114,151,0,0,0,90,11,99,111,
|
||||
100,101,95,111,98,106,101,99,116,114,4,0,0,0,114,4,
|
||||
0,0,0,114,6,0,0,0,114,184,0,0,0,225,2,0,
|
||||
0,0,0,114,6,0,0,0,114,184,0,0,0,227,2,0,
|
||||
0,115,78,0,0,0,0,7,10,1,4,1,2,1,12,1,
|
||||
14,1,10,2,2,1,14,1,14,1,6,2,12,1,2,1,
|
||||
14,1,14,1,6,2,2,1,6,1,8,1,12,1,18,1,
|
||||
|
@ -1202,7 +1202,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,114,193,0,0,0,114,194,0,0,0,114,196,0,0,
|
||||
0,114,195,0,0,0,114,199,0,0,0,114,203,0,0,0,
|
||||
114,184,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,114,191,0,0,0,167,2,
|
||||
4,0,0,0,114,6,0,0,0,114,191,0,0,0,169,2,
|
||||
0,0,115,14,0,0,0,8,2,8,8,8,13,8,10,8,
|
||||
7,8,10,14,8,114,191,0,0,0,99,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,
|
||||
|
@ -1229,7 +1229,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
78,41,2,114,102,0,0,0,114,37,0,0,0,41,3,114,
|
||||
104,0,0,0,114,123,0,0,0,114,37,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,182,0,
|
||||
0,0,26,3,0,0,115,4,0,0,0,0,3,6,1,122,
|
||||
0,0,28,3,0,0,115,4,0,0,0,0,3,6,1,122,
|
||||
19,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,
|
||||
105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
|
||||
0,2,0,0,0,67,0,0,0,115,24,0,0,0,124,0,
|
||||
|
@ -1238,7 +1238,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
108,97,115,115,95,95,114,115,0,0,0,41,2,114,104,0,
|
||||
0,0,218,5,111,116,104,101,114,114,4,0,0,0,114,4,
|
||||
0,0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,
|
||||
32,3,0,0,115,4,0,0,0,0,1,12,1,122,17,70,
|
||||
34,3,0,0,115,4,0,0,0,0,1,12,1,122,17,70,
|
||||
105,108,101,76,111,97,100,101,114,46,95,95,101,113,95,95,
|
||||
99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
|
||||
0,67,0,0,0,115,20,0,0,0,116,0,124,0,106,1,
|
||||
|
@ -1246,7 +1246,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
78,41,3,218,4,104,97,115,104,114,102,0,0,0,114,37,
|
||||
0,0,0,41,1,114,104,0,0,0,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,218,8,95,95,104,97,115,
|
||||
104,95,95,36,3,0,0,115,2,0,0,0,0,1,122,19,
|
||||
104,95,95,38,3,0,0,115,2,0,0,0,0,1,122,19,
|
||||
70,105,108,101,76,111,97,100,101,114,46,95,95,104,97,115,
|
||||
104,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,
|
||||
3,0,0,0,3,0,0,0,115,16,0,0,0,116,0,116,
|
||||
|
@ -1260,7 +1260,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
32,32,32,32,32,41,3,218,5,115,117,112,101,114,114,207,
|
||||
0,0,0,114,190,0,0,0,41,2,114,104,0,0,0,114,
|
||||
123,0,0,0,41,1,114,208,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,190,0,0,0,39,3,0,0,115,2,
|
||||
114,6,0,0,0,114,190,0,0,0,41,3,0,0,115,2,
|
||||
0,0,0,0,10,122,22,70,105,108,101,76,111,97,100,101,
|
||||
114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,
|
||||
0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
|
||||
|
@ -1271,7 +1271,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
116,104,101,32,102,105,110,100,101,114,46,41,1,114,37,0,
|
||||
0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,155,0,
|
||||
0,0,51,3,0,0,115,2,0,0,0,0,3,122,23,70,
|
||||
0,0,53,3,0,0,115,2,0,0,0,0,3,122,23,70,
|
||||
105,108,101,76,111,97,100,101,114,46,103,101,116,95,102,105,
|
||||
108,101,110,97,109,101,99,2,0,0,0,0,0,0,0,3,
|
||||
0,0,0,9,0,0,0,67,0,0,0,115,32,0,0,0,
|
||||
|
@ -1283,14 +1283,14 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
3,114,52,0,0,0,114,53,0,0,0,90,4,114,101,97,
|
||||
100,41,3,114,104,0,0,0,114,37,0,0,0,114,57,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,197,0,0,0,56,3,0,0,115,4,0,0,0,0,
|
||||
0,114,197,0,0,0,58,3,0,0,115,4,0,0,0,0,
|
||||
2,14,1,122,19,70,105,108,101,76,111,97,100,101,114,46,
|
||||
103,101,116,95,100,97,116,97,41,11,114,109,0,0,0,114,
|
||||
108,0,0,0,114,110,0,0,0,114,111,0,0,0,114,182,
|
||||
0,0,0,114,210,0,0,0,114,212,0,0,0,114,120,0,
|
||||
0,0,114,190,0,0,0,114,155,0,0,0,114,197,0,0,
|
||||
0,114,4,0,0,0,114,4,0,0,0,41,1,114,208,0,
|
||||
0,0,114,6,0,0,0,114,207,0,0,0,21,3,0,0,
|
||||
0,0,114,6,0,0,0,114,207,0,0,0,23,3,0,0,
|
||||
115,14,0,0,0,8,3,4,2,8,6,8,4,8,3,16,
|
||||
12,12,5,114,207,0,0,0,99,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,3,0,0,0,64,0,0,0,115,46,0,
|
||||
|
@ -1312,7 +1312,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
8,115,116,95,109,116,105,109,101,90,7,115,116,95,115,105,
|
||||
122,101,41,3,114,104,0,0,0,114,37,0,0,0,114,205,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,114,194,0,0,0,66,3,0,0,115,4,0,0,0,
|
||||
0,0,114,194,0,0,0,68,3,0,0,115,4,0,0,0,
|
||||
0,2,8,1,122,27,83,111,117,114,99,101,70,105,108,101,
|
||||
76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,
|
||||
115,99,4,0,0,0,0,0,0,0,5,0,0,0,5,0,
|
||||
|
@ -1322,7 +1322,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
2,114,101,0,0,0,114,195,0,0,0,41,5,114,104,0,
|
||||
0,0,114,94,0,0,0,114,93,0,0,0,114,56,0,0,
|
||||
0,114,44,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,196,0,0,0,71,3,0,0,115,4,
|
||||
114,6,0,0,0,114,196,0,0,0,73,3,0,0,115,4,
|
||||
0,0,0,0,2,8,1,122,32,83,111,117,114,99,101,70,
|
||||
105,108,101,76,111,97,100,101,114,46,95,99,97,99,104,101,
|
||||
95,98,121,116,101,99,111,100,101,105,182,1,0,0,41,1,
|
||||
|
@ -1357,7 +1357,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,114,217,0,0,0,218,6,112,97,114,101,110,116,114,98,
|
||||
0,0,0,114,29,0,0,0,114,25,0,0,0,114,198,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,195,0,0,0,76,3,0,0,115,42,0,0,0,0,
|
||||
0,114,195,0,0,0,78,3,0,0,115,42,0,0,0,0,
|
||||
2,12,1,4,2,16,1,12,1,14,2,14,1,10,1,2,
|
||||
1,14,1,14,2,6,1,16,3,6,1,8,1,20,1,2,
|
||||
1,12,1,16,1,16,2,8,1,122,25,83,111,117,114,99,
|
||||
|
@ -1366,7 +1366,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,114,110,0,0,0,114,111,0,0,0,114,194,0,0,0,
|
||||
114,196,0,0,0,114,195,0,0,0,114,4,0,0,0,114,
|
||||
4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,215,
|
||||
0,0,0,62,3,0,0,115,8,0,0,0,8,2,4,2,
|
||||
0,0,0,64,3,0,0,115,8,0,0,0,8,2,4,2,
|
||||
8,5,8,5,114,215,0,0,0,99,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,32,
|
||||
0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
|
||||
|
@ -1386,7 +1386,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
145,0,0,0,41,5,114,104,0,0,0,114,123,0,0,0,
|
||||
114,37,0,0,0,114,56,0,0,0,114,206,0,0,0,114,
|
||||
4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,184,
|
||||
0,0,0,111,3,0,0,115,8,0,0,0,0,1,10,1,
|
||||
0,0,0,113,3,0,0,115,8,0,0,0,0,1,10,1,
|
||||
10,1,18,1,122,29,83,111,117,114,99,101,108,101,115,115,
|
||||
70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,
|
||||
111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
|
||||
|
@ -1396,13 +1396,13 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
115,111,117,114,99,101,32,99,111,100,101,46,78,114,4,0,
|
||||
0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,199,0,
|
||||
0,0,117,3,0,0,115,2,0,0,0,0,2,122,31,83,
|
||||
0,0,119,3,0,0,115,2,0,0,0,0,2,122,31,83,
|
||||
111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,
|
||||
100,101,114,46,103,101,116,95,115,111,117,114,99,101,78,41,
|
||||
6,114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,
|
||||
114,111,0,0,0,114,184,0,0,0,114,199,0,0,0,114,
|
||||
4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,114,220,0,0,0,107,3,0,0,115,6,0,0,
|
||||
0,0,0,114,220,0,0,0,109,3,0,0,115,6,0,0,
|
||||
0,8,2,4,2,8,6,114,220,0,0,0,99,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,
|
||||
0,115,92,0,0,0,101,0,90,1,100,0,90,2,100,1,
|
||||
|
@ -1424,7 +1424,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
83,0,41,1,78,41,2,114,102,0,0,0,114,37,0,0,
|
||||
0,41,3,114,104,0,0,0,114,102,0,0,0,114,37,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,182,0,0,0,134,3,0,0,115,4,0,0,0,0,
|
||||
0,114,182,0,0,0,136,3,0,0,115,4,0,0,0,0,
|
||||
1,6,1,122,28,69,120,116,101,110,115,105,111,110,70,105,
|
||||
108,101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,
|
||||
95,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,
|
||||
|
@ -1433,7 +1433,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
2,83,0,41,1,78,41,2,114,208,0,0,0,114,115,0,
|
||||
0,0,41,2,114,104,0,0,0,114,209,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,210,0,
|
||||
0,0,138,3,0,0,115,4,0,0,0,0,1,12,1,122,
|
||||
0,0,140,3,0,0,115,4,0,0,0,0,1,12,1,122,
|
||||
26,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,
|
||||
97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0,
|
||||
0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
|
||||
|
@ -1441,7 +1441,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,106,2,131,1,65,0,83,0,41,1,78,41,3,114,211,
|
||||
0,0,0,114,102,0,0,0,114,37,0,0,0,41,1,114,
|
||||
104,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,114,212,0,0,0,142,3,0,0,115,2,0,0,
|
||||
0,0,0,114,212,0,0,0,144,3,0,0,115,2,0,0,
|
||||
0,0,1,122,28,69,120,116,101,110,115,105,111,110,70,105,
|
||||
108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,95,
|
||||
95,99,2,0,0,0,0,0,0,0,3,0,0,0,4,0,
|
||||
|
@ -1458,7 +1458,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
105,99,114,133,0,0,0,114,102,0,0,0,114,37,0,0,
|
||||
0,41,3,114,104,0,0,0,114,162,0,0,0,114,187,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,183,0,0,0,145,3,0,0,115,10,0,0,0,0,
|
||||
0,114,183,0,0,0,147,3,0,0,115,10,0,0,0,0,
|
||||
2,4,1,10,1,6,1,12,1,122,33,69,120,116,101,110,
|
||||
115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,99,
|
||||
114,101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,
|
||||
|
@ -1475,7 +1475,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
121,110,97,109,105,99,114,133,0,0,0,114,102,0,0,0,
|
||||
114,37,0,0,0,41,2,114,104,0,0,0,114,187,0,0,
|
||||
0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,
|
||||
114,188,0,0,0,153,3,0,0,115,6,0,0,0,0,2,
|
||||
114,188,0,0,0,155,3,0,0,115,6,0,0,0,0,2,
|
||||
14,1,6,1,122,31,69,120,116,101,110,115,105,111,110,70,
|
||||
105,108,101,76,111,97,100,101,114,46,101,120,101,99,95,109,
|
||||
111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,
|
||||
|
@ -1492,7 +1492,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,41,2,114,182,0,0,0,78,114,4,0,0,0,41,2,
|
||||
114,24,0,0,0,218,6,115,117,102,102,105,120,41,1,218,
|
||||
9,102,105,108,101,95,110,97,109,101,114,4,0,0,0,114,
|
||||
6,0,0,0,250,9,60,103,101,110,101,120,112,114,62,162,
|
||||
6,0,0,0,250,9,60,103,101,110,101,120,112,114,62,164,
|
||||
3,0,0,115,2,0,0,0,4,1,122,49,69,120,116,101,
|
||||
110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,
|
||||
105,115,95,112,97,99,107,97,103,101,46,60,108,111,99,97,
|
||||
|
@ -1501,7 +1501,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,88,
|
||||
69,83,41,2,114,104,0,0,0,114,123,0,0,0,114,4,
|
||||
0,0,0,41,1,114,223,0,0,0,114,6,0,0,0,114,
|
||||
157,0,0,0,159,3,0,0,115,6,0,0,0,0,2,14,
|
||||
157,0,0,0,161,3,0,0,115,6,0,0,0,0,2,14,
|
||||
1,12,1,122,30,69,120,116,101,110,115,105,111,110,70,105,
|
||||
108,101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,
|
||||
97,103,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
|
||||
|
@ -1512,7 +1512,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
114,101,97,116,101,32,97,32,99,111,100,101,32,111,98,106,
|
||||
101,99,116,46,78,114,4,0,0,0,41,2,114,104,0,0,
|
||||
0,114,123,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,184,0,0,0,165,3,0,0,115,2,
|
||||
114,6,0,0,0,114,184,0,0,0,167,3,0,0,115,2,
|
||||
0,0,0,0,2,122,28,69,120,116,101,110,115,105,111,110,
|
||||
70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,
|
||||
111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
|
||||
|
@ -1523,7 +1523,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
117,114,99,101,32,99,111,100,101,46,78,114,4,0,0,0,
|
||||
41,2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,114,199,0,0,0,
|
||||
169,3,0,0,115,2,0,0,0,0,2,122,30,69,120,116,
|
||||
171,3,0,0,115,2,0,0,0,0,2,122,30,69,120,116,
|
||||
101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
|
||||
46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,
|
||||
0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
|
||||
|
@ -1534,7 +1534,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
101,32,102,105,110,100,101,114,46,41,1,114,37,0,0,0,
|
||||
41,2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,114,155,0,0,0,
|
||||
173,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116,
|
||||
175,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116,
|
||||
101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
|
||||
46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14,
|
||||
114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,114,
|
||||
|
@ -1542,7 +1542,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,114,183,0,0,0,114,188,0,0,0,114,157,0,
|
||||
0,0,114,184,0,0,0,114,199,0,0,0,114,120,0,0,
|
||||
0,114,155,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,114,221,0,0,0,126,
|
||||
114,4,0,0,0,114,6,0,0,0,114,221,0,0,0,128,
|
||||
3,0,0,115,20,0,0,0,8,6,4,2,8,4,8,4,
|
||||
8,3,8,8,8,6,8,6,8,4,8,4,114,221,0,0,
|
||||
0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
|
||||
|
@ -1584,7 +1584,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
114,41,4,114,104,0,0,0,114,102,0,0,0,114,37,0,
|
||||
0,0,218,11,112,97,116,104,95,102,105,110,100,101,114,114,
|
||||
4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,182,
|
||||
0,0,0,186,3,0,0,115,8,0,0,0,0,1,6,1,
|
||||
0,0,0,188,3,0,0,115,8,0,0,0,0,1,6,1,
|
||||
6,1,14,1,122,23,95,78,97,109,101,115,112,97,99,101,
|
||||
80,97,116,104,46,95,95,105,110,105,116,95,95,99,1,0,
|
||||
0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,
|
||||
|
@ -1602,7 +1602,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,218,3,100,111,116,90,2,109,101,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,218,23,95,102,105,110,
|
||||
100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,97,
|
||||
109,101,115,192,3,0,0,115,8,0,0,0,0,2,18,1,
|
||||
109,101,115,194,3,0,0,115,8,0,0,0,0,2,18,1,
|
||||
8,2,4,3,122,38,95,78,97,109,101,115,112,97,99,101,
|
||||
80,97,116,104,46,95,102,105,110,100,95,112,97,114,101,110,
|
||||
116,95,112,97,116,104,95,110,97,109,101,115,99,1,0,0,
|
||||
|
@ -1614,7 +1614,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
3,114,104,0,0,0,90,18,112,97,114,101,110,116,95,109,
|
||||
111,100,117,108,101,95,110,97,109,101,90,14,112,97,116,104,
|
||||
95,97,116,116,114,95,110,97,109,101,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,114,230,0,0,0,202,3,
|
||||
4,0,0,0,114,6,0,0,0,114,230,0,0,0,204,3,
|
||||
0,0,115,4,0,0,0,0,1,12,1,122,31,95,78,97,
|
||||
109,101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,
|
||||
95,112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,
|
||||
|
@ -1630,7 +1630,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,41,3,114,104,0,0,0,90,11,112,97,114,101,
|
||||
110,116,95,112,97,116,104,114,162,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,218,12,95,114,101,
|
||||
99,97,108,99,117,108,97,116,101,206,3,0,0,115,16,0,
|
||||
99,97,108,99,117,108,97,116,101,208,3,0,0,115,16,0,
|
||||
0,0,0,2,12,1,10,1,14,3,18,1,6,1,8,1,
|
||||
6,1,122,27,95,78,97,109,101,115,112,97,99,101,80,97,
|
||||
116,104,46,95,114,101,99,97,108,99,117,108,97,116,101,99,
|
||||
|
@ -1639,7 +1639,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,131,1,83,0,41,1,78,41,2,218,4,105,116,101,114,
|
||||
114,237,0,0,0,41,1,114,104,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,218,8,95,95,105,
|
||||
116,101,114,95,95,219,3,0,0,115,2,0,0,0,0,1,
|
||||
116,101,114,95,95,221,3,0,0,115,2,0,0,0,0,1,
|
||||
122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
|
||||
46,95,95,105,116,101,114,95,95,99,3,0,0,0,0,0,
|
||||
0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,14,
|
||||
|
@ -1647,7 +1647,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,41,1,78,41,1,114,229,0,0,0,41,3,114,104,0,
|
||||
0,0,218,5,105,110,100,101,120,114,37,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,218,11,95,
|
||||
95,115,101,116,105,116,101,109,95,95,222,3,0,0,115,2,
|
||||
95,115,101,116,105,116,101,109,95,95,224,3,0,0,115,2,
|
||||
0,0,0,0,1,122,26,95,78,97,109,101,115,112,97,99,
|
||||
101,80,97,116,104,46,95,95,115,101,116,105,116,101,109,95,
|
||||
95,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,
|
||||
|
@ -1655,7 +1655,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
1,131,0,131,1,83,0,41,1,78,41,2,114,33,0,0,
|
||||
0,114,237,0,0,0,41,1,114,104,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,218,7,95,95,
|
||||
108,101,110,95,95,225,3,0,0,115,2,0,0,0,0,1,
|
||||
108,101,110,95,95,227,3,0,0,115,2,0,0,0,0,1,
|
||||
122,22,95,78,97,109,101,115,112,97,99,101,80,97,116,104,
|
||||
46,95,95,108,101,110,95,95,99,1,0,0,0,0,0,0,
|
||||
0,1,0,0,0,2,0,0,0,67,0,0,0,115,12,0,
|
||||
|
@ -1664,7 +1664,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
104,40,123,33,114,125,41,41,2,114,50,0,0,0,114,229,
|
||||
0,0,0,41,1,114,104,0,0,0,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,218,8,95,95,114,101,112,
|
||||
114,95,95,228,3,0,0,115,2,0,0,0,0,1,122,23,
|
||||
114,95,95,230,3,0,0,115,2,0,0,0,0,1,122,23,
|
||||
95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
|
||||
95,114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,
|
||||
2,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0,
|
||||
|
@ -1672,7 +1672,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
41,1,114,237,0,0,0,41,2,114,104,0,0,0,218,4,
|
||||
105,116,101,109,114,4,0,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,
|
||||
95,231,3,0,0,115,2,0,0,0,0,1,122,27,95,78,
|
||||
95,233,3,0,0,115,2,0,0,0,0,1,122,27,95,78,
|
||||
97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,99,
|
||||
111,110,116,97,105,110,115,95,95,99,2,0,0,0,0,0,
|
||||
0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,
|
||||
|
@ -1680,7 +1680,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,83,0,41,1,78,41,2,114,229,0,0,0,114,161,0,
|
||||
0,0,41,2,114,104,0,0,0,114,244,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,161,0,
|
||||
0,0,234,3,0,0,115,2,0,0,0,0,1,122,21,95,
|
||||
0,0,236,3,0,0,115,2,0,0,0,0,1,122,21,95,
|
||||
78,97,109,101,115,112,97,99,101,80,97,116,104,46,97,112,
|
||||
112,101,110,100,78,41,14,114,109,0,0,0,114,108,0,0,
|
||||
0,114,110,0,0,0,114,111,0,0,0,114,182,0,0,0,
|
||||
|
@ -1688,7 +1688,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
239,0,0,0,114,241,0,0,0,114,242,0,0,0,114,243,
|
||||
0,0,0,114,245,0,0,0,114,161,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,227,0,0,0,179,3,0,0,115,22,0,0,0,8,
|
||||
0,114,227,0,0,0,181,3,0,0,115,22,0,0,0,8,
|
||||
5,4,2,8,6,8,10,8,4,8,13,8,3,8,3,8,
|
||||
3,8,3,8,3,114,227,0,0,0,99,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,
|
||||
|
@ -1704,7 +1704,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
100,0,83,0,41,1,78,41,2,114,227,0,0,0,114,229,
|
||||
0,0,0,41,4,114,104,0,0,0,114,102,0,0,0,114,
|
||||
37,0,0,0,114,233,0,0,0,114,4,0,0,0,114,4,
|
||||
0,0,0,114,6,0,0,0,114,182,0,0,0,240,3,0,
|
||||
0,0,0,114,6,0,0,0,114,182,0,0,0,242,3,0,
|
||||
0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,115,
|
||||
112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,
|
||||
116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,
|
||||
|
@ -1721,14 +1721,14 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
110,97,109,101,115,112,97,99,101,41,62,41,2,114,50,0,
|
||||
0,0,114,109,0,0,0,41,2,114,168,0,0,0,114,187,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,218,11,109,111,100,117,108,101,95,114,101,112,114,243,
|
||||
0,0,218,11,109,111,100,117,108,101,95,114,101,112,114,245,
|
||||
3,0,0,115,2,0,0,0,0,7,122,28,95,78,97,109,
|
||||
101,115,112,97,99,101,76,111,97,100,101,114,46,109,111,100,
|
||||
117,108,101,95,114,101,112,114,99,2,0,0,0,0,0,0,
|
||||
0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,
|
||||
0,0,100,1,83,0,41,2,78,84,114,4,0,0,0,41,
|
||||
2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,114,157,0,0,0,252,
|
||||
114,4,0,0,0,114,6,0,0,0,114,157,0,0,0,254,
|
||||
3,0,0,115,2,0,0,0,0,1,122,27,95,78,97,109,
|
||||
101,115,112,97,99,101,76,111,97,100,101,114,46,105,115,95,
|
||||
112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,
|
||||
|
@ -1736,7 +1736,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,100,1,83,0,41,2,78,114,32,0,0,0,114,4,0,
|
||||
0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,199,0,
|
||||
0,0,255,3,0,0,115,2,0,0,0,0,1,122,27,95,
|
||||
0,0,1,4,0,0,115,2,0,0,0,0,1,122,27,95,
|
||||
78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
|
||||
103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,
|
||||
0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,
|
||||
|
@ -1745,7 +1745,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
60,115,116,114,105,110,103,62,114,186,0,0,0,114,201,0,
|
||||
0,0,84,41,1,114,202,0,0,0,41,2,114,104,0,0,
|
||||
0,114,123,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,184,0,0,0,2,4,0,0,115,2,
|
||||
114,6,0,0,0,114,184,0,0,0,4,4,0,0,115,2,
|
||||
0,0,0,0,1,122,25,95,78,97,109,101,115,112,97,99,
|
||||
101,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,
|
||||
99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,
|
||||
|
@ -1755,14 +1755,14 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
108,101,32,99,114,101,97,116,105,111,110,46,78,114,4,0,
|
||||
0,0,41,2,114,104,0,0,0,114,162,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,183,0,
|
||||
0,0,5,4,0,0,115,0,0,0,0,122,30,95,78,97,
|
||||
0,0,7,4,0,0,115,0,0,0,0,122,30,95,78,97,
|
||||
109,101,115,112,97,99,101,76,111,97,100,101,114,46,99,114,
|
||||
101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0,
|
||||
0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
|
||||
115,4,0,0,0,100,0,83,0,41,1,78,114,4,0,0,
|
||||
0,41,2,114,104,0,0,0,114,187,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,114,188,0,0,
|
||||
0,8,4,0,0,115,2,0,0,0,0,1,122,28,95,78,
|
||||
0,10,4,0,0,115,2,0,0,0,0,1,122,28,95,78,
|
||||
97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,
|
||||
120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,
|
||||
0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
|
||||
|
@ -1780,7 +1780,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,114,133,0,0,0,114,229,0,0,0,114,189,0,
|
||||
0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,190,0,
|
||||
0,0,11,4,0,0,115,6,0,0,0,0,7,6,1,8,
|
||||
0,0,13,4,0,0,115,6,0,0,0,0,7,6,1,8,
|
||||
1,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,
|
||||
100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,78,
|
||||
41,12,114,109,0,0,0,114,108,0,0,0,114,110,0,0,
|
||||
|
@ -1788,7 +1788,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
114,157,0,0,0,114,199,0,0,0,114,184,0,0,0,114,
|
||||
183,0,0,0,114,188,0,0,0,114,190,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,114,246,0,0,0,239,3,0,0,115,16,0,0,0,
|
||||
0,0,114,246,0,0,0,241,3,0,0,115,16,0,0,0,
|
||||
8,1,8,3,12,9,8,3,8,3,8,3,8,3,8,3,
|
||||
114,246,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,4,0,0,0,64,0,0,0,115,106,0,0,0,101,
|
||||
|
@ -1822,7 +1822,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
108,117,101,115,114,112,0,0,0,114,249,0,0,0,41,2,
|
||||
114,168,0,0,0,218,6,102,105,110,100,101,114,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,114,249,0,0,
|
||||
0,29,4,0,0,115,6,0,0,0,0,4,16,1,10,1,
|
||||
0,31,4,0,0,115,6,0,0,0,0,4,16,1,10,1,
|
||||
122,28,80,97,116,104,70,105,110,100,101,114,46,105,110,118,
|
||||
97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,
|
||||
0,0,0,0,0,0,0,3,0,0,0,12,0,0,0,67,
|
||||
|
@ -1841,7 +1841,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,114,64,0,0,0,114,122,0,0,0,114,103,0,0,
|
||||
0,41,3,114,168,0,0,0,114,37,0,0,0,90,4,104,
|
||||
111,111,107,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,37,
|
||||
0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,39,
|
||||
4,0,0,115,16,0,0,0,0,3,18,1,12,1,12,1,
|
||||
2,1,8,1,14,1,12,2,122,22,80,97,116,104,70,105,
|
||||
110,100,101,114,46,95,112,97,116,104,95,104,111,111,107,115,
|
||||
|
@ -1873,7 +1873,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
3,114,168,0,0,0,114,37,0,0,0,114,252,0,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,
|
||||
20,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
|
||||
99,97,99,104,101,50,4,0,0,115,22,0,0,0,0,8,
|
||||
99,97,99,104,101,52,4,0,0,115,22,0,0,0,0,8,
|
||||
8,1,2,1,12,1,14,3,6,1,2,1,14,1,14,1,
|
||||
10,1,16,1,122,31,80,97,116,104,70,105,110,100,101,114,
|
||||
46,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
|
||||
|
@ -1890,7 +1890,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
114,168,0,0,0,114,123,0,0,0,114,252,0,0,0,114,
|
||||
124,0,0,0,114,125,0,0,0,114,162,0,0,0,114,4,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,218,16,95,
|
||||
108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,72,
|
||||
108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,74,
|
||||
4,0,0,115,18,0,0,0,0,4,10,1,16,2,10,1,
|
||||
4,1,8,1,12,1,12,1,6,1,122,27,80,97,116,104,
|
||||
70,105,110,100,101,114,46,95,108,101,103,97,99,121,95,103,
|
||||
|
@ -1922,7 +1922,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
95,112,97,116,104,90,5,101,110,116,114,121,114,252,0,0,
|
||||
0,114,162,0,0,0,114,125,0,0,0,114,4,0,0,0,
|
||||
114,4,0,0,0,114,6,0,0,0,218,9,95,103,101,116,
|
||||
95,115,112,101,99,87,4,0,0,115,40,0,0,0,0,5,
|
||||
95,115,112,101,99,89,4,0,0,115,40,0,0,0,0,5,
|
||||
4,1,10,1,14,1,2,1,10,1,8,1,10,1,14,2,
|
||||
12,1,8,1,2,1,10,1,4,1,6,1,8,1,8,5,
|
||||
14,2,12,1,6,1,122,20,80,97,116,104,70,105,110,100,
|
||||
|
@ -1950,7 +1950,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
41,6,114,168,0,0,0,114,123,0,0,0,114,37,0,0,
|
||||
0,114,177,0,0,0,114,162,0,0,0,114,3,1,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,
|
||||
178,0,0,0,119,4,0,0,115,26,0,0,0,0,6,8,
|
||||
178,0,0,0,121,4,0,0,115,26,0,0,0,0,6,8,
|
||||
1,6,1,14,1,8,1,6,1,10,1,6,1,4,3,6,
|
||||
1,16,1,6,2,6,2,122,20,80,97,116,104,70,105,110,
|
||||
100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0,
|
||||
|
@ -1971,7 +1971,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
32,32,32,78,41,2,114,178,0,0,0,114,124,0,0,0,
|
||||
41,4,114,168,0,0,0,114,123,0,0,0,114,37,0,0,
|
||||
0,114,162,0,0,0,114,4,0,0,0,114,4,0,0,0,
|
||||
114,6,0,0,0,114,179,0,0,0,143,4,0,0,115,8,
|
||||
114,6,0,0,0,114,179,0,0,0,145,4,0,0,115,8,
|
||||
0,0,0,0,8,12,1,8,1,4,1,122,22,80,97,116,
|
||||
104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100,
|
||||
117,108,101,41,1,78,41,2,78,78,41,1,78,41,12,114,
|
||||
|
@ -1980,7 +1980,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,114,0,1,0,0,114,1,1,0,0,114,4,1,0,
|
||||
0,114,178,0,0,0,114,179,0,0,0,114,4,0,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,
|
||||
248,0,0,0,25,4,0,0,115,22,0,0,0,8,2,4,
|
||||
248,0,0,0,27,4,0,0,115,22,0,0,0,8,2,4,
|
||||
2,12,8,12,13,12,22,12,15,2,1,12,31,2,1,12,
|
||||
23,2,1,114,248,0,0,0,99,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,3,0,0,0,64,0,0,0,115,90,0,
|
||||
|
@ -2024,7 +2024,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
1,0,113,2,100,0,83,0,41,1,78,114,4,0,0,0,
|
||||
41,2,114,24,0,0,0,114,222,0,0,0,41,1,114,124,
|
||||
0,0,0,114,4,0,0,0,114,6,0,0,0,114,224,0,
|
||||
0,0,172,4,0,0,115,2,0,0,0,4,0,122,38,70,
|
||||
0,0,174,4,0,0,115,2,0,0,0,4,0,122,38,70,
|
||||
105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,116,
|
||||
95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
|
||||
101,120,112,114,62,114,61,0,0,0,114,31,0,0,0,78,
|
||||
|
@ -2036,7 +2036,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
5,114,104,0,0,0,114,37,0,0,0,218,14,108,111,97,
|
||||
100,101,114,95,100,101,116,97,105,108,115,90,7,108,111,97,
|
||||
100,101,114,115,114,164,0,0,0,114,4,0,0,0,41,1,
|
||||
114,124,0,0,0,114,6,0,0,0,114,182,0,0,0,166,
|
||||
114,124,0,0,0,114,6,0,0,0,114,182,0,0,0,168,
|
||||
4,0,0,115,16,0,0,0,0,4,4,1,14,1,28,1,
|
||||
6,2,10,1,6,1,8,1,122,19,70,105,108,101,70,105,
|
||||
110,100,101,114,46,95,95,105,110,105,116,95,95,99,1,0,
|
||||
|
@ -2047,7 +2047,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
105,109,101,46,114,31,0,0,0,78,114,91,0,0,0,41,
|
||||
1,114,7,1,0,0,41,1,114,104,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,114,249,0,0,
|
||||
0,180,4,0,0,115,2,0,0,0,0,2,122,28,70,105,
|
||||
0,182,4,0,0,115,2,0,0,0,0,2,122,28,70,105,
|
||||
108,101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,
|
||||
97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,
|
||||
0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,
|
||||
|
@ -2069,7 +2069,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
32,32,32,32,32,32,32,78,41,3,114,178,0,0,0,114,
|
||||
124,0,0,0,114,154,0,0,0,41,3,114,104,0,0,0,
|
||||
114,123,0,0,0,114,162,0,0,0,114,4,0,0,0,114,
|
||||
4,0,0,0,114,6,0,0,0,114,121,0,0,0,186,4,
|
||||
4,0,0,0,114,6,0,0,0,114,121,0,0,0,188,4,
|
||||
0,0,115,8,0,0,0,0,7,10,1,8,1,8,1,122,
|
||||
22,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,
|
||||
95,108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,
|
||||
|
@ -2080,7 +2080,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,41,7,114,104,0,0,0,114,163,0,0,0,114,
|
||||
123,0,0,0,114,37,0,0,0,90,4,115,109,115,108,114,
|
||||
177,0,0,0,114,124,0,0,0,114,4,0,0,0,114,4,
|
||||
0,0,0,114,6,0,0,0,114,4,1,0,0,198,4,0,
|
||||
0,0,0,114,6,0,0,0,114,4,1,0,0,200,4,0,
|
||||
0,115,6,0,0,0,0,1,10,1,12,1,122,20,70,105,
|
||||
108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,112,
|
||||
101,99,78,99,3,0,0,0,0,0,0,0,14,0,0,0,
|
||||
|
@ -2135,7 +2135,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,90,13,105,110,105,116,95,102,105,108,101,110,97,
|
||||
109,101,90,9,102,117,108,108,95,112,97,116,104,114,162,0,
|
||||
0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,
|
||||
0,114,178,0,0,0,203,4,0,0,115,70,0,0,0,0,
|
||||
0,114,178,0,0,0,205,4,0,0,115,70,0,0,0,0,
|
||||
5,4,1,14,1,2,1,24,1,14,1,10,1,10,1,8,
|
||||
1,6,2,6,1,6,1,10,2,6,1,4,2,8,1,12,
|
||||
1,16,1,8,1,10,1,8,1,24,4,8,2,16,1,16,
|
||||
|
@ -2166,7 +2166,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
125,1,124,1,106,0,131,0,146,2,113,4,83,0,114,4,
|
||||
0,0,0,41,1,114,92,0,0,0,41,2,114,24,0,0,
|
||||
0,90,2,102,110,114,4,0,0,0,114,4,0,0,0,114,
|
||||
6,0,0,0,250,9,60,115,101,116,99,111,109,112,62,24,
|
||||
6,0,0,0,250,9,60,115,101,116,99,111,109,112,62,26,
|
||||
5,0,0,115,2,0,0,0,6,0,122,41,70,105,108,101,
|
||||
70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,
|
||||
104,101,46,60,108,111,99,97,108,115,62,46,60,115,101,116,
|
||||
|
@ -2184,7 +2184,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,114,102,0,0,0,114,234,0,0,0,114,222,0,
|
||||
0,0,90,8,110,101,119,95,110,97,109,101,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,114,12,1,0,0,
|
||||
251,4,0,0,115,34,0,0,0,0,2,6,1,2,1,22,
|
||||
253,4,0,0,115,34,0,0,0,0,2,6,1,2,1,22,
|
||||
1,20,3,10,3,12,1,12,7,6,1,10,1,16,1,4,
|
||||
1,18,2,4,1,14,1,6,1,12,1,122,22,70,105,108,
|
||||
101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,
|
||||
|
@ -2221,7 +2221,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,114,103,0,0,0,41,1,114,37,0,0,0,41,2,114,
|
||||
168,0,0,0,114,11,1,0,0,114,4,0,0,0,114,6,
|
||||
0,0,0,218,24,112,97,116,104,95,104,111,111,107,95,102,
|
||||
111,114,95,70,105,108,101,70,105,110,100,101,114,36,5,0,
|
||||
111,114,95,70,105,108,101,70,105,110,100,101,114,38,5,0,
|
||||
0,115,6,0,0,0,0,2,8,1,14,1,122,54,70,105,
|
||||
108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111,
|
||||
111,107,46,60,108,111,99,97,108,115,62,46,112,97,116,104,
|
||||
|
@ -2229,7 +2229,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
110,100,101,114,114,4,0,0,0,41,3,114,168,0,0,0,
|
||||
114,11,1,0,0,114,17,1,0,0,114,4,0,0,0,41,
|
||||
2,114,168,0,0,0,114,11,1,0,0,114,6,0,0,0,
|
||||
218,9,112,97,116,104,95,104,111,111,107,26,5,0,0,115,
|
||||
218,9,112,97,116,104,95,104,111,111,107,28,5,0,0,115,
|
||||
4,0,0,0,0,10,14,6,122,20,70,105,108,101,70,105,
|
||||
110,100,101,114,46,112,97,116,104,95,104,111,111,107,99,1,
|
||||
0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,
|
||||
|
@ -2238,7 +2238,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
100,101,114,40,123,33,114,125,41,41,2,114,50,0,0,0,
|
||||
114,37,0,0,0,41,1,114,104,0,0,0,114,4,0,0,
|
||||
0,114,4,0,0,0,114,6,0,0,0,114,243,0,0,0,
|
||||
44,5,0,0,115,2,0,0,0,0,1,122,19,70,105,108,
|
||||
46,5,0,0,115,2,0,0,0,0,1,122,19,70,105,108,
|
||||
101,70,105,110,100,101,114,46,95,95,114,101,112,114,95,95,
|
||||
41,1,78,41,15,114,109,0,0,0,114,108,0,0,0,114,
|
||||
110,0,0,0,114,111,0,0,0,114,182,0,0,0,114,249,
|
||||
|
@ -2246,7 +2246,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,114,4,1,0,0,114,178,0,0,0,114,12,1,0,
|
||||
0,114,180,0,0,0,114,18,1,0,0,114,243,0,0,0,
|
||||
114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
|
||||
6,0,0,0,114,5,1,0,0,157,4,0,0,115,20,0,
|
||||
6,0,0,0,114,5,1,0,0,159,4,0,0,115,20,0,
|
||||
0,0,8,7,4,2,8,14,8,4,4,2,8,12,8,5,
|
||||
10,48,8,31,12,18,114,5,1,0,0,99,4,0,0,0,
|
||||
0,0,0,0,6,0,0,0,11,0,0,0,67,0,0,0,
|
||||
|
@ -2269,7 +2269,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
112,97,116,104,110,97,109,101,90,9,99,112,97,116,104,110,
|
||||
97,109,101,114,124,0,0,0,114,162,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,218,14,95,102,
|
||||
105,120,95,117,112,95,109,111,100,117,108,101,50,5,0,0,
|
||||
105,120,95,117,112,95,109,111,100,117,108,101,52,5,0,0,
|
||||
115,34,0,0,0,0,2,10,1,10,1,4,1,4,1,8,
|
||||
1,8,1,12,2,10,1,4,1,16,1,2,1,8,1,8,
|
||||
1,8,1,12,1,14,2,114,23,1,0,0,99,0,0,0,
|
||||
|
@ -2289,7 +2289,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,41,3,90,10,101,120,116,101,110,115,105,111,110,
|
||||
115,90,6,115,111,117,114,99,101,90,8,98,121,116,101,99,
|
||||
111,100,101,114,4,0,0,0,114,4,0,0,0,114,6,0,
|
||||
0,0,114,159,0,0,0,73,5,0,0,115,8,0,0,0,
|
||||
0,0,114,159,0,0,0,75,5,0,0,115,8,0,0,0,
|
||||
0,5,12,1,8,1,8,1,114,159,0,0,0,99,1,0,
|
||||
0,0,0,0,0,0,12,0,0,0,12,0,0,0,67,0,
|
||||
0,0,115,188,1,0,0,124,0,97,0,116,0,106,1,97,
|
||||
|
@ -2342,7 +2342,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
83,0,41,2,114,31,0,0,0,78,41,1,114,33,0,0,
|
||||
0,41,2,114,24,0,0,0,114,81,0,0,0,114,4,0,
|
||||
0,0,114,4,0,0,0,114,6,0,0,0,114,224,0,0,
|
||||
0,109,5,0,0,115,2,0,0,0,4,0,122,25,95,115,
|
||||
0,111,5,0,0,115,2,0,0,0,4,0,122,25,95,115,
|
||||
101,116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,
|
||||
101,110,101,120,112,114,62,114,62,0,0,0,122,30,105,109,
|
||||
112,111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,
|
||||
|
@ -2372,7 +2372,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
101,90,14,119,101,97,107,114,101,102,95,109,111,100,117,108,
|
||||
101,90,13,119,105,110,114,101,103,95,109,111,100,117,108,101,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,
|
||||
6,95,115,101,116,117,112,84,5,0,0,115,82,0,0,0,
|
||||
6,95,115,101,116,117,112,86,5,0,0,115,82,0,0,0,
|
||||
0,8,4,1,6,1,6,3,10,1,10,1,10,1,12,2,
|
||||
10,1,16,3,22,1,14,2,22,1,8,1,10,1,10,1,
|
||||
4,2,2,1,10,1,6,1,14,1,12,2,8,1,12,1,
|
||||
|
@ -2396,7 +2396,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,114,215,0,0,0,41,2,114,31,1,0,0,90,17,115,
|
||||
117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,
|
||||
114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,
|
||||
8,95,105,110,115,116,97,108,108,152,5,0,0,115,16,0,
|
||||
8,95,105,110,115,116,97,108,108,154,5,0,0,115,16,0,
|
||||
0,0,0,2,8,1,6,1,20,1,10,1,12,1,12,4,
|
||||
6,1,114,34,1,0,0,41,1,122,3,119,105,110,41,2,
|
||||
114,1,0,0,0,114,2,0,0,0,41,1,114,49,0,0,
|
||||
|
@ -2430,7 +2430,7 @@ const unsigned char _Py_M__importlib_external[] = {
|
|||
0,0,0,114,4,0,0,0,114,6,0,0,0,218,8,60,
|
||||
109,111,100,117,108,101,62,8,0,0,0,115,108,0,0,0,
|
||||
4,16,4,1,4,1,2,1,6,3,8,17,8,5,8,5,
|
||||
8,6,8,12,8,10,8,9,8,5,8,7,10,22,10,117,
|
||||
8,6,8,12,8,10,8,9,8,5,8,7,10,22,10,119,
|
||||
16,1,12,2,4,1,4,2,6,2,6,2,8,2,16,45,
|
||||
8,34,8,19,8,12,8,12,8,28,8,17,10,55,10,12,
|
||||
10,10,8,14,6,3,4,1,14,67,14,64,14,29,16,110,
|
||||
|
|
|
@ -84,7 +84,7 @@ static void *opcode_targets[256] = {
|
|||
&&TARGET_WITH_CLEANUP_FINISH,
|
||||
&&TARGET_RETURN_VALUE,
|
||||
&&TARGET_IMPORT_STAR,
|
||||
&&_unknown_opcode,
|
||||
&&TARGET_SETUP_ANNOTATIONS,
|
||||
&&TARGET_YIELD_VALUE,
|
||||
&&TARGET_POP_BLOCK,
|
||||
&&TARGET_END_FINALLY,
|
||||
|
@ -126,7 +126,7 @@ static void *opcode_targets[256] = {
|
|||
&&TARGET_LOAD_FAST,
|
||||
&&TARGET_STORE_FAST,
|
||||
&&TARGET_DELETE_FAST,
|
||||
&&_unknown_opcode,
|
||||
&&TARGET_STORE_ANNOTATION,
|
||||
&&_unknown_opcode,
|
||||
&&_unknown_opcode,
|
||||
&&TARGET_RAISE_VARARGS,
|
||||
|
|
|
@ -937,11 +937,17 @@ Py_GetPythonHome(void)
|
|||
static void
|
||||
initmain(PyInterpreterState *interp)
|
||||
{
|
||||
PyObject *m, *d, *loader;
|
||||
PyObject *m, *d, *loader, *ann_dict;
|
||||
m = PyImport_AddModule("__main__");
|
||||
if (m == NULL)
|
||||
Py_FatalError("can't create __main__ module");
|
||||
d = PyModule_GetDict(m);
|
||||
ann_dict = PyDict_New();
|
||||
if ((ann_dict == NULL) ||
|
||||
(PyDict_SetItemString(d, "__annotations__", ann_dict) < 0)) {
|
||||
Py_FatalError("Failed to initialize __main__.__annotations__");
|
||||
}
|
||||
Py_DECREF(ann_dict);
|
||||
if (PyDict_GetItemString(d, "__builtins__") == NULL) {
|
||||
PyObject *bimod = PyImport_ImportModule("builtins");
|
||||
if (bimod == NULL) {
|
||||
|
|
|
@ -1201,6 +1201,44 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
|
|||
VISIT_SEQ(st, expr, s->v.Assign.targets);
|
||||
VISIT(st, expr, s->v.Assign.value);
|
||||
break;
|
||||
case AnnAssign_kind:
|
||||
if (s->v.AnnAssign.target->kind == Name_kind) {
|
||||
expr_ty e_name = s->v.AnnAssign.target;
|
||||
long cur = symtable_lookup(st, e_name->v.Name.id);
|
||||
if (cur < 0) {
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
if ((cur & (DEF_GLOBAL | DEF_NONLOCAL))
|
||||
&& s->v.AnnAssign.simple) {
|
||||
PyErr_Format(PyExc_SyntaxError,
|
||||
"annotated name '%U' can't be %s",
|
||||
e_name->v.Name.id,
|
||||
cur & DEF_GLOBAL ? "global" : "nonlocal");
|
||||
PyErr_SyntaxLocationObject(st->st_filename,
|
||||
s->lineno,
|
||||
s->col_offset);
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
if (s->v.AnnAssign.simple &&
|
||||
!symtable_add_def(st, e_name->v.Name.id,
|
||||
DEF_ANNOT | DEF_LOCAL)) {
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
else {
|
||||
if (s->v.AnnAssign.value
|
||||
&& !symtable_add_def(st, e_name->v.Name.id, DEF_LOCAL)) {
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
VISIT(st, expr, s->v.AnnAssign.target);
|
||||
}
|
||||
VISIT(st, expr, s->v.AnnAssign.annotation);
|
||||
if (s->v.AnnAssign.value) {
|
||||
VISIT(st, expr, s->v.AnnAssign.value);
|
||||
}
|
||||
break;
|
||||
case AugAssign_kind:
|
||||
VISIT(st, expr, s->v.AugAssign.target);
|
||||
VISIT(st, expr, s->v.AugAssign.value);
|
||||
|
@ -1258,6 +1296,15 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
|
|||
long cur = symtable_lookup(st, name);
|
||||
if (cur < 0)
|
||||
VISIT_QUIT(st, 0);
|
||||
if (cur & DEF_ANNOT) {
|
||||
PyErr_Format(PyExc_SyntaxError,
|
||||
"annotated name '%U' can't be global",
|
||||
name);
|
||||
PyErr_SyntaxLocationObject(st->st_filename,
|
||||
s->lineno,
|
||||
s->col_offset);
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
if (cur & (DEF_LOCAL | USE)) {
|
||||
char buf[256];
|
||||
char *c_name = _PyUnicode_AsString(name);
|
||||
|
@ -1289,6 +1336,15 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
|
|||
long cur = symtable_lookup(st, name);
|
||||
if (cur < 0)
|
||||
VISIT_QUIT(st, 0);
|
||||
if (cur & DEF_ANNOT) {
|
||||
PyErr_Format(PyExc_SyntaxError,
|
||||
"annotated name '%U' can't be nonlocal",
|
||||
name);
|
||||
PyErr_SyntaxLocationObject(st->st_filename,
|
||||
s->lineno,
|
||||
s->col_offset);
|
||||
VISIT_QUIT(st, 0);
|
||||
}
|
||||
if (cur & (DEF_LOCAL | USE)) {
|
||||
char buf[256];
|
||||
char *c_name = _PyUnicode_AsString(name);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue