Skip to content

Replace ast.NameConstant with ast.Constant and remove duplicates #2188

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 11, 2025

Conversation

justinchuby
Copy link
Collaborator

@justinchuby justinchuby commented Apr 11, 2025

This pull request includes several changes to the onnxscript/converter.py and onnxscript/converter_test.py files to improve compatibility with different Python versions and simplify the code. The most important changes include removing deprecated AST node types and updating test cases to reflect these changes.

Compatibility and simplification improvements:

  • onnxscript/converter.py: Removed deprecated AST node types ast.Num, ast.Str, and ast.NameConstant from the _is_constant_expr method to streamline the code and ensure compatibility with Python 3.9+ where ast.Constant is used instead.
  • onnxscript/converter.py: Simplified the _translate_opt_expr method by removing the check for ast.NameConstant since ast.Constant now covers this case for Python 3.9+.

Test case updates:

  • onnxscript/converter_test.py: Updated the test case in the f1 function to replace ast.Name with ast.Constant to align with the changes in the AST node types used.

For more details, open the Copilot Workspace session.

@justinchuby justinchuby requested review from gramalingam, Copilot and xadupre and removed request for Copilot April 11, 2025 17:22
@justinchuby justinchuby marked this pull request as ready for review April 11, 2025 17:22
Copy link

codecov bot commented Apr 11, 2025

❌ 4 Tests Failed:

Tests completed Failed Passed Skipped
14109 4 14105 1700
View the top 2 failed test(s) by shortest run time
onnxscript.backend.onnx_export_test.TestOnnxBackEnd::test_export2python_produces_correct_onnx_script_model_0316_test_dequantizelinear_blocked
Stack Traces | 0.004s run time
onnxscript\backend\onnx_export_test.py:137: in extract_functions
    mod = importlib.import_module(import_name)
C:\hostedtoolcache\windows\Python\3.11.9\x64\Lib\importlib\__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
E   ModuleNotFoundError: No module named 'tests.onnx_backend_test_code.test_dequantizelinear_blocked'

The above exception was the direct cause of the following exception:
.nox\test\Lib\site-packages\parameterized\parameterized.py:620: in standalone_func
    return func(*(a + p.args), **p.kwargs, **kw)
onnxscript\backend\onnx_export_test.py:271: in test_export2python_produces_correct_onnx_script_model
    functions = extract_functions(backend_test.name, code, self.test_folder)
onnxscript\backend\onnx_export_test.py:139: in extract_functions
    raise AssertionError(
E   AssertionError: Unable to import 'tests.onnx_backend_test_code.test_dequantizelinear_blocked' (e=No module named 'tests.onnx_backend_test_code.test_dequantizelinear_blocked') (file: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_dequantizelinear_blocked.py', absolute path: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_dequantizelinear_blocked.py', current folder: D:\a\onnxscript\onnxscript
E   ---- CONTENT --
E   import numpy
E   from onnx import TensorProto
E   from onnx.helper import make_tensor
E   from onnxscript import script, external_tensor
E   from onnxscript.values import Opset
E   from onnxscript.onnx_types import FLOAT, UINT8
E   from onnxscript.onnx_opset import opset21
E   
E   @script()
E   def bck_test_dequantizelinear_blocked(x: UINT8[1,4,3,2], x_scale: FLOAT[1,2,3,2], x_zero_point: UINT8[1,2,3,2]) -> (FLOAT[1,4,3,2]):
E       y = opset21.DequantizeLinear(x, x_scale, x_zero_point, axis=1, block_size=2)
E       return y
onnxscript.backend.onnx_export_test.TestOnnxBackEnd::test_export2python_produces_correct_onnx_script_model_0754_test_or4d
Stack Traces | 0.004s run time
onnxscript\backend\onnx_export_test.py:137: in extract_functions
    mod = importlib.import_module(import_name)
C:\hostedtoolcache\windows\Python\3.11.9\x64\Lib\importlib\__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
E   ModuleNotFoundError: No module named 'tests.onnx_backend_test_code.test_or4d'

The above exception was the direct cause of the following exception:
.nox\test\Lib\site-packages\parameterized\parameterized.py:620: in standalone_func
    return func(*(a + p.args), **p.kwargs, **kw)
onnxscript\backend\onnx_export_test.py:271: in test_export2python_produces_correct_onnx_script_model
    functions = extract_functions(backend_test.name, code, self.test_folder)
onnxscript\backend\onnx_export_test.py:139: in extract_functions
    raise AssertionError(
E   AssertionError: Unable to import 'tests.onnx_backend_test_code.test_or4d' (e=No module named 'tests.onnx_backend_test_code.test_or4d') (file: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_or4d.py', absolute path: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_or4d.py', current folder: D:\a\onnxscript\onnxscript
E   ---- CONTENT --
E   import numpy
E   from onnx import TensorProto
E   from onnx.helper import make_tensor
E   from onnxscript import script, external_tensor
E   from onnxscript.values import Opset
E   from onnxscript.onnx_types import BOOL
E   from onnxscript.onnx_opset import opset7
E   
E   @script()
E   def bck_test_or4d(x: BOOL[3,4,5,6], y: BOOL[3,4,5,6]) -> (BOOL[3,4,5,6]):
E       r_or = opset7.Or(x, y)
E       return r_or
View the full list of 1 ❄️ flaky tests
onnxscript.backend.onnx_export_test.TestOnnxBackEnd::test_export2python_produces_correct_onnx_script_model_0732_test_nonmaxsuppression_two_classes

Flake rate in main: 8.70% (Passed 21 times, Failed 2 times)

Stack Traces | 0.004s run time
onnxscript\backend\onnx_export_test.py:137: in extract_functions
    mod = importlib.import_module(import_name)
C:\hostedtoolcache\windows\Python\3.11.9\x64\Lib\importlib\__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
E   ModuleNotFoundError: No module named 'tests.onnx_backend_test_code.test_nonmaxsuppression_two_classes'

The above exception was the direct cause of the following exception:
.nox\test\Lib\site-packages\parameterized\parameterized.py:620: in standalone_func
    return func(*(a + p.args), **p.kwargs, **kw)
onnxscript\backend\onnx_export_test.py:271: in test_export2python_produces_correct_onnx_script_model
    functions = extract_functions(backend_test.name, code, self.test_folder)
onnxscript\backend\onnx_export_test.py:139: in extract_functions
    raise AssertionError(
E   AssertionError: Unable to import 'tests.onnx_backend_test_code.test_nonmaxsuppression_two_classes' (e=No module named 'tests.onnx_backend_test_code.test_nonmaxsuppression_two_classes') (file: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_nonmaxsuppression_two_classes.py', absolute path: 'D:\\a\\onnxscript\\onnxscript\\tests\\onnx_backend_test_code\\test_nonmaxsuppression_two_classes.py', current folder: D:\a\onnxscript\onnxscript
E   ---- CONTENT --
E   import numpy
E   from onnx import TensorProto
E   from onnx.helper import make_tensor
E   from onnxscript import script, external_tensor
E   from onnxscript.values import Opset
E   from onnxscript.onnx_types import FLOAT, INT64
E   from onnxscript.onnx_opset import opset11
E   
E   @script()
E   def bck_test_nonmaxsuppression_two_classes(boxes: FLOAT[1,6,4], scores: FLOAT[1,2,6], max_output_boxes_per_class: INT64[1], iou_threshold: FLOAT[1], score_threshold: FLOAT[1]) -> (INT64[4,3]):
E       selected_indices = opset11.NonMaxSuppression(boxes, scores, max_output_boxes_per_class, iou_threshold, score_threshold)
E       return selected_indices

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@justinchuby justinchuby marked this pull request as draft April 11, 2025 17:43
@justinchuby justinchuby marked this pull request as ready for review April 11, 2025 21:02
@justinchuby justinchuby enabled auto-merge (squash) April 11, 2025 21:02
@justinchuby justinchuby disabled auto-merge April 11, 2025 21:02
@justinchuby justinchuby enabled auto-merge (squash) April 11, 2025 21:02
@justinchuby justinchuby merged commit 8f96dc9 into main Apr 11, 2025
24 of 28 checks passed
@justinchuby justinchuby deleted the justinchuby/fix-ast-constant branch April 11, 2025 23:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging this pull request may close these issues.

4 participants