Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _attachstreamer(self, branch, streamer, streamerinfosmap, isTClonesArray):
if streamer is None:
m = re.match(self._vector_regex, getattr(branch, "_fClassName", b""))
if m is None:
if branch.name in streamerinfosmap:
streamer = streamerinfosmap[branch.name]
else:
return
else:
if m.group(1) in streamerinfosmap:
substreamer = streamerinfosmap[m.group(1)]
if isinstance(substreamer, uproot.rootio.TStreamerInfo):
streamer = uproot.rootio.TStreamerSTL.vector(None, substreamer._fName)
else:
streamer = uproot.rootio.TStreamerSTL.vector(substreamer._fType, substreamer._fTypeName)
else:
return
if isinstance(streamer, uproot.rootio.TStreamerInfo):
if len(streamer._fElements) == 1 and isinstance(streamer._fElements[0], uproot.rootio.TStreamerBase) and streamer._fElements[0]._fName == b"TObjArray":
if streamer._fName == b"TClonesArray":
return self._attachstreamer(branch, streamerinfosmap.get(branch._fClonesName, None), streamerinfosmap, True)
else:
# FIXME: can only determine streamer by reading some values?
return
elif len(streamer._fElements) == 1 and isinstance(streamer._fElements[0], uproot.rootio.TStreamerSTL) and streamer._fElements[0]._fName == b"This":
return self._attachstreamer(branch, streamer._fElements[0], streamerinfosmap, isTClonesArray)
def __repr__(self):
return "".format(len(self.items), id(self))
def __getitem__(self, i):
return self.items[i]
def __len__(self):
return len(self.items)
def __iter__(self):
return iter(self.items)
uproot.rootio.Deserialized.classes[b"TObjArray"] = TObjArray
class TNamed(uproot.rootio.Deserialized):
"""Represents a TNamed; implemented only because it's a supertype of other classes.
"""
def __init__(self, filewalker, walker):
walker.startcontext()
start = walker.index
vers, bcnt = self._readversion(walker)
self._skipversion(walker)
self._skiptobject(walker)
self.name = walker.readstring()
self.title = walker.readstring()
self._checkbytecount(walker.index - start, bcnt)
class TAttLine(uproot.rootio.Deserialized):
"""Represents a TAttLine; implemented only because it's a supertype of other classes.
def read(self, source, cursor, context, parent):
return uproot.rootio._readobjany(source, cursor, context, parent)
try:
tree = file[treepath]
except KeyError:
continue
branchesinterp = OrderedDict()
for branch, interpretation in tree._normalize_branches(branches, awkward):
branchesinterp[branch.name] = interpretation
yield tree, branchesinterp, globalentrystart, path, file
globalentrystart += tree.numentries
################################################################ methods for TTree
class TTreeMethods(object):
# makes __doc__ attribute mutable before Python 3.3
__metaclass__ = type.__new__(type, "type", (uproot.rootio.ROOTObject.__metaclass__,), {})
_copycontext = True
_vector_regex = re.compile(b"^vector<(.+)>$")
_objectpointer_regex = re.compile(br"\(([^()]*)\)$")
def _attachstreamer(self, branch, streamer, streamerinfosmap, isTClonesArray):
if streamer is None:
m = re.match(self._vector_regex, getattr(branch, "_fClassName", b""))
if m is None:
if branch.name in streamerinfosmap:
streamer = streamerinfosmap[branch.name]
else:
return
def _numentries(paths, treepath, total, localsource, xrootdsource, httpsource, executor, blocking, uuids, options):
class _TTreeForNumEntries(uproot.rootio.ROOTStreamedObject):
@classmethod
def _readinto(cls, self, source, cursor, context, parent):
start, cnt, classversion = uproot.rootio._startcheck(source, cursor)
tnamed = uproot.rootio.Undefined.read(source, cursor, context, parent)
tattline = uproot.rootio.Undefined.read(source, cursor, context, parent)
tattfill = uproot.rootio.Undefined.read(source, cursor, context, parent)
tattmarker = uproot.rootio.Undefined.read(source, cursor, context, parent)
self._fEntries, = cursor.fields(source, _TTreeForNumEntries._format1)
return self
_format1 = struct.Struct('>q')
out = [None] * len(paths)
def fill(i):
try:
file = uproot.rootio.open(paths[i], localsource=localsource, xrootdsource=xrootdsource, httpsource=httpsource, read_streamers=False, **options)
walker.startcontext()
start = walker.index
vers, bcnt = self._readversion(walker)
if vers >= 3:
# TObjArray is a TObject
self._skipversion(walker)
self._skiptobject(walker)
if vers >= 2:
# TObjArray is a not a TObject
self.name = walker.readstring()
nobjs, low = walker.readfields("!ii")
self.items = [uproot.rootio.Deserialized._deserialize(filewalker, walker) for i in range(nobjs)]
self._checkbytecount(walker.index - start, bcnt)
path : str
URL specifying the location of a file.
{xrootdsource}
{options}
Returns
-------
:py:class:`ROOTDirectory `
top-level directory of the ROOT file.
""".format(**open_fragments)
################################################################ uproot.rootio.http
uproot.rootio.http.__doc__ = \
u"""Opens a remote ROOT file with HTTP (if ``requests`` is installed).
Parameters
----------
path : str
URL specifying the location of a file.
{httpsource}
{options}
Returns
-------
:py:class:`ROOTDirectory `
top-level directory of the ROOT file.
""".format(**open_fragments)
def newarray(self, expr, entrystart=None, entrystop=None, aliases={}, interpretations={}, entryvar=None, cache=None, basketcache=None, keycache=None, readexecutor=None, calcexecutor=None, numba=ifinstalled):
return ChainOrigin(self).newarray(expr, entrystart=entrystart, entrystop=entrystop, aliases=aliases, interpretations=interpretations, entryvar=entryvar, cache=cache, basketcache=basketcache, keycache=keycache, readexecutor=readexecutor, calcexecutor=calcexecutor, numba=numba)
def reduceall(self, identity, increment, combine=None, entrystart=None, entrystop=None, aliases={}, interpretations={}, entryvar=None, outputtype=dict, cache=None, basketcache=None, keycache=None, readexecutor=None, calcexecutor=None, numba=ifinstalled):
return ChainOrigin(self).reduceall(identity, increment, combine=combine, entrystart=entrystart, entrystop=entrystop, aliases=aliases, interpretations=interpretations, entryvar=entryvar, outputtype=outputtype, cache=cache, basketcache=basketcache, keycache=keycache, readexecutor=readexecutor, calcexecutor=calcexecutor, numba=numba)
def reduce(self, identity, increment, combine=None, entrystart=None, entrystop=None, aliases={}, interpretations={}, entryvar=None, cache=None, basketcache=None, keycache=None, readexecutor=None, calcexecutor=None, numba=ifinstalled):
return ChainOrigin(self).reduce(identity, increment, combine=combine, entrystart=entrystart, entrystop=entrystop, aliases=aliases, interpretations=interpretations, entryvar=entryvar, cache=cache, basketcache=basketcache, keycache=keycache, readexecutor=readexecutor, calcexecutor=calcexecutor, numba=numba)
def hists(self, specs, entrystart=None, entrystop=None, aliases={}, interpretations={}, entryvar=None, outputtype=dict, cache=None, basketcache=None, keycache=None, readexecutor=None, calcexecutor=None, numba=ifinstalled):
return ChainOrigin(self).hists(specs, entrystart=entrystart, entrystop=entrystop, aliases=aliases, interpretations=interpretations, entryvar=entryvar, outputtype=outputtype, cache=cache, basketcache=basketcache, keycache=keycache, readexecutor=readexecutor, calcexecutor=calcexecutor, numba=numba)
def hist(self, numbins, low, high, dataexpr, weightexpr=None, name=None, title=None, entrystart=None, entrystop=None, aliases={}, interpretations={}, entryvar=None, cache=None, basketcache=None, keycache=None, readexecutor=None, calcexecutor=None, numba=ifinstalled):
return ChainOrigin(self).hist(numbins, low, high, dataexpr, weightexpr=weightexpr, name=name, title=title, entrystart=entrystart, entrystop=entrystop, aliases=aliases, interpretations=interpretations, entryvar=entryvar, cache=cache, basketcache=basketcache, keycache=keycache, readexecutor=readexecutor, calcexecutor=calcexecutor, numba=numba)
uproot.rootio.methods["TTree"] = TTreeFunctionalMethods
return None
except _NotNumerical:
if len(branch._fLeaves) == 1:
if len(branch._fBranches) > 0 and all(len(x._fLeaves) == 1 and x._fLeaves[0]._fLeafCount is branch._fLeaves[0] for x in branch._fBranches):
return asdtype(">i4")
if isinstance(branch._streamer, uproot.rootio.TStreamerObject):
obj = uproot.rootio._safename(branch._streamer._fTypeName)
if obj == "string":
return asgenobj(STLString(awkward), branch._context, 0)
elif obj in branch._context.classes:
return _obj_or_genobj(branch._context.classes.get(obj), branch, isjagged, cntvers=cntvers, tobject=tobject, speedbump=speedbump)
if isinstance(branch._streamer, uproot.rootio.TStreamerInfo):
obj = uproot.rootio._safename(branch._streamer._fName)
if obj == "string":
return asgenobj(STLString(awkward), branch._context, 0)
elif obj in branch._context.classes:
return _obj_or_genobj(branch._context.classes.get(obj), branch, isjagged, cntvers=cntvers, tobject=tobject, speedbump=speedbump)
if branch._fLeaves[0].__class__.__name__ == "TLeafC":
return asstring(skipbytes=1)
elif branch._fLeaves[0].__class__.__name__ == "TLeafElement":
if isinstance(branch._streamer, uproot.rootio.TStreamerBasicType):
try:
fromdtype = _ftype2dtype(branch._streamer._fType, awkward)
except _NotNumerical:
pass
else:
if swapbytes: