LSST Applications g063fba187b+66a50001ff,g0f08755f38+1a22dc2551,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g217e2c1bcf+12e87a5bd8,g246886dfd9+466c7b6c06,g28da252d5a+858b171e04,g2bbee38e9b+404b60ec9b,g2bc492864f+404b60ec9b,g3156d2b45e+6e55a43351,g347aa1857d+404b60ec9b,g35bb328faa+a8ce1bb630,g3a166c0a6a+404b60ec9b,g3e281a1b8c+c5dd892a6c,g414038480c+6b9177ef31,g41af890bb2+70bea58702,g599934f4f4+b8c5400ca5,g781aacb6e4+a8ce1bb630,g7af13505b9+b5b9cefdb8,g80478fca09+c2997882f3,g82479be7b0+8974e6af0f,g858d7b2824+1a22dc2551,g89c8672015+f4add4ffd5,g8f1c07a47a+de51c9b0a5,g9125e01d80+a8ce1bb630,ga5288a1d22+b66f8cf76b,gb58c049af0+d64f4d3760,gc28159a63d+404b60ec9b,gcab2d0539d+66cf1de5d4,gcf0d15dbbd+12cb7e2563,gda6a2b7d83+12cb7e2563,gdaeeff99f8+1711a396fd,ge79ae78c31+404b60ec9b,gef2f8181fd+414189b318,gf0baf85859+c1f95f4921,gf0c06eb49c+1a22dc2551,gfa517265be+1a22dc2551,gfa999e8aa5+17cd334064,v28.0.0.rc2
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst.afw.table._schema.Schema Class Reference

Public Member Functions

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

Detailed Description

Definition at line 91 of file _schema.py.

Member Function Documentation

◆ __iter__()

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__()

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()

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.
units : `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 units : `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()

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()

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()

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: