You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It appears that a recent change in PyVSC introduced a new issue. In a test that previously worked, an if_then constraint that uses IntEnum (or Enum) now causes a TypeError inside VSC. I created a small example that reproduces the error, and I verified that this example passes on earlier VSC versions. Unfortunately, I cannot determine which version, but I think the issue arose recently.
importvscfromenumimportIntEnumclassCmdTypes(IntEnum):
TYPE_A=0TYPE_B=1@vsc.randobjclassCmd():
def__init__(self):
self.cmd_type=vsc.rand_enum_t(CmdTypes)
self.cmd_op=vsc.rand_bit_t(1)
@vsc.constraintdefop_type_combination_c(self):
withvsc.if_then(self.cmd_type==CmdTypes.TYPE_B): # This if_then is needed to hit the bug.self.cmd_op==1cmd=Cmd()
cmd.randomize() # This randomize() causes a TypeError in VSC.print(f"Cmd type: {cmd.cmd_type}, Cmd op: {cmd.cmd_op}")
The example produces this output:
Traceback (most recent call last):
File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/root/.vscode-server-insiders/extensions/ms-python.python-2021.12.1559732655/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
cli.main()
File "/root/.vscode-server-insiders/extensions/ms-python.python-2021.12.1559732655/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main
run()
File "/root/.vscode-server-insiders/extensions/ms-python.python-2021.12.1559732655/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 285, in run_file
runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
File "/usr/lib64/python3.6/runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/scratch/mcgrathm/silicon-validation/lib/python/tests/experiment.py", line 23, in <module>
cmd.randomize()
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/rand_obj.py", line 168, in randomize
solve_fail_debug=solve_fail_debug)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/randomizer.py", line 558, in do_randomize
fm, bounds_v.bound_m))
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/array_constraint_builder.py", line 48, in build
m.accept(builder)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/field_composite_model.py", line 154, in accept
v.visit_composite_field(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/model_visitor.py", line 68, in visit_composite_field
c.accept(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/constraint_block_model.py", line 42, in accept
v.visit_constraint_block(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/constraint_copy_builder.py", line 85, in visit_constraint_block
super().visit_constraint_block(c)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/model_visitor.py", line 107, in visit_constraint_block
self.visit_constraint_scope(c)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/constraint_override_visitor.py", line 25, in visit_constraint_scope
cc.accept(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/constraint_if_else_model.py", line 63, in accept
visitor.visit_constraint_if_else(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/array_constraint_builder.py", line 90, in visit_constraint_if_else
is_x, val = XExprEvaluator().eval(c.cond)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/x_expr_evaluator.py", line 27, in eval
e.accept(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/expr_bin_model.py", line 178, in accept
visitor.visit_expr_bin(self)
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/visitors/x_expr_evaluator.py", line 118, in visit_expr_bin
if lhs_val == rhs_val:
File "/scratch/mcgrathm/silicon-validation/.venv/lib64/python3.6/site-packages/vsc/model/value_scalar.py", line 48, in __eq__
v = int(rhs)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
The text was updated successfully, but these errors were encountered:
It appears that a recent change in PyVSC introduced a new issue. In a test that previously worked, an if_then constraint that uses IntEnum (or Enum) now causes a TypeError inside VSC. I created a small example that reproduces the error, and I verified that this example passes on earlier VSC versions. Unfortunately, I cannot determine which version, but I think the issue arose recently.
The example produces this output:
The text was updated successfully, but these errors were encountered: