mdsplus icon indicating copy to clipboard operation
mdsplus copied to clipboard

Connection.get() is broken in python by PR #2620

Open WhoBrokeTheBuild opened this issue 1 year ago • 1 comments

Affiliation PSFC

Version(s) Affected alpha

Describe the bug When using Connection.get() on a tag name, the serialize/deserialize added by PR #2620 breaks We rolled back the change to the python code in PR #2632 in order to unblock GA

To Reproduce Steps to reproduce the behavior:

$ python3
>>> import MDSplus
>>> c = MDSplus.Connection('mfedata-archives')
>>> c.openTree('cmod', 1090909009)
>>> c.get('\\IP')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/usr-local-mdsplus/python/MDSplus/connection.py", line 324, in get
    return self.conn.get(exp, *args, **kwargs)
  File "/tmp/usr-local-mdsplus/python/MDSplus/connection.py", line 218, in get
    return retSerialized.deserialize()
  File "/tmp/usr-local-mdsplus/python/MDSplus/mdsarray.py", line 339, in deserialize
    return _dat.Data.deserialize(self)
  File "/tmp/usr-local-mdsplus/python/MDSplus/mdsdata.py", line 852, in deserialize
    return xd.value
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 212, in value
    return self.descriptor.value
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 181, in value
    return dtypeToClass[self.dtype].fromDescriptor(self)._setTree(self.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 186, in fromDescriptor
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 186, in <listcomp>
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 50, in pointerToObject
    return Descriptor(pointer)._setTree(tree).value
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 181, in value
    return dtypeToClass[self.dtype].fromDescriptor(self)._setTree(self.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 186, in fromDescriptor
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 186, in <listcomp>
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 50, in pointerToObject
    return Descriptor(pointer)._setTree(tree).value
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 181, in value
    return dtypeToClass[self.dtype].fromDescriptor(self)._setTree(self.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 356, in fromDescriptor
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/compound.py", line 356, in <listcomp>
    args = [_dsc.pointerToObject(d.dscptrs[i], d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 50, in pointerToObject
    return Descriptor(pointer)._setTree(tree).value
  File "/tmp/usr-local-mdsplus/python/MDSplus/descriptor.py", line 181, in value
    return dtypeToClass[self.dtype].fromDescriptor(self)._setTree(self.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/tree.py", line 1912, in fromDescriptor
    return cls(_C.cast(d.pointer, _C.POINTER(_C.c_int32)).contents.value, d.tree)
  File "/tmp/usr-local-mdsplus/python/MDSplus/tree.py", line 1203, in __new__
    if str(node.usage) == "DEVICE":
  File "/tmp/usr-local-mdsplus/python/MDSplus/tree.py", line 1567, in usage
    return _scr.String(str(self.usage_str)[10:])
  File "/tmp/usr-local-mdsplus/python/MDSplus/tree.py", line 332, in getter
    return self._getNci(info)
  File "/tmp/usr-local-mdsplus/python/MDSplus/tree.py", line 1309, in _getNci
    _exc.checkStatus(_TreeShr._TreeGetNci(
  File "/tmp/usr-local-mdsplus/python/MDSplus/mdsExceptions.py", line 94, in checkStatus
    raise exception
MDSplus.mdsExceptions.TreeNOT_OPEN: %TREE-W-NOT_OPEN, Tree not currently open

Expected behavior The data of the tag to be returned.

WhoBrokeTheBuild avatar Oct 04 '23 20:10 WhoBrokeTheBuild

Should this have two slashes? Also, I tried PR 2635 against the tester and it appeared to successfully get the \PINJ tag without issue.

ModestMC avatar Oct 09 '23 21:10 ModestMC