LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Functions
lsst.daf.persistence.utils Namespace Reference

Functions

def listify (x)
 
def iterify (x)
 
def sequencify (x)
 
def setify (x)
 
def doImport (pythonType)
 

Function Documentation

◆ doImport()

def lsst.daf.persistence.utils.doImport (   pythonType)
Import a python object given an importable string

Definition at line 104 of file utils.py.

104 def doImport(pythonType):
105  """Import a python object given an importable string"""
106  try:
107  if not isinstance(pythonType, str):
108  raise TypeError("Unhandled type of pythonType, val:%s" % pythonType)
109  # import this pythonType dynamically
110  pythonTypeTokenList = pythonType.split('.')
111  importClassString = pythonTypeTokenList.pop()
112  importClassString = importClassString.strip()
113  importPackage = ".".join(pythonTypeTokenList)
114  importType = __import__(importPackage, globals(), locals(), [importClassString], 0)
115  pythonType = getattr(importType, importClassString)
116  return pythonType
117  except ImportError:
118  pass
119  # maybe python type is a member function, in the form: path.to.object.Class.funcname
120  pythonTypeTokenList = pythonType.split('.')
121  importClassString = '.'.join(pythonTypeTokenList[0:-1])
122  importedClass = doImport(importClassString)
123  pythonType = getattr(importedClass, pythonTypeTokenList[-1])
124  return pythonType
def doImport(pythonType)
Definition: utils.py:104

◆ iterify()

def lsst.daf.persistence.utils.iterify (   x)
Takes any object. Returns it if it is iterable. If it
is not iterable it puts the object in a list and returns
the list. None will return an empty list. If a new list
is always required use listify(). Strings will be placed
in a list with a single element.

Definition at line 49 of file utils.py.

49 def iterify(x):
50  """Takes any object. Returns it if it is iterable. If it
51  is not iterable it puts the object in a list and returns
52  the list. None will return an empty list. If a new list
53  is always required use listify(). Strings will be placed
54  in a list with a single element.
55  """
56  if x is None:
57  x = []
58  elif isinstance(x, str):
59  x = [x]
60  elif hasattr(x, '__iter__'):
61  pass
62  else:
63  x = [x]
64  return x
65 
66 

◆ listify()

def lsst.daf.persistence.utils.listify (   x)
Takes any object and puts that whole object in a list:
- strings will be made into a single element in the list
- tuples will be converted to list
- lists will remain as lists
- None will be made into an empty list

Definition at line 29 of file utils.py.

29 def listify(x):
30  """Takes any object and puts that whole object in a list:
31  - strings will be made into a single element in the list
32  - tuples will be converted to list
33  - lists will remain as lists
34  - None will be made into an empty list
35  """
36  if x is None:
37  x = []
38  elif isinstance(x, str):
39  x = [x]
40  elif isinstance(x, dict):
41  x = [x]
42  elif hasattr(x, '__iter__'):
43  x = list(x)
44  else:
45  x = [x]
46  return x
47 
48 
daf::base::PropertyList * list
Definition: fits.cc:913

◆ sequencify()

def lsst.daf.persistence.utils.sequencify (   x)
Takes an object, if it is a sequence return it,
else put it in a tuple. Strings are not sequences.
If x is a dict, returns a sorted tuple of keys.

Definition at line 67 of file utils.py.

67 def sequencify(x):
68  """Takes an object, if it is a sequence return it,
69  else put it in a tuple. Strings are not sequences.
70  If x is a dict, returns a sorted tuple of keys."""
71  if isinstance(x, (Sequence, Set)) and not isinstance(x, str):
72  pass
73  elif isinstance(x, Mapping):
74  x = tuple(sorted(x.keys()))
75  else:
76  x = (x, )
77  return x
78 
79 

◆ setify()

def lsst.daf.persistence.utils.setify (   x)
Take an object x and return it in a set.

If x is a container, will create a set from the contents of the container.
If x is an object, will create a set with a single item in it.
If x is a string, will treat the string as a single object (i.e. not as a list of chars)

Definition at line 80 of file utils.py.

80 def setify(x):
81  """Take an object x and return it in a set.
82 
83  If x is a container, will create a set from the contents of the container.
84  If x is an object, will create a set with a single item in it.
85  If x is a string, will treat the string as a single object (i.e. not as a list of chars)"""
86  if x is None:
87  x = set()
88 
89  # Here we have to explicity for strings because the set initializer will use each character in a string as
90  # a separate element. We cannot use the braces initialization because x might be a list, and we do not
91  # want the list to be an item; we want each item in the list to be represented by an item in the set.
92  # Then, we have to fall back to braces init because if the item is NOT a list then the set initializer
93  # won't take it.
94  if isinstance(x, str):
95  x = set([x])
96  else:
97  try:
98  x = set(x)
99  except TypeError:
100  x = set([x])
101  return x
102 
103 
daf::base::PropertySet * set
Definition: fits.cc:912