|
|
|
@ -60,13 +60,6 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) |
|
|
|
{ |
|
|
|
int i, found_docstring = 0, done = 0, prev_line = 0; |
|
|
|
|
|
|
|
static PyObject *future; |
|
|
|
if (!future) { |
|
|
|
future = PyUnicode_InternFromString("__future__"); |
|
|
|
if (!future) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
if (!(mod->kind == Module_kind || mod->kind == Interactive_kind)) |
|
|
|
return 1; |
|
|
|
|
|
|
|
@ -93,7 +86,8 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) |
|
|
|
*/ |
|
|
|
|
|
|
|
if (s->kind == ImportFrom_kind) { |
|
|
|
if (s->v.ImportFrom.module == future) { |
|
|
|
PyObject *modname = s->v.ImportFrom.module; |
|
|
|
if (!PyUnicode_CompareWithASCIIString(modname, "__future__")) { |
|
|
|
if (done) { |
|
|
|
PyErr_SetString(PyExc_SyntaxError, |
|
|
|
ERR_LATE_FUTURE); |
|
|
|
|