Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __setitem__(self, where, what):
self.util = Util()
where, cycle = self._normalizewhere(where)
if what.__class__.__name__ != "TTree" and what.__class__.__name__ != "newtree":
what = uproot_methods.convert.towriteable(what)
elif what.__class__.__name__ == "newtree":
what = TTree(where, what, self)
cursor = uproot.write.sink.cursor.Cursor(self._fSeekFree)
newkey = uproot.write.TKey.TKey(fClassName = what._fClassName,
fName = where,
fTitle = what._fTitle,
fObjlen = 0,
fSeekKey = self._fSeekFree,
fSeekPdir = self._fBEGIN,
fCycle = cycle if cycle is not None else self._rootdir.newcycle(where))
if what.__class__.__name__ == "newtree" or what.__class__.__name__ == "TTree":
# Need to (re)attach the cycle number to allow getitem to access writable TTree
tree_where = where + b";" + str(newkey.fCycle).encode("utf-8")
self._treedict[tree_where] = what
newkeycursor = uproot.write.sink.cursor.Cursor(newkey.fSeekKey)
newkey.write(cursor, self._sink)
what._write(self, cursor, where, self.compression, newkey, newkeycursor, self.util)
self._expandfile(cursor)
def _writestreamers(self):
self._fSeekInfo = self._fSeekFree
self._seekcursor.update_fields(self._sink, self._format_seekinfo, self._fSeekInfo)
cursor = uproot.write.sink.cursor.Cursor(self._fSeekInfo)
streamerkey = uproot.write.TKey.TKey32(fClassName = b"TList",
fName = b"StreamerInfo",
fTitle = b"Doubly linked list",
fSeekKey = self._fSeekInfo,
fSeekPdir = self._fBEGIN)
streamerkeycursor = uproot.write.sink.cursor.Cursor(self._fSeekInfo)
streamerkey.write(cursor, self._sink)
uproot.write.compress.write(self, cursor, uproot.write.streamers.streamers, self.compression, streamerkey, streamerkeycursor)
self._fNbytesInfo = streamerkey.fNbytes
self._nbytescursor.update_fields(self._sink, self._format_nbytesinfo, self._fNbytesInfo)
self._expandfile(cursor)
def _expandfile(self, cursor):
if cursor.index > self._fSeekFree:
freecursor = uproot.write.sink.cursor.Cursor(cursor.index)
freekey = uproot.write.TKey.TKey(b"TFile", self._filename, fObjlen=0, fSeekKey=cursor.index, fSeekPdir=self._fBEGIN)
freeseg = uproot.write.TFree.TFree(cursor.index + freekey.fNbytes)
freekey.fObjlen = freeseg.size()
freekey.fNbytes += freekey.fObjlen
freekey.write(freecursor, self._sink)
freeseg.write(freecursor, self._sink)
self._fSeekFree = cursor.index
self._fEND = cursor.index + freekey.fNbytes
self._fNbytesFree = freekey.fNbytes
self._nfree = 1
self._endcursor.update_fields(self._sink, self._format_end, self._fEND, self._fSeekFree, self._fNbytesFree, self._nfree)
def fKeylen(self):
return self._format1.size + uproot.write.sink.cursor.Cursor.length_strings([self.fClassName, self.fName, self.fTitle])
self._endcursor = uproot.write.sink.cursor.Cursor(cursor.index)
cursor.write_fields(self._sink, self._format_end, self._fEND, self._fSeekFree, self._fNbytesFree, self._nfree)
self._fNbytesName = 2*len(self._filename) + 36 + 8 # + 8 because two fields in TKey are 'q' rather than 'i'
fUnits = 4
cursor.write_fields(self._sink, self._format2, self._fNbytesName, fUnits)
self._compresscursor = uproot.write.sink.cursor.Cursor(cursor.index)
cursor.write_fields(self._sink, self._format3, self._fCompress)
self._fSeekInfo = 0
self._seekcursor = uproot.write.sink.cursor.Cursor(cursor.index)
cursor.write_fields(self._sink, self._format_seekinfo, self._fSeekInfo)
self._fNbytesInfo = 0
self._nbytescursor = uproot.write.sink.cursor.Cursor(cursor.index)
cursor.write_fields(self._sink, self._format_nbytesinfo, self._fNbytesInfo)
cursor.write_data(self._sink, b'\x00\x01' + uuid.uuid1().bytes)
def writekeys(self, cursor):
self.fSeekKeys = cursor.index
self.fNbytesKeys = self._nbyteskeys()
self.tfile._expandfile(uproot.write.sink.cursor.Cursor(self.fSeekKeys + self.allocationbytes))
self.keycursor = uproot.write.sink.cursor.Cursor(self.fSeekKeys)
self.headkey.write(self.keycursor, self.sink)
self.nkeycursor = uproot.write.sink.cursor.Cursor(self.keycursor.index)
self.keycursor.write_fields(self.sink, self._format2, len(self.keys))
for key in self.keys.values():
key.write(self.keycursor, self.sink)
self.update()
def writekeys(self, cursor):
self.fSeekKeys = cursor.index
self.fNbytesKeys = self._nbyteskeys()
self.tfile._expandfile(uproot.write.sink.cursor.Cursor(self.fSeekKeys + self.allocationbytes))
self.keycursor = uproot.write.sink.cursor.Cursor(self.fSeekKeys)
self.headkey.write(self.keycursor, self.sink)
self.nkeycursor = uproot.write.sink.cursor.Cursor(self.keycursor.index)
self.keycursor.write_fields(self.sink, self._format2, len(self.keys))
for key in self.keys.values():
key.write(self.keycursor, self.sink)
self.update()
def writekeys(self, cursor):
self.fSeekKeys = cursor.index
self.fNbytesKeys = self._nbyteskeys()
self.tfile._expandfile(uproot.write.sink.cursor.Cursor(self.fSeekKeys + self.allocationbytes))
self.keycursor = uproot.write.sink.cursor.Cursor(self.fSeekKeys)
self.headkey.write(self.keycursor, self.sink)
self.nkeycursor = uproot.write.sink.cursor.Cursor(self.keycursor.index)
self.keycursor.write_fields(self.sink, self._format2, len(self.keys))
for key in self.keys.values():
key.dircursor = copy(self.keycursor)
key.write(self.keycursor, self.sink)
self.update()