Bug #2122
Python 3 division error
Status: | Closed | Start date: | 06/09/2017 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assigned To: | Knödlseder Jürgen | % Done: | 100% | |
Category: | - | |||
Target version: | 1.5.0 | |||
Duration: |
Description
The following code in csresmap
logmap = self._resmap/modelmap
leads to an exception on Python 3.
Probably the GSkyMap
Python interface needs the following methods added:
GSkyMap __div__(const GSkyMap& map) GSkyMap __truediv__(const GSkyMap& map)
Recurrence
No recurrence.
History
#1 Updated by Knödlseder Jürgen over 7 years ago
- Target version changed from 1.4.0 to 1.5.0
#2 Updated by Knödlseder Jürgen over 7 years ago
Following https://stackoverflow.com/questions/21692065/python-class-div-issue, __truediv__
is Python 3.x while __div__
is Python 2.x. Hence we need both to support Python 2.x and 3.x.
Here is what is implemented in GMatrix.i
:
// Python 2.x GMatrix __div__(const double &scalar) { return ((*self) / scalar); } // Python 3.x GMatrix __truediv__(const double& scalar) const { return ((*self) / scalar); } // Python 2.x operator/= GMatrix __idiv__(const double& scalar) { self->operator/=(scalar); return (*self); } // Python 3.x operator/= GMatrix __itruediv__(const double& scalar) { self->operator/=(scalar); return (*self); }
For the moment, GSkyMap.i
has
// Python 2.x operator/= GSkyMap __idiv__(const GSkyMap& map) { self->operator/=(map); return (*self); } // Python 3.x operator/= GSkyMap __itruediv__(const GSkyMap& map) { self->operator/=(map); return (*self); } // Python 2.x operator/= GSkyMap __idiv__(const double& factor) { self->operator/=(factor); return (*self); } // Python 3.x operator/= GSkyMap __itruediv__(const double& factor) { self->operator/=(factor); return (*self); }
hence we need to add
// Python 2.x operator/= GSkyMap __div__(const GSkyMap& map) { return ((*self) / map); } // Python 3.x operator/= GSkyMap __truediv__(const GSkyMap& map) { return ((*self) / map); }and remove
GSkyMap operator/(const GSkyMap& map) const;
#3 Updated by Knödlseder Jürgen about 7 years ago
- Status changed from New to Closed
- Assigned To set to Knödlseder Jürgen
- % Done changed from 0 to 100
Operaters were added and code was merged into devel
.