This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new 795fc32d99 [SCRIPT] Bump Python minimum version to 3.9 and update AST
compatibility (#18086)
795fc32d99 is described below
commit 795fc32d99f4fea24c88b3e0c5f785a0d318de10
Author: Siyuan Feng <[email protected]>
AuthorDate: Tue Jun 24 01:04:07 2025 +0800
[SCRIPT] Bump Python minimum version to 3.9 and update AST compatibility
(#18086)
- Set Python minimal version to 3.9 as Python 3.8 has reached end of life
- Update AST handling to match Python 3.9+ API changes
- Fix deprecation warning: "Support for arbitrary keyword arguments is
deprecated and will be removed in Python 3.15"
- Update TVMScript parser components to use modern AST interfaces
- Adjust linting and test infrastructure for Python 3.9+ compatibility
---
python/tvm/base.py | 9 +-
python/tvm/script/parser/core/diagnostics.py | 8 +-
python/tvm/script/parser/core/doc.py | 146 ---------
python/tvm/script/parser/core/doc_core.py | 422 +++++++++++----------------
python/tvm/script/parser/core/evaluator.py | 9 +-
python/tvm/script/parser/tir/parser.py | 8 +-
tests/lint/filter_untracked.py | 5 +-
tests/python/relax/test_tvmscript_parser.py | 3 -
tests/scripts/ci.py | 10 +-
9 files changed, 186 insertions(+), 434 deletions(-)
diff --git a/python/tvm/base.py b/python/tvm/base.py
index 13b4fc8d44..63e097999c 100644
--- a/python/tvm/base.py
+++ b/python/tvm/base.py
@@ -26,8 +26,8 @@ from . import libinfo
# ----------------------------
# Python3 version.
# ----------------------------
-if not (sys.version_info[0] >= 3 and sys.version_info[1] >= 8):
- PY3STATEMENT = "The minimal Python requirement is Python 3.8"
+if not (sys.version_info[0] >= 3 and sys.version_info[1] >= 9):
+ PY3STATEMENT = "The minimal Python requirement is Python 3.9"
raise Exception(PY3STATEMENT)
# ----------------------------
@@ -38,9 +38,8 @@ if not (sys.version_info[0] >= 3 and sys.version_info[1] >=
8):
def _load_lib():
"""Load libary by searching possible path."""
lib_path = libinfo.find_lib_path()
- # The dll search path need to be added explicitly in
- # windows after python 3.8
- if sys.platform.startswith("win32") and sys.version_info >= (3, 8):
+ # The dll search path need to be added explicitly in windows
+ if sys.platform.startswith("win32"):
for path in libinfo.get_dll_directories():
os.add_dll_directory(path)
lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_GLOBAL)
diff --git a/python/tvm/script/parser/core/diagnostics.py
b/python/tvm/script/parser/core/diagnostics.py
index 2767a97f60..4df2d193fe 100644
--- a/python/tvm/script/parser/core/diagnostics.py
+++ b/python/tvm/script/parser/core/diagnostics.py
@@ -220,10 +220,10 @@ class Diagnostics:
level : diagnostics.DiagnosticLevel
The diagnostic level.
"""
- lineno = node.lineno or 1
- col_offset = node.col_offset or self.source.start_column
- end_lineno = node.end_lineno or lineno
- end_col_offset = node.end_col_offset or col_offset
+ lineno = getattr(node, "lineno", 1)
+ col_offset = getattr(node, "col_offset", self.source.start_column)
+ end_lineno = getattr(node, "end_lineno", lineno)
+ end_col_offset = getattr(node, "end_col_offset", col_offset)
lineno += self.source.start_line - 1
end_lineno += self.source.start_line - 1
col_offset += self.source.start_column + 1
diff --git a/python/tvm/script/parser/core/doc.py
b/python/tvm/script/parser/core/doc.py
index 8b5c46e5a6..74174f0667 100644
--- a/python/tvm/script/parser/core/doc.py
+++ b/python/tvm/script/parser/core/doc.py
@@ -18,7 +18,6 @@
import ast
import inspect
-import sys
import typing
from collections import defaultdict
@@ -319,149 +318,4 @@ def _register_default():
)
-def _py_version() -> typing.Tuple[int, int]:
- return (sys.version_info.major, sys.version_info.minor)
-
-
-def _register_constant_handling():
- if _py_version() not in [(3, 6), (3, 7)]:
- return
-
- def as_constant(f) -> doc.Constant:
- def to_doc_func(x: ast.AST) -> doc.Constant:
- return doc.Constant(
- value=getattr(x, f) if isinstance(f, str) else f(x),
- kind=None,
- lineno=x.lineno,
- col_offset=x.col_offset,
- end_lineno=x.lineno,
- end_col_offset=x.col_offset,
- )
-
- return to_doc_func
-
- register_to_doc("Str")(as_constant("s"))
- register_to_doc("NameConstant")(as_constant("value"))
- register_to_doc("Num")(as_constant("n"))
- register_to_doc("Bytes")(as_constant("s"))
- register_to_doc("Ellipsis")(as_constant(lambda _: ...))
-
-
-def _register_subscription_handling():
- if _py_version() >= (3, 9):
- return
-
- def subscript_to_doc(x: ast.Subscript) -> doc.Subscript:
- if isinstance(x.slice, ast.Slice):
- return doc.Subscript(
- value=to_doc(x.value),
- slice=doc.Slice(
- lower=to_doc(x.slice.lower),
- upper=to_doc(x.slice.upper),
- step=to_doc(x.slice.step),
- lineno=getattr(x.slice, "lineno", None),
- col_offset=getattr(x.slice, "col_offset", None),
- end_lineno=getattr(x.slice, "end_lineno", None),
- end_col_offset=getattr(x.slice, "end_col_offset", None),
- ),
- ctx=to_doc(x.ctx),
- lineno=getattr(x, "lineno", None),
- col_offset=getattr(x, "col_offset", None),
- end_lineno=getattr(x, "end_lineno", None),
- end_col_offset=getattr(x, "end_col_offset", None),
- )
- if isinstance(x.slice, ast.ExtSlice):
- return doc.Subscript(
- value=to_doc(x.value),
- slice=doc.Tuple(
- elts=[to_doc(i) for i in x.slice.dims],
- ctx=doc.Load(
- lineno=None,
- col_offset=None,
- end_lineno=None,
- end_col_offset=None,
- ),
- lineno=getattr(x, "lineno", None),
- col_offset=getattr(x, "col_offset", None),
- end_lineno=getattr(x, "end_lineno", None),
- end_col_offset=getattr(x, "end_col_offset", None),
- ),
- ctx=to_doc(x.ctx),
- lineno=getattr(x, "lineno", None),
- col_offset=getattr(x, "col_offset", None),
- end_lineno=getattr(x, "end_lineno", None),
- end_col_offset=getattr(x, "end_col_offset", None),
- )
- if isinstance(x.slice, ast.Index):
- return doc.Subscript(
- value=to_doc(x.value),
- slice=to_doc(x.slice.value),
- ctx=to_doc(x.ctx),
- lineno=getattr(x, "lineno", None),
- col_offset=getattr(x, "col_offset", None),
- end_lineno=getattr(x, "end_lineno", None),
- end_col_offset=getattr(x, "end_col_offset", None),
- )
- raise TypeError(f"Unknown subscript type: {type(x.slice)}")
-
- def subscript_from_doc(x: doc.Subscript) -> ast.Subscript:
- if isinstance(x.slice, doc.Slice):
- result = ast.Subscript(
- value=from_doc(x.value),
- slice=from_doc(x.slice),
- ctx=from_doc(x.ctx),
- )
- elif isinstance(x.slice, doc.Tuple):
-
- def remap_dim(doc_item: doc.Expr) -> ast.Expr:
- ast_item = from_doc(doc_item)
- if isinstance(ast_item, (ast.Index, ast.Slice)):
- return ast_item
- return ast.Index(value=ast_item)
-
- # ast.ExtSlice requires a non-empty list of dims, and each dim
must be either
- # a Slice or an Index.
- if x.slice.elts:
- ast_slice = ast.ExtSlice(dims=[*map(remap_dim, x.slice.elts)])
- else:
- ast_slice = ast.Index(value=ast.Tuple(elts=[],
ctx=from_doc(x.ctx)))
- result = ast.Subscript(value=from_doc(x.value), slice=ast_slice,
ctx=from_doc(x.ctx))
- else:
- result = ast.Subscript(
- value=from_doc(x.value),
- slice=ast.Index(value=from_doc(x.slice)),
- ctx=from_doc(x.ctx),
- )
- result.lineno = x.lineno
- result.col_offset = x.col_offset
- result.end_lineno = x.end_lineno
- result.end_col_offset = x.end_col_offset
- return result
-
- register_to_doc("Subscript")(subscript_to_doc)
- register_from_doc("Subscript")(subscript_from_doc)
-
-
-def _register_index_handling():
- if _py_version() >= (3, 9):
- return
-
- def index_to_doc(x: ast.Index) -> doc.Expr:
- return to_doc(x.value)
-
- def index_from_doc(x: doc.Expr) -> ast.Index:
- result = ast.Index(value=from_doc(x), ctx=from_doc(x.ctx))
- result.lineno = x.lineno
- result.col_offset = x.col_offset
- result.end_lineno = x.end_lineno
- result.end_col_offset = x.end_col_offset
- return result
-
- register_to_doc("Index")(index_to_doc)
- register_from_doc("Index")(index_from_doc)
-
-
_register_default()
-_register_constant_handling()
-_register_subscription_handling()
-_register_index_handling()
diff --git a/python/tvm/script/parser/core/doc_core.py
b/python/tvm/script/parser/core/doc_core.py
index 37e6c18253..344ac8cf87 100644
--- a/python/tvm/script/parser/core/doc_core.py
+++ b/python/tvm/script/parser/core/doc_core.py
@@ -17,45 +17,44 @@
# pylint: disable=redefined-outer-name,missing-docstring,invalid-name
# pylint: disable=useless-super-delegation,redefined-builtin
# pylint: disable=too-few-public-methods,too-many-arguments
+
+
+# minimal python version is 3.9
class AST:
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
+ def __init__(self):
super().__init__()
- self.lineno = lineno
- self.col_offset = col_offset
- self.end_lineno = end_lineno
- self.end_col_offset = end_col_offset
class mod(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Module(mod):
- _FIELDS = ["body", "lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = ["body"]
- def __init__(self, body, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, body):
+ super().__init__()
self.body = body
class Interactive(mod):
- _FIELDS = ["body", "lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = ["body"]
- def __init__(self, body, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, body):
+ super().__init__()
self.body = body
class Expression(mod):
- _FIELDS = ["body", "lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = ["body"]
- def __init__(self, body, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, body):
+ super().__init__()
self.body = body
@@ -63,7 +62,11 @@ class stmt(AST):
_FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ super().__init__()
+ self.lineno = lineno
+ self.col_offset = col_offset
+ self.end_lineno = end_lineno
+ self.end_col_offset = end_col_offset
class FunctionDef(stmt):
@@ -345,7 +348,11 @@ class expr(AST):
_FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ super().__init__()
+ self.lineno = lineno
+ self.col_offset = col_offset
+ self.end_lineno = end_lineno
+ self.end_col_offset = end_col_offset
class BoolOp(expr):
@@ -541,39 +548,6 @@ class Attribute(expr):
self.ctx = ctx
-class slice(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
-
-
-class Slice(slice):
- _FIELDS = ["lower", "upper", "step", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
-
- def __init__(self, lower, upper, step, lineno, col_offset, end_lineno,
end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
- self.lower = lower
- self.upper = upper
- self.step = step
-
-
-class ExtSlice(slice):
- _FIELDS = ["dims", "lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, dims, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
- self.dims = dims
-
-
-class Index(slice):
- _FIELDS = ["value", "lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, value, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
- self.value = value
-
-
class Subscript(expr):
_FIELDS = ["value", "slice", "ctx", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
@@ -620,308 +594,280 @@ class Tuple(expr):
self.ctx = ctx
-class expr_context(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
-
-
-class AugLoad(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
-
-
-class AugStore(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+class Slice(AST):
+ _FIELDS = ["lower", "upper", "step"]
-
-class Param(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
-
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, lower, upper, step):
+ super().__init__()
+ self.lower = lower
+ self.upper = upper
+ self.step = step
-class Suite(mod):
- _FIELDS = ["body", "lineno", "col_offset", "end_lineno", "end_col_offset"]
+class expr_context(AST):
+ _FIELDS = []
- def __init__(self, body, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
- self.body = body
+ def __init__(self):
+ super().__init__()
class Del(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Load(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Store(expr_context):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class boolop(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class And(boolop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Or(boolop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class operator(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Add(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class BitAnd(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class BitOr(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class BitXor(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Div(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class FloorDiv(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class LShift(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Mod(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Mult(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class MatMult(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Pow(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class RShift(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Sub(operator):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class unaryop(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Invert(unaryop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Not(unaryop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class UAdd(unaryop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class USub(unaryop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class cmpop(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Eq(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Gt(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class GtE(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class In(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Is(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class IsNot(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class Lt(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class LtE(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class NotEq(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class NotIn(cmpop):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class comprehension(AST):
- _FIELDS = [
- "target",
- "iter",
- "ifs",
- "is_async",
- "lineno",
- "col_offset",
- "end_lineno",
- "end_col_offset",
- ]
+ _FIELDS = ["target", "iter", "ifs", "is_async"]
- def __init__(self, target, iter, ifs, is_async, lineno, col_offset,
end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, target, iter, ifs, is_async):
+ super().__init__()
self.target = target
self.iter = iter
self.ifs = ifs
@@ -929,36 +875,24 @@ class comprehension(AST):
class excepthandler(AST):
- _FIELDS = ["lineno", "col_offset", "end_lineno", "end_col_offset"]
+ _FIELDS = []
- def __init__(self, lineno, col_offset, end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self):
+ super().__init__()
class ExceptHandler(excepthandler):
- _FIELDS = ["type", "name", "body", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
+ _FIELDS = ["type", "name", "body"]
- def __init__(self, type, name, body, lineno, col_offset, end_lineno,
end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, type, name, body):
+ super().__init__()
self.type = type
self.name = name
self.body = body
class arguments(AST):
- _FIELDS = [
- "args",
- "vararg",
- "kwonlyargs",
- "kw_defaults",
- "kwarg",
- "defaults",
- "posonlyargs",
- "lineno",
- "col_offset",
- "end_lineno",
- "end_col_offset",
- ]
+ _FIELDS = ["args", "vararg", "kwonlyargs", "kw_defaults", "kwarg",
"defaults", "posonlyargs"]
def __init__(
self,
@@ -969,12 +903,8 @@ class arguments(AST):
kwarg,
defaults,
posonlyargs,
- lineno,
- col_offset,
- end_lineno,
- end_col_offset,
):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ super().__init__()
self.args = args
self.vararg = vararg
self.kwonlyargs = kwonlyargs
@@ -985,44 +915,37 @@ class arguments(AST):
class arg(AST):
- _FIELDS = ["arg", "annotation", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
+ _FIELDS = ["arg", "annotation"]
- def __init__(self, arg, annotation, lineno, col_offset, end_lineno,
end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, arg, annotation):
+ super().__init__()
self.arg = arg
self.annotation = annotation
class keyword(AST):
- _FIELDS = ["arg", "value", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
+ _FIELDS = ["arg", "value"]
- def __init__(self, arg, value, lineno, col_offset, end_lineno,
end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, arg, value):
+ super().__init__()
self.arg = arg
self.value = value
class alias(AST):
- _FIELDS = ["name", "asname", "lineno", "col_offset", "end_lineno",
"end_col_offset"]
+ _FIELDS = ["name", "asname"]
- def __init__(self, name, asname, lineno, col_offset, end_lineno,
end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, name, asname):
+ super().__init__()
self.name = name
self.asname = asname
class withitem(AST):
- _FIELDS = [
- "context_expr",
- "optional_vars",
- "lineno",
- "col_offset",
- "end_lineno",
- "end_col_offset",
- ]
+ _FIELDS = ["context_expr", "optional_vars"]
- def __init__(self, context_expr, optional_vars, lineno, col_offset,
end_lineno, end_col_offset):
- super().__init__(lineno, col_offset, end_lineno, end_col_offset)
+ def __init__(self, context_expr, optional_vars):
+ super().__init__()
self.context_expr = context_expr
self.optional_vars = optional_vars
@@ -1077,20 +1000,13 @@ __all__ = [
"Constant",
"NamedExpr",
"Attribute",
- "slice",
"Slice",
- "ExtSlice",
- "Index",
"Subscript",
"Starred",
"Name",
"List",
"Tuple",
"expr_context",
- "AugLoad",
- "AugStore",
- "Param",
- "Suite",
"Del",
"Load",
"Store",
diff --git a/python/tvm/script/parser/core/evaluator.py
b/python/tvm/script/parser/core/evaluator.py
index f979bb84b1..9d09df3d8e 100644
--- a/python/tvm/script/parser/core/evaluator.py
+++ b/python/tvm/script/parser/core/evaluator.py
@@ -148,12 +148,7 @@ class ExprEvaluator:
col_offset = 0
return doc.Name(
id=name,
- ctx=doc.Load(
- lineno=lineno,
- col_offset=col_offset,
- end_lineno=None,
- end_col_offset=None,
- ),
+ ctx=doc.Load(),
lineno=lineno,
col_offset=col_offset,
end_lineno=None,
@@ -230,7 +225,7 @@ class ExprEvaluator:
),
):
return node
- if not isinstance(node, (doc.expr, doc.slice)):
+ if not isinstance(node, (doc.expr, doc.Slice)):
return node
if isinstance(node, doc.Lambda):
return self._eval_lambda(node)
diff --git a/python/tvm/script/parser/tir/parser.py
b/python/tvm/script/parser/tir/parser.py
index ed59606158..f6141404fa 100644
--- a/python/tvm/script/parser/tir/parser.py
+++ b/python/tvm/script/parser/tir/parser.py
@@ -283,7 +283,7 @@ def visit_aug_assign(self: Parser, node: doc.AugAssign) ->
None:
node.value.end_lineno,
node.value.end_col_offset,
)
- node.target.ctx = doc.Load(*lhs_pos)
+ node.target.ctx = doc.Load()
with self.var_table.with_frame():
lhs_name = "__tvm_tmp_value_aug_assign_lhs"
rhs_name = "__tvm_tmp_value_aug_assign_rhs"
@@ -292,14 +292,14 @@ def visit_aug_assign(self: Parser, node: doc.AugAssign)
-> None:
self.var_table.add(lhs_name, lhs_expr)
self.var_table.add(rhs_name, rhs_expr)
op = doc.BinOp(
- doc.Name(lhs_name, doc.Load(*lhs_pos), *lhs_pos),
+ doc.Name(lhs_name, doc.Load(), *lhs_pos),
node.op,
- doc.Name(rhs_name, doc.Load(*rhs_pos), *rhs_pos),
+ doc.Name(rhs_name, doc.Load(), *rhs_pos),
*lhs_pos,
)
rhs = self.eval_expr(op)
lhs = node.target
- lhs.ctx = doc.Store(*lhs_pos)
+ lhs.ctx = doc.Store()
if isinstance(lhs, doc.Subscript):
if isinstance(lhs.slice, doc.Tuple):
indices = []
diff --git a/tests/lint/filter_untracked.py b/tests/lint/filter_untracked.py
index 3227bc3f18..61c482cbbb 100644
--- a/tests/lint/filter_untracked.py
+++ b/tests/lint/filter_untracked.py
@@ -29,10 +29,7 @@ def check_output(args, **kw):
sys.stderr.write("exited with code %d: %s\n" % (proc.returncode, "
".join(args)))
sys.exit(2)
- if sys.version_info[0] == 2:
- return unicode(out, "utf-8")
- else:
- return str(out, "utf-8")
+ return str(out, "utf-8")
def main():
diff --git a/tests/python/relax/test_tvmscript_parser.py
b/tests/python/relax/test_tvmscript_parser.py
index adfa692aeb..b3380f2d72 100644
--- a/tests/python/relax/test_tvmscript_parser.py
+++ b/tests/python/relax/test_tvmscript_parser.py
@@ -535,7 +535,6 @@ def test_tuple_return_2():
_check(foo, bb.get()["foo"])
[email protected](sys.version_info < (3, 8), reason="requires python3.8 or
higher")
def test_tuple_binding():
@R.function
def foo(x: R.Tensor("float32", ndim=2)):
@@ -557,7 +556,6 @@ def test_tuple_binding():
_check(foo, bb.get()["foo"])
[email protected](sys.version_info < (3, 8), reason="requires python3.8 or
higher")
def test_tuple_get_item():
@R.function
def foo(x: R.Tensor, y: R.Tensor):
@@ -1670,7 +1668,6 @@ def test_undefined_symbolic_var_raises_error():
return z
[email protected](sys.version_info < (3, 8), reason="requires python3.8 or
higher")
def test_arith_operators():
@R.function
def foo(x: R.Tensor(("m", "n"), "float32"), y: R.Tensor(("m", "n"),
"float32")):
diff --git a/tests/scripts/ci.py b/tests/scripts/ci.py
index 10d6312912..96f0a5f7ed 100755
--- a/tests/scripts/ci.py
+++ b/tests/scripts/ci.py
@@ -479,17 +479,11 @@ def cli_name(s: str) -> str:
def typing_get_origin(annotation):
- if sys.version_info >= (3, 8):
- return typing.get_origin(annotation)
- else:
- return annotation.__origin__
+ return typing.get_origin(annotation)
def typing_get_args(annotation):
- if sys.version_info >= (3, 8):
- return typing.get_args(annotation)
- else:
- return annotation.__args__
+ return typing.get_args(annotation)
def is_optional_type(annotation):