Skip to content

Crash when structure table columns are no series literals

The following code

use randint from numpy.random
s = Structure from file '/home/ubuntu/work/vre-language/examples/2.xyz'
subst = map((x: if(x>-1, randint(0, 108), -1)), range(0, 17, 1))
symbols = map((x: if((x in subst), 'Cu', 'Ag')), range(0, 108, 1))
atoms = (atoms: Table(symbols, s.atoms[0].x, s.atoms[0].y, s.atoms[0].z))
t = Structure CuAg Table(atoms, s.cell, s.pbc)

causes a crash:

Traceback (most recent call last):
  File "vre-language/src/virtmat/language/utilities/errors.py", line 306, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/interpreter/session_manager.py", line 186, in get_model_value
    return getattr(self.session.get_model(*args, uuid=self.uuid, **kwargs), 'value', '')
  File "vre-language/src/virtmat/language/interpreter/session.py", line 149, in get_model
    self.process_models(model_str, model_path, active_uuid=uuid)
  File "vre-language/src/virtmat/language/interpreter/session.py", line 205, in process_models
    model, uuid = self._process_model(uuid, strn, path, active_uuid=active_uuid)
  File "vre-language/src/virtmat/language/interpreter/session.py", line 548, in _process_model
    model = tx_get_model(model_src, deferred_mode=True,
  File "python-3.10.12/lib/python3.10/site-packages/textx/metamodel.py", line 699, in model_from_str
    p(model, self)
  File "vre-language/src/virtmat/language/constraints/processors.py", line 34, in check_types_processor
    _ = obj.type_
  File "/usr/lib/python3.10/functools.py", line 981, in __get__
    val = self.func(instance)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 211, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/constraints/typechecks.py", line 71, in variable_type
    return self.parameter.type_
  File "/usr/lib/python3.10/functools.py", line 981, in __get__
    val = self.func(instance)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 215, in wrapper
    raise TextXError(str(err), **get_location_context(obj)) from err
textx.exceptions.TextXError: None:1:313: 'GeneralReference' object has no attribute 'name' => 'Structure CuAg Table(atoms, s.cell, s.pbc)'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "vre-language/src/virtmat/language/utilities/errors.py", line 306, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/interpreter/session_manager.py", line 212, in process_input
    output = self.get_model_value(model_str=input_str)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 308, in wrapper
    process_error(err)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 296, in process_error
    raise err.__cause__
  File "vre-language/src/virtmat/language/utilities/errors.py", line 211, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/constraints/typechecks.py", line 742, in amml_structure_type
    if 'atoms' not in [c.name for c in self.tab.columns]:
  File "vre-language/src/virtmat/language/constraints/typechecks.py", line 742, in <listcomp>
    if 'atoms' not in [c.name for c in self.tab.columns]:
AttributeError: 'GeneralReference' object has no attribute 'name'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "vre-language/src/virtmat/language/utilities/errors.py", line 306, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/cli/run_session.py", line 98, in main
    mgr.main_loop()
  File "vre-language/src/virtmat/language/interpreter/session_manager.py", line 161, in main_loop
    self.interact(banner='Welcome to textS/textM. Type %help for some help.',
  File "/usr/lib/python3.10/code.py", line 232, in interact
    more = self.push(line)
  File "/usr/lib/python3.10/code.py", line 258, in push
    more = self.runsource(source, self.filename)
  File "vre-language/src/virtmat/language/interpreter/session_manager.py", line 173, in runsource
    need_inp = self.process_input(source)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 341, in wrapper
    raise RuntimeError('non-handled exception') from err
RuntimeError: non-handled exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "vre-language/src/virtmat/language/utilities/errors.py", line 306, in wrapper
    return func(*args, **kwargs)
  File "vre-language/src/virtmat/language/cli/__init__.py", line 38, in texts
    clargs.func(clargs)
  File "vre-language/src/virtmat/language/utilities/errors.py", line 341, in wrapper
    raise RuntimeError('non-handled exception') from err
RuntimeError: non-handled exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "python-3.10.12/bin/texts", line 8, in <module>
    sys.exit(texts())
  File "vre-language/src/virtmat/language/utilities/errors.py", line 341, in wrapper
    raise RuntimeError('non-handled exception') from err
RuntimeError: non-handled exception