Loading [MathJax]/extensions/tex2jax.js
LSST Applications 29.0.1,g0fba68d861+b943c38344,g1ec0fe41b4+f536777771,g1fd858c14a+a9301854fb,g35bb328faa+fcb1d3bbc8,g4af146b050+7e9a2de16a,g4d2262a081+bc578d85c1,g53246c7159+fcb1d3bbc8,g56a49b3a55+9c12191793,g5a012ec0e7+3632fc3ff3,g60b5630c4e+9fd1a614b8,g67b6fd64d1+ed4b5058f4,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g8352419a5c+fcb1d3bbc8,g87b7deb4dc+4c2feab6d7,g8852436030+e5453db6e6,g89139ef638+ed4b5058f4,g8e3bb8577d+ea375a93e1,g9125e01d80+fcb1d3bbc8,g94187f82dc+9fd1a614b8,g95f8561545+9fd1a614b8,g989de1cb63+ed4b5058f4,g9d31334357+9fd1a614b8,g9f33ca652e+aa92e8646f,gabe3b4be73+1e0a283bba,gabf8522325+fa80ff7197,gb1101e3267+9288031c14,gb58c049af0+f03b321e39,gb89ab40317+ed4b5058f4,gcf25f946ba+e5453db6e6,gcf6002c91b+87cebee2a2,gd6cbbdb0b4+bb83cc51f8,gde0f65d7ad+5b57b4d45c,ge278dab8ac+d65b3c2b70,ge410e46f29+ed4b5058f4,gf23fb2af72+b7cae620c0,gf5e32f922b+fcb1d3bbc8,gf67bdafdda+ed4b5058f4
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
lsst.pex.config.config Namespace Reference

Classes

class  _PexConfigGenericAlias
 
class  Config
 
class  ConfigMeta
 
class  Field
 
class  FieldValidationError
 
class  RecordingImporter
 
class  UnexpectedProxyUsageError
 

Functions

 _joinNamePath (prefix=None, name=None, index=None)
 
 _autocast (x, dtype)
 
 _typeStr (x)
 
 _yaml_config_representer (dumper, data)
 
 _yaml_config_constructor (loader, node)
 
 _classFromPython (config_py)
 
 unreduceConfig (cls_, stream)
 

Variables

 yaml = None
 
tuple YamlLoaders = (yaml.Loader, yaml.FullLoader, yaml.SafeLoader, yaml.UnsafeLoader)
 
 doImport = None
 
 FieldTypeVar = TypeVar("FieldTypeVar")
 
 _yaml_config_constructor
 
 Loader
 

Function Documentation

◆ _autocast()

lsst.pex.config.config._autocast ( x,
dtype )
protected
Cast a value to a type, if appropriate.

Parameters
----------
x : object
    A value.
dtype : type
    Data type, such as `float`, `int`, or `str`.

Returns
-------
values : object
    If appropriate, the returned value is ``x`` cast to the given type
    ``dtype``. If the cast cannot be performed the original value of
    ``x`` is returned.

Notes
-----
Will convert numpy scalar types to the standard Python equivalents.

Definition at line 122 of file config.py.

122def _autocast(x, dtype):
123 """Cast a value to a type, if appropriate.
124
125 Parameters
126 ----------
127 x : object
128 A value.
129 dtype : type
130 Data type, such as `float`, `int`, or `str`.
131
132 Returns
133 -------
134 values : object
135 If appropriate, the returned value is ``x`` cast to the given type
136 ``dtype``. If the cast cannot be performed the original value of
137 ``x`` is returned.
138
139 Notes
140 -----
141 Will convert numpy scalar types to the standard Python equivalents.
142 """
143 if dtype is float and isinstance(x, numbers.Real):
144 return float(x)
145 if dtype is int and isinstance(x, numbers.Integral):
146 return int(x)
147 return x
148
149

◆ _classFromPython()

lsst.pex.config.config._classFromPython ( config_py)
protected
Return the Config subclass required by this Config serialization.

Parameters
----------
config_py : `str`
    A serialized form of the Config as created by
    `Config.saveToStream`.

Returns
-------
cls : `type`
    The `Config` subclass associated with this config.

Definition at line 1694 of file config.py.

1694def _classFromPython(config_py):
1695 """Return the Config subclass required by this Config serialization.
1696
1697 Parameters
1698 ----------
1699 config_py : `str`
1700 A serialized form of the Config as created by
1701 `Config.saveToStream`.
1702
1703 Returns
1704 -------
1705 cls : `type`
1706 The `Config` subclass associated with this config.
1707 """
1708 # standard serialization has the form:
1709 # import config.class
1710 # assert type(config) is config.class.Config, ...
1711 # Older files use "type(config)==" instead.
1712 # We want to parse these two lines so we can get the class itself
1713
1714 # Do a single regex to avoid large string copies when splitting a
1715 # large config into separate lines.
1716 # The assert regex cannot be greedy because the assert error string
1717 # can include both "," and " is ".
1718 matches = re.search(r"^import ([\w.]+)\nassert type\‍(\S+\‍)(?:\s*==\s*| is )(.*?),", config_py)
1719
1720 if not matches:
1721 first_line, second_line, _ = config_py.split("\n", 2)
1722 raise ValueError(
1723 f"First two lines did not match expected form. Got:\n - {first_line}\n - {second_line}"
1724 )
1725
1726 module_name = matches.group(1)
1727 module = importlib.import_module(module_name)
1728
1729 # Second line
1730 full_name = matches.group(2)
1731
1732 # Remove the module name from the full name
1733 if not full_name.startswith(module_name):
1734 raise ValueError(f"Module name ({module_name}) inconsistent with full name ({full_name})")
1735
1736 # if module name is a.b.c and full name is a.b.c.d.E then
1737 # we need to remove a.b.c. and iterate over the remainder
1738 # The +1 is for the extra dot after a.b.c
1739 remainder = full_name[len(module_name) + 1 :]
1740 components = remainder.split(".")
1741 pytype = module
1742 for component in components:
1743 pytype = getattr(pytype, component)
1744 return pytype
1745
1746

◆ _joinNamePath()

lsst.pex.config.config._joinNamePath ( prefix = None,
name = None,
index = None )
protected
Generate nested configuration names.

Definition at line 107 of file config.py.

107def _joinNamePath(prefix=None, name=None, index=None):
108 """Generate nested configuration names."""
109 if not prefix and not name:
110 raise ValueError("Invalid name: cannot be None")
111 elif not name:
112 name = prefix
113 elif prefix and name:
114 name = prefix + "." + name
115
116 if index is not None:
117 return f"{name}[{index!r}]"
118 else:
119 return name
120
121

◆ _typeStr()

lsst.pex.config.config._typeStr ( x)
protected
Generate a fully-qualified type name.

Returns
-------
`str`
    Fully-qualified type name.

Notes
-----
This function is used primarily for writing config files to be executed
later upon with the 'load' function.

Definition at line 150 of file config.py.

150def _typeStr(x):
151 """Generate a fully-qualified type name.
152
153 Returns
154 -------
155 `str`
156 Fully-qualified type name.
157
158 Notes
159 -----
160 This function is used primarily for writing config files to be executed
161 later upon with the 'load' function.
162 """
163 if hasattr(x, "__module__") and hasattr(x, "__name__"):
164 xtype = x
165 else:
166 xtype = type(x)
167 if xtype.__module__ == "builtins":
168 return xtype.__name__
169 else:
170 return f"{xtype.__module__}.{xtype.__name__}"
171
172

◆ _yaml_config_constructor()

lsst.pex.config.config._yaml_config_constructor ( loader,
node )
protected
Construct a config from YAML.

Definition at line 195 of file config.py.

195 def _yaml_config_constructor(loader, node):
196 """Construct a config from YAML."""
197 config_py = loader.construct_scalar(node)
198 return Config._fromPython(config_py)
199

◆ _yaml_config_representer()

lsst.pex.config.config._yaml_config_representer ( dumper,
data )
protected
Represent a Config object in a form suitable for YAML.

Stores the serialized stream as a scalar block string.

Definition at line 175 of file config.py.

175 def _yaml_config_representer(dumper, data):
176 """Represent a Config object in a form suitable for YAML.
177
178 Stores the serialized stream as a scalar block string.
179 """
180 stream = io.StringIO()
181 data.saveToStream(stream)
182 config_py = stream.getvalue()
183
184 # Strip multiple newlines from the end of the config
185 # This simplifies the YAML to use | and not |+
186 config_py = config_py.rstrip() + "\n"
187
188 # Trailing spaces force pyyaml to use non-block form.
189 # Remove the trailing spaces so it has no choice
190 config_py = re.sub(r"\s+$", "\n", config_py, flags=re.MULTILINE)
191
192 # Store the Python as a simple scalar
193 return dumper.represent_scalar("lsst.pex.config.Config", config_py, style="|")
194

◆ unreduceConfig()

lsst.pex.config.config.unreduceConfig ( cls_,
stream )
Create a `~lsst.pex.config.Config` from a stream.

Parameters
----------
cls_ : `lsst.pex.config.Config`-type
    A `lsst.pex.config.Config` type (not an instance) that is instantiated
    with configurations in the ``stream``.
stream : file-like object, `str`, or `~types.CodeType`
    Stream containing configuration override code.

Returns
-------
config : `lsst.pex.config.Config`
    Config instance.

See Also
--------
lsst.pex.config.Config.loadFromStream

Definition at line 1747 of file config.py.

1747def unreduceConfig(cls_, stream):
1748 """Create a `~lsst.pex.config.Config` from a stream.
1749
1750 Parameters
1751 ----------
1752 cls_ : `lsst.pex.config.Config`-type
1753 A `lsst.pex.config.Config` type (not an instance) that is instantiated
1754 with configurations in the ``stream``.
1755 stream : file-like object, `str`, or `~types.CodeType`
1756 Stream containing configuration override code.
1757
1758 Returns
1759 -------
1760 config : `lsst.pex.config.Config`
1761 Config instance.
1762
1763 See Also
1764 --------
1765 lsst.pex.config.Config.loadFromStream
1766 """
1767 config = cls_()
1768 config.loadFromStream(stream)
1769 return config

Variable Documentation

◆ _yaml_config_constructor

lsst.pex.config.config._yaml_config_constructor
protected

Definition at line 203 of file config.py.

◆ doImport

lsst.pex.config.config.doImport = None

Definition at line 75 of file config.py.

◆ FieldTypeVar

lsst.pex.config.config.FieldTypeVar = TypeVar("FieldTypeVar")

Definition at line 98 of file config.py.

◆ Loader

lsst.pex.config.config.Loader

Definition at line 203 of file config.py.

◆ yaml

lsst.pex.config.config.yaml = None

Definition at line 58 of file config.py.

◆ YamlLoaders

tuple lsst.pex.config.config.YamlLoaders = (yaml.Loader, yaml.FullLoader, yaml.SafeLoader, yaml.UnsafeLoader)

Definition at line 64 of file config.py.