LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Functions
lsst.daf.persistence.genericAssembler Namespace Reference

Functions

def genericAssembler (dataId, componentInfo, cls)
 
def genericDisassembler (obj, dataId, componentInfo)
 

Function Documentation

◆ genericAssembler()

def lsst.daf.persistence.genericAssembler.genericAssembler (   dataId,
  componentInfo,
  cls 
)
A generic assembler for butler composite datasets, that can be used when the component names match the
argument names in the __init__ signature, or the setter name for component objects is specified or can be
inferred by component name.

When determining setter names: If the setter name is specified by the policy then the genericAssembler
will use that to set the component into the python object. If the policy does not specify setter names the
genericAssembler will see if the __init__ func input argument names match the policy argument names. If
that does not work, and the python object has setter names that match the component name of all the object
then the setter name can be inferred; it will first try 'set' + <componentName>, and if that does not
exist it will try 'set' + <componentName>.capitalize (e.g. for component name 'foo', it will try setfoo
and then setFoo.) If no setter can be found for a component object, it will raise a runtime error.

Definition at line 26 of file genericAssembler.py.

26 def genericAssembler(dataId, componentInfo, cls):
27  """A generic assembler for butler composite datasets, that can be used when the component names match the
28  argument names in the __init__ signature, or the setter name for component objects is specified or can be
29  inferred by component name.
30 
31  When determining setter names: If the setter name is specified by the policy then the genericAssembler
32  will use that to set the component into the python object. If the policy does not specify setter names the
33  genericAssembler will see if the __init__ func input argument names match the policy argument names. If
34  that does not work, and the python object has setter names that match the component name of all the object
35  then the setter name can be inferred; it will first try 'set' + <componentName>, and if that does not
36  exist it will try 'set' + <componentName>.capitalize (e.g. for component name 'foo', it will try setfoo
37  and then setFoo.) If no setter can be found for a component object, it will raise a runtime error.
38  """
39  initArgs = {k: v.obj for k, v in componentInfo.items()}
40  try:
41  obj = cls(**initArgs)
42  except TypeError:
43  obj = None
44 
45  if not obj:
46  obj = cls()
47  for componentName, componentInfo in componentInfo.items():
48  if componentInfo.setter is not None:
49  setter = getattr(obj, componentInfo.setter)
50  elif hasattr(obj, 'set_' + componentName):
51  setter = getattr(obj, 'set_' + componentName)
52  elif hasattr(obj, 'set' + componentName.capitalize()):
53  setter = getattr(obj, 'set' + componentName.capitalize())
54  else:
55  raise RuntimeError("No setter for datasetType:%s class:%s" %
56  (componentInfo.datasetType, cls))
57  setter(componentInfo.obj)
58  return obj
59 
60 
def genericAssembler(dataId, componentInfo, cls)

◆ genericDisassembler()

def lsst.daf.persistence.genericAssembler.genericDisassembler (   obj,
  dataId,
  componentInfo 
)
A generic disassembler for butler composite datasets, that can be used when the getter name for
component objects is specified or can be inferred by component name.

When determining getter names: If the getter name is specified by the policy then the genericAssembler
will use that to get the component from the python object. If the policy does not specify getter names and
the python object has getter names that match the component name of all the object then the getter name
can be inferred; it will first try 'get' + <componentName>, and if that does not exist it will try 'get' +
<componentName>.capitalize (e.g. for component name 'foo', it will try getfoo and then getFoo.) If no
getter can be found for a component object, it will raise a runtime error.

Definition at line 61 of file genericAssembler.py.

61 def genericDisassembler(obj, dataId, componentInfo):
62  """A generic disassembler for butler composite datasets, that can be used when the getter name for
63  component objects is specified or can be inferred by component name.
64 
65  When determining getter names: If the getter name is specified by the policy then the genericAssembler
66  will use that to get the component from the python object. If the policy does not specify getter names and
67  the python object has getter names that match the component name of all the object then the getter name
68  can be inferred; it will first try 'get' + <componentName>, and if that does not exist it will try 'get' +
69  <componentName>.capitalize (e.g. for component name 'foo', it will try getfoo and then getFoo.) If no
70  getter can be found for a component object, it will raise a runtime error.
71  """
72  for componentName, componentInfo in componentInfo.items():
73  if componentInfo.getter is not None:
74  getter = getattr(obj, componentInfo.getter)
75  elif hasattr(obj, 'get_' + componentName):
76  getter = getattr(obj, 'get_' + componentName)
77  elif hasattr(obj, 'get' + componentName.capitalize()):
78  getter = getattr(obj, 'get' + componentName.capitalize())
79  else:
80  raise RuntimeError("No getter for componentName:%s" % componentName)
81  componentInfo.obj = getter()
def genericDisassembler(obj, dataId, componentInfo)