Issue #27352: Correct the validation of the ImportFrom AST node and simplify
the implementation of the IMPORT_NAME opcode.
diff --git a/Python/ast.c b/Python/ast.c
index 1efd0b7..8c13e0b 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -475,8 +475,8 @@
     case Import_kind:
         return validate_nonempty_seq(stmt->v.Import.names, "names", "Import");
     case ImportFrom_kind:
-        if (stmt->v.ImportFrom.level < -1) {
-            PyErr_SetString(PyExc_ValueError, "ImportFrom level less than -1");
+        if (stmt->v.ImportFrom.level < 0) {
+            PyErr_SetString(PyExc_ValueError, "Negative ImportFrom level");
             return 0;
         }
         return validate_nonempty_seq(stmt->v.ImportFrom.names, "names", "ImportFrom");
diff --git a/Python/ceval.c b/Python/ceval.c
index 341d36d..2b4f7cc 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2820,21 +2820,13 @@
             Py_INCREF(func);
             from = POP();
             level = TOP();
-            if (PyLong_AsLong(level) != -1 || PyErr_Occurred())
-                args = PyTuple_Pack(5,
+            args = PyTuple_Pack(5,
                             name,
                             f->f_globals,
                             f->f_locals == NULL ?
                                   Py_None : f->f_locals,
                             from,
                             level);
-            else
-                args = PyTuple_Pack(4,
-                            name,
-                            f->f_globals,
-                            f->f_locals == NULL ?
-                                  Py_None : f->f_locals,
-                            from);
             Py_DECREF(level);
             Py_DECREF(from);
             if (args == NULL) {