Loading [MathJax]/extensions/tex2jax.js
LSST Applications g04dff08e69+fafbcb10e2,g0d33ba9806+3d21495239,g0fba68d861+2ea2a6c4b0,g1e78f5e6d3+b3e27b8ebc,g1ec0fe41b4+f536777771,g1fd858c14a+ae46bc2a71,g35bb328faa+fcb1d3bbc8,g4af146b050+9c38a215af,g4d2262a081+154bb484c1,g53246c7159+fcb1d3bbc8,g5a012ec0e7+b20b785ecb,g60b5630c4e+3d21495239,g6273192d42+8013d063df,g67b6fd64d1+4086c0989b,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g7b71ed6315+fcb1d3bbc8,g87b7deb4dc+04106995ce,g8852436030+54b48a5987,g89139ef638+4086c0989b,g9125e01d80+fcb1d3bbc8,g94187f82dc+3d21495239,g989de1cb63+4086c0989b,g9d31334357+3d21495239,g9f33ca652e+83205baa3c,gabe3b4be73+1e0a283bba,gabf8522325+fa80ff7197,gb1101e3267+85d1f90f4c,gb58c049af0+f03b321e39,gb89ab40317+4086c0989b,gc0bb628dac+d11454dffd,gcf25f946ba+54b48a5987,gd6cbbdb0b4+af3c3595f5,gd9a9a58781+fcb1d3bbc8,gde0f65d7ad+1b29a75088,ge278dab8ac+d65b3c2b70,ge410e46f29+4086c0989b,gf67bdafdda+4086c0989b,v29.0.0.rc6
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
lsst.pex.config.history Namespace Reference

Classes

class  Color
 

Functions

 _colorize (text, category)
 
 format (config, name=None, writeSourceLine=True, prefix="", verbose=False)
 

Function Documentation

◆ _colorize()

lsst.pex.config.history._colorize ( text,
category )
protected

Definition at line 168 of file history.py.

168def _colorize(text, category):
169 text = Color(text, category)
170 return str(text)
171
172

◆ format()

lsst.pex.config.history.format ( config,
name = None,
writeSourceLine = True,
prefix = "",
verbose = False )
Format the history record for a configuration, or a specific
configuration field.

Parameters
----------
config : `lsst.pex.config.Config`
    A configuration instance.
name : `str`, optional
    The name of a configuration field to specifically format the history
    for. Otherwise the history of all configuration fields is printed.
writeSourceLine : `bool`, optional
    If `True`, prefix each printout line with the code filename and line
    number where the configuration event occurred. Default is `True`.
prefix : `str`, optional
    A prefix for to add to each printout line. This prefix occurs first,
    even before any source line. The default is an empty string.
verbose : `bool`, optional
    Default is `False`.

Definition at line 173 of file history.py.

173def format(config, name=None, writeSourceLine=True, prefix="", verbose=False):
174 """Format the history record for a configuration, or a specific
175 configuration field.
176
177 Parameters
178 ----------
179 config : `lsst.pex.config.Config`
180 A configuration instance.
181 name : `str`, optional
182 The name of a configuration field to specifically format the history
183 for. Otherwise the history of all configuration fields is printed.
184 writeSourceLine : `bool`, optional
185 If `True`, prefix each printout line with the code filename and line
186 number where the configuration event occurred. Default is `True`.
187 prefix : `str`, optional
188 A prefix for to add to each printout line. This prefix occurs first,
189 even before any source line. The default is an empty string.
190 verbose : `bool`, optional
191 Default is `False`.
192 """
193 if name is None:
194 for i, name in enumerate(config.history.keys()):
195 if i > 0:
196 print()
197 print(format(config, name))
198
199 outputs = []
200 for value, stack, _ in config.history.get(name, []):
201 output = []
202 for frame in stack:
203 if frame.function in (
204 "__new__",
205 "__set__",
206 "__setattr__",
207 "execfile",
208 "wrapper",
209 ) or os.path.split(frame.filename)[1] in ("argparse.py", "argumentParser.py"):
210 if not verbose:
211 continue
212
213 line = []
214 if writeSourceLine:
215 line.append(
216 [
217 f"{frame.filename}:{frame.lineno}",
218 "FILE",
219 ]
220 )
221
222 line.append(
223 [
224 frame.content,
225 "TEXT",
226 ]
227 )
228 if False:
229 line.append(
230 [
231 frame.function,
232 "FUNCTION_NAME",
233 ]
234 )
235
236 output.append(line)
237
238 outputs.append([value, output])
239
240 if outputs:
241 # Find the maximum widths of the value and file:lineNo fields.
242 if writeSourceLine:
243 sourceLengths = []
244 for _, output in outputs:
245 sourceLengths.append(max([len(x[0][0]) for x in output]))
246 sourceLength = max(sourceLengths)
247
248 valueLength = len(prefix) + max([len(str(value)) for value, _ in outputs])
249
250 # Generate the config history content.
251 msg = []
252 fullname = f"{config._name}.{name}" if config._name is not None else name
253 msg.append(_colorize(re.sub(r"^root\.", "", fullname), "NAME"))
254 for value, output in outputs:
255 line = prefix + _colorize(f"{value:<{valueLength}}", "VALUE") + " "
256 for i, vt in enumerate(output):
257 if writeSourceLine:
258 vt[0][0] = f"{vt[0][0]:<{sourceLength}}"
259
260 output[i] = " ".join([_colorize(v, t) for v, t in vt])
261
262 line += f"\n{'':>{valueLength + 1}}".join(output)
263 msg.append(line)
264
265 return "\n".join(msg)