mdsplus
mdsplus copied to clipboard
Connection.get() is broken in python by PR #2620
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.
Should this have two slashes? Also, I tried PR 2635 against the tester and it appeared to successfully get the \PINJ tag without issue.