lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
afw
image
_image
_disableArithmetic.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
from
._imageLib
import
ImageSliceF, ImageSliceD
23
24
__all__ = (
"disableImageArithmetic"
,
"disableMaskArithmetic"
)
25
26
27
def
wrapNotImplemented
(cls, attr):
28
"""Wrap a method providing a helpful error message about image arithmetic
29
30
Parameters
31
----------
32
cls : `type`
33
Class in which the method is to be defined.
34
attr : `str`
35
Name of the method.
36
37
Returns
38
-------
39
method : callable
40
Wrapped method.
41
"""
42
existing = getattr(cls, attr,
None
)
43
44
def
notImplemented(self, other):
45
"""Provide a helpful error message about image arithmetic
46
47
Unless we're operating on an ImageSlice, in which case it might be
48
defined.
49
50
Parameters
51
----------
52
self : subclass of `lsst.afw.image.ImageBase`
53
Image someone's attempting to do arithmetic with.
54
other : anything
55
The operand of the arithmetic operation.
56
"""
57
if
existing
is
not
None
and
isinstance(other, (ImageSliceF, ImageSliceD)):
58
return
existing(self, other)
59
raise
NotImplementedError(
"This arithmetic operation is not implemented, in order to prevent the "
60
"accidental proliferation of temporaries. Please use the in-place "
61
"arithmetic operations (e.g., += instead of +) or operate on the "
62
"underlying arrays."
)
63
return
notImplemented
64
65
66
def
disableImageArithmetic
(cls):
67
"""Add helpful error messages about image arithmetic"""
68
for
attr
in
(
"__add__"
,
"__sub__"
,
"__mul__"
,
"__truediv__"
,
69
"__radd__"
,
"__rsub__"
,
"__rmul__"
,
"__rtruediv__"
):
70
setattr(cls, attr,
wrapNotImplemented
(cls, attr))
71
72
73
def
disableMaskArithmetic
(cls):
74
"""Add helpful error messages about mask arithmetic"""
75
for
attr
in
(
"__or__"
,
"__and__"
,
"__xor__"
,
76
"__ror__"
,
"__rand__"
,
"__rxor__"
):
77
setattr(cls, attr,
wrapNotImplemented
(cls, attr))
lsst::afw::image._image._disableArithmetic.disableMaskArithmetic
disableMaskArithmetic(cls)
Definition
_disableArithmetic.py:73
lsst::afw::image._image._disableArithmetic.wrapNotImplemented
wrapNotImplemented(cls, attr)
Definition
_disableArithmetic.py:27
lsst::afw::image._image._disableArithmetic.disableImageArithmetic
disableImageArithmetic(cls)
Definition
_disableArithmetic.py:66
Generated on
for lsst.afw by
1.17.0