ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
python.root_pickle.Unpickler Class Reference
Inheritance diagram for python.root_pickle.Unpickler:
Collaboration diagram for python.root_pickle.Unpickler:

Public Member Functions

def __init__ (self, file, use_proxy=True, use_hash=False)
 
def load (self, key=None)
 
def persistent_load (self, pid)
 
def find_class (self, module, name)
 

Private Attributes

 __use_proxy
 
 __file
 
 __io
 
 __n
 

Detailed Description

Definition at line 356 of file root_pickle.py.

Constructor & Destructor Documentation

◆ __init__()

def python.root_pickle.Unpickler.__init__ (   self,
  file,
  use_proxy = True,
  use_hash = False 
)
Create a root unpickler.
FILE should be a Root TFile.

Definition at line 357 of file root_pickle.py.

357  def __init__ (self, file, use_proxy = True, use_hash = False):
358  """Create a root unpickler.
359 FILE should be a Root TFile.
360 """
361  self.__use_proxy = use_proxy
362  self.__file = file
363  self.__io = Read_Wrapper()
364  pickle.Unpickler.__init__ (self, self.__io)
365 
366  self.__n = 0
367  xsave.add (file)
368 
369  if use_hash:
370  htab = {}
371  ctab = {}
372  for k in file.GetListOfKeys():
373  nm = k.GetName()
374  cy = k.GetCycle()
375  htab[(nm,cy)] = k
376  if cy > ctab.get(nm,0):
377  ctab[nm] = cy
378  htab[(nm,9999)] = k
379  file._htab = htab
380  oget = file.Get
381  def xget (nm0):
382  nm = nm0
383  ipos = nm.find (';')
384  if ipos >= 0:
385  cy = nm[ipos+1]
386  if cy == '*':
387  cy = 10000
388  else:
389  cy = int(cy)
390  nm = nm[:ipos-1]
391  else:
392  cy = 9999
393  ret = htab.get ((nm,cy), None)
394  if not ret:
395  print ("did't find", nm, cy, len(htab))
396  return oget (nm0)
397  #ctx = ROOT.TDirectory.TContext (file)
398  ret = ret.ReadObj()
399  #del ctx
400  return ret
401  file.Get = xget
402  return
403 
404 

Member Function Documentation

◆ find_class()

def python.root_pickle.Unpickler.find_class (   self,
  module,
  name 
)

Definition at line 433 of file root_pickle.py.

433  def find_class (self, module, name):
434  if module == 'copy_reg':
435  module = 'copyreg'
436  elif module == '__builtin__':
437  module = 'builtins'
438  try:
439  try:
440  __import__(module)
441  mod = sys.modules[module]
442  except ImportError:
443  print ("Making dummy module %s" % (module))
444  class DummyModule:
445  pass
446  mod = DummyModule()
447  sys.modules[module] = mod
448  klass = getattr(mod, name)
449  return klass
450  except AttributeError:
451  print ("Making dummy class %s.%s" % (module, name))
452  mod = sys.modules[module]
453  class Dummy(object):
454  pass
455  setattr (mod, name, Dummy)
456  return Dummy
457  return
458 
459 
460 

◆ load()

def python.root_pickle.Unpickler.load (   self,
  key = None 
)
Read a pickled object representation from the open file.

Definition at line 405 of file root_pickle.py.

405  def load (self, key=None):
406  """Read a pickled object representation from the open file."""
407  if key is None:
408  key = '_pickle'
409  o = None
410  if _compat_hooks:
411  save = _compat_hooks[0]()
412  try:
413  self.__n += 1
414  s = self.__file.Get (key + ';%d' % self.__n)
415  self.__io.setvalue (s)
416  o = pickle.Unpickler.load(self)
417  self.__io.reopen ()
418  finally:
419  if _compat_hooks:
420  save = _compat_hooks[1](save)
421  return o
422 

◆ persistent_load()

def python.root_pickle.Unpickler.persistent_load (   self,
  pid 
)

Definition at line 423 of file root_pickle.py.

423  def persistent_load (self, pid):
424  if self.__use_proxy:
425  o = Root_Proxy (self.__file, pid)
426  else:
427  o = self.__file.Get (pid)
428  #print ('load ', pid, o)
429  xsave.add(o)
430  return o
431 
432 

Member Data Documentation

◆ __file

python.root_pickle.Unpickler.__file
private

Definition at line 362 of file root_pickle.py.

◆ __io

python.root_pickle.Unpickler.__io
private

Definition at line 363 of file root_pickle.py.

◆ __n

python.root_pickle.Unpickler.__n
private

Definition at line 366 of file root_pickle.py.

◆ __use_proxy

python.root_pickle.Unpickler.__use_proxy
private

Definition at line 361 of file root_pickle.py.


The documentation for this class was generated from the following file:
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
pickleTool.object
object
Definition: pickleTool.py:30
python.root_pickle.load
def load(f, use_proxy=1, key=None)
Definition: root_pickle.py:476