Skip to content
Snippets Groups Projects

PyUtils+AthenaPython: Update CORAL attribute access for python 3.

Merged Scott Snyder requested to merge ssnyder/athena:py3.PyUtils-20191219 into master
3 files
+ 4
35
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -15,22 +15,6 @@ __doc__ = "provide components to peek into pool files"
import AthenaPython.PyAthena as PyAthena
StatusCode = PyAthena.StatusCode
# MN/sss: make Coral.AttributeList work in Coral3/ROOT6/gcc5
from PyCool import coral
_attribute_methods = dir(coral.Attribute)
_methnames = ['data<std::__cxx11::basic_string<char> >',
'data<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >',
'data<std::basic_string<char> >',
'data<std::string>']
for _m in _methnames:
if _m in _attribute_methods:
_attribute_getdata = _m
break
else:
raise Exception("Can't find data method in Attribute")
def attr_str_data(attr):
return getattr(attr, _attribute_getdata) ()
### helper functions ----------------------------------------------------------
def _import_ROOT():
@@ -245,14 +229,14 @@ class FilePeeker(PyAthena.Alg):
spec = a.specification()
a_type = spec.typeName()
if a_type.find('string') >= 0:
a_data = attr_str_data(a)
a_data = a.data('string')()
try:
a_data = eval(a_data,{},{})
except Exception:
# swallow and keep as a string
pass
else:
a_data = getattr(a,'data<%s>'%a_type)()
a_data = a.data(a_type)()
#msg.info("%s: %s %s", spec.name(), a_data, type(a_data) )
attr_data.append( (spec.name(), a_data) )
attrs.append(dict(attr_data))
Loading