lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
afw
typehandling
_SimpleGenericMap.py
Go to the documentation of this file.
1
# This file is part of afw.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (https://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22
__all__ = [
"SimpleGenericMap"
]
23
24
from
lsst.utils
import
continueClass
25
from
._typehandling
import
SimpleGenericMapS
26
from
._GenericMap
import
MutableGenericMap, AutoKeyMeta
27
28
29
class
SimpleGenericMap
(
MutableGenericMap
, metaclass=AutoKeyMeta):
30
"""A `dict`-like `~collections.abc.MutableMapping` for use when sharing a
31
map between C++ and Python.
32
33
For compatibility with C++, ``SimpleGenericMap`` has the following
34
restrictions:
35
36
- all keys must be of the same type
37
- values must be built-in types or subclasses of
38
`lsst.afw.typehandling.Storable`. Almost any user-defined class in
39
C++ or Python can have `~lsst.afw.typehandling.Storable` as a mixin.
40
41
As a safety precaution, `~lsst.afw.typehandling.Storable` objects that are
42
added from C++ may be copied when you retrieve them from Python, making it
43
impossible to modify them in-place. This issue does not affect objects that
44
are added from Python, or objects that are always passed by
45
:cpp:class:`shared_ptr` in C++.
46
47
Parameters
48
----------
49
mapping : `collections.abc.Mapping`, optional
50
iterable : iterable, optional
51
dtype : `type`, optional
52
The type of key the map accepts. Not required if ``mapping`` or
53
``iterable`` is provided.
54
**kwargs
55
Aside from the ``dtype`` keyword, a ``SimpleGenericMap`` takes the same
56
input arguments as `dict`.
57
"""
58
@classmethod
59
def
fromkeys
(cls, iterable, value=None):
60
return
cls({key: value
for
key
in
iterable})
61
62
63
SimpleGenericMap.register(str, SimpleGenericMapS)
64
65
66
# pybind11-generated constructor, can only create empty map
67
_oldInit = SimpleGenericMapS.__init__
68
69
70
@continueClass
71
class
SimpleGenericMapS
:
# noqa: F811
72
def
__init__
(self, source=None, **kwargs):
73
_oldInit
(self)
74
if
source:
75
self.update(source, **kwargs)
76
else
:
77
self.update(**kwargs)
lsst::afw::typehandling._GenericMap.MutableGenericMap
Definition
_GenericMap.py:77
lsst::afw::typehandling._SimpleGenericMap.SimpleGenericMap
Definition
_SimpleGenericMap.py:29
lsst::afw::typehandling._SimpleGenericMap.SimpleGenericMap.fromkeys
fromkeys(cls, iterable, value=None)
Definition
_SimpleGenericMap.py:59
lsst::afw::typehandling._SimpleGenericMap.SimpleGenericMapS
Definition
_SimpleGenericMap.py:71
lsst::afw::typehandling._SimpleGenericMap.SimpleGenericMapS.__init__
__init__(self, source=None, **kwargs)
Definition
_SimpleGenericMap.py:72
lsst::afw::typehandling._SimpleGenericMap._oldInit
_oldInit
Definition
_SimpleGenericMap.py:67
lsst.utils
Generated on
for lsst.afw by
1.17.0