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
Public Member Functions | List of all members
lsst.afw.table._schema.Schema Class Reference

Public Member Functions

def getOrderedNames (self)
 
def __iter__ (self)
 
def checkUnits (self, parse_strict='raise')
 
def addField (self, field, type=None, doc="", units="", size=None, doReplace=False, parse_strict="raise")
 
def extract (self, *patterns, **kwargs)
 
def __reduce__ (self)
 

Detailed Description

Definition at line 91 of file _schema.py.

Member Function Documentation

◆ __iter__()

def lsst.afw.table._schema.Schema.__iter__ (   self)
Iterate over the items in the Schema.

Definition at line 108 of file _schema.py.

108  def __iter__(self):
109  """Iterate over the items in the Schema.
110  """
111  items = []
112  self.forEach(items.append)
113  return iter(items)
114 

◆ __reduce__()

def lsst.afw.table._schema.Schema.__reduce__ (   self)
For pickle support.

Definition at line 238 of file _schema.py.

238  def __reduce__(self):
239  """For pickle support."""
240  fields = []
241  for item in self:
242  fields.append(item.field)
243  return (makeSchemaFromFields, (fields,))
244 
245 

◆ addField()

def lsst.afw.table._schema.Schema.addField (   self,
  field,
  type = None,
  doc = "",
  units = "",
  size = None,
  doReplace = False,
  parse_strict = "raise" 
)
Add a field to the Schema.

Parameters
----------
field : `str` or `Field`
    The string name of the Field, or a fully-constructed Field object.
    If the latter, all other arguments besides doReplace are ignored.
type : `str`, optional
    The type of field to create.  Valid types are the keys of the
    afw.table.Field dictionary.
doc : `str`
    Documentation for the field.
unit : `str`
    Units for the field, or an empty string if unitless.
size : `int`
    Size of the field; valid for string and array fields only.
doReplace : `bool`
    If a field with this name already exists, replace it instead of
    raising pex.exceptions.InvalidParameterError.
parse_strict : `str`
    One of 'raise' (default), 'warn', or 'strict', indicating how to
    handle unrecognized unit strings.  See also astropy.units.Unit.

Returns
-------
result :
    Result of the `Field` addition.

Definition at line 129 of file _schema.py.

130  doReplace=False, parse_strict="raise"):
131  """Add a field to the Schema.
132 
133  Parameters
134  ----------
135  field : `str` or `Field`
136  The string name of the Field, or a fully-constructed Field object.
137  If the latter, all other arguments besides doReplace are ignored.
138  type : `str`, optional
139  The type of field to create. Valid types are the keys of the
140  afw.table.Field dictionary.
141  doc : `str`
142  Documentation for the field.
143  unit : `str`
144  Units for the field, or an empty string if unitless.
145  size : `int`
146  Size of the field; valid for string and array fields only.
147  doReplace : `bool`
148  If a field with this name already exists, replace it instead of
149  raising pex.exceptions.InvalidParameterError.
150  parse_strict : `str`
151  One of 'raise' (default), 'warn', or 'strict', indicating how to
152  handle unrecognized unit strings. See also astropy.units.Unit.
153 
154  Returns
155  -------
156  result :
157  Result of the `Field` addition.
158  """
159  if isinstance(field, str):
160  field = Field[type](field, doc=doc, units=units,
161  size=size, parse_strict=parse_strict)
162  return field._addTo(self, doReplace)
163 

◆ checkUnits()

def lsst.afw.table._schema.Schema.checkUnits (   self,
  parse_strict = 'raise' 
)
Check that all units in the Schema are valid Astropy unit strings.

Parameters
----------
parse_strict : `str`, optional
    One of 'raise' (default), 'warn', or 'strict', indicating how to
    handle unrecognized unit strings.  See also astropy.units.Unit.

Definition at line 115 of file _schema.py.

115  def checkUnits(self, parse_strict='raise'):
116  """Check that all units in the Schema are valid Astropy unit strings.
117 
118  Parameters
119  ----------
120  parse_strict : `str`, optional
121  One of 'raise' (default), 'warn', or 'strict', indicating how to
122  handle unrecognized unit strings. See also astropy.units.Unit.
123  """
124  def func(item):
125  astropy.units.Unit(item.field.getUnits(),
126  parse_strict=parse_strict)
127  self.forEach(func)
128 

◆ extract()

def lsst.afw.table._schema.Schema.extract (   self,
patterns,
**  kwargs 
)
Extract a dictionary of {<name>: <schema-item>} in which the field
names match the given shell-style glob pattern(s).

Any number of glob patterns may be passed; the result will be the
union of all the result of each glob considered separately.

Parameters
----------
patterns : Array of `str`
    List of glob patterns to use to select field names.
kwargs : `dict`
    Dictionary of additional keyword arguments.  May contain:

    ``regex`` : `str` or `re` pattern
        A regular expression to be used in addition to any
        glob patterns passed as positional arguments.  Note
        that this will be compared with re.match, not
        re.search.
    ``sub`` : `str`
        A replacement string (see re.MatchObject.expand) used
        to set the dictionary keys of any fields matched by
        regex.
    ``ordered`` : `bool`, optional
        If True, a collections.OrderedDict will be returned
        instead of a standard dict, with the order
        corresponding to the definition order of the
        Schema. Default is False.

Returns
-------
d : `dict`
    Dictionary of extracted name-schema item sets.

Raises
------
ValueError
    Raised if the `sub` keyword argument is invalid without
    the `regex` argument.

    Also raised if an unknown keyword argument is supplied.

Definition at line 164 of file _schema.py.

164  def extract(self, *patterns, **kwargs):
165  """Extract a dictionary of {<name>: <schema-item>} in which the field
166  names match the given shell-style glob pattern(s).
167 
168  Any number of glob patterns may be passed; the result will be the
169  union of all the result of each glob considered separately.
170 
171  Parameters
172  ----------
173  patterns : Array of `str`
174  List of glob patterns to use to select field names.
175  kwargs : `dict`
176  Dictionary of additional keyword arguments. May contain:
177 
178  ``regex`` : `str` or `re` pattern
179  A regular expression to be used in addition to any
180  glob patterns passed as positional arguments. Note
181  that this will be compared with re.match, not
182  re.search.
183  ``sub`` : `str`
184  A replacement string (see re.MatchObject.expand) used
185  to set the dictionary keys of any fields matched by
186  regex.
187  ``ordered`` : `bool`, optional
188  If True, a collections.OrderedDict will be returned
189  instead of a standard dict, with the order
190  corresponding to the definition order of the
191  Schema. Default is False.
192 
193  Returns
194  -------
195  d : `dict`
196  Dictionary of extracted name-schema item sets.
197 
198  Raises
199  ------
200  ValueError
201  Raised if the `sub` keyword argument is invalid without
202  the `regex` argument.
203 
204  Also raised if an unknown keyword argument is supplied.
205  """
206  if kwargs.pop("ordered", False):
207  d = collections.OrderedDict()
208  else:
209  d = dict()
210  regex = kwargs.pop("regex", None)
211  sub = kwargs.pop("sub", None)
212  if sub is not None and regex is None:
213  raise ValueError(
214  "'sub' keyword argument to extract is invalid without 'regex' argument")
215  if kwargs:
216  kwargsStr = ", ".join(kwargs.keys())
217  raise ValueError(f"Unrecognized keyword arguments for extract: {kwargsStr}")
218  for item in self:
219  trueName = item.field.getName()
220  names = [trueName]
221  for alias, target in self.getAliasMap().items():
222  if trueName.startswith(target):
223  names.append(trueName.replace(target, alias, 1))
224  for name in names:
225  if regex is not None:
226  m = re.match(regex, name)
227  if m is not None:
228  if sub is not None:
229  name = m.expand(sub)
230  d[name] = item
231  continue # continue middle loop so we don't match the same name twice
232  for pattern in patterns:
233  if fnmatch.fnmatchcase(name, pattern):
234  d[name] = item
235  break # break inner loop so we don't match the same name twice
236  return d
237 
std::vector< SchemaItem< Flag > > * items

◆ getOrderedNames()

def lsst.afw.table._schema.Schema.getOrderedNames (   self)
Return a list of field names in the order the fields were added to the Schema.

Returns
-------
names : `List`
    Field names in order they were added to the Schema.

Definition at line 93 of file _schema.py.

93  def getOrderedNames(self):
94  """Return a list of field names in the order the fields were added to the Schema.
95 
96  Returns
97  -------
98  names : `List`
99  Field names in order they were added to the Schema.
100  """
101  names = []
102 
103  def func(item):
104  names.append(item.field.getName())
105  self.forEach(func)
106  return names
107 

The documentation for this class was generated from the following file: