Source code for lsst.afw.geom.coordinates.coordinatesContinued

#
# LSST Data Management System
# Copyright 2008-2017 LSST/AURA.
#
# This product includes software developed by the
# LSST Project (http://www.lsst.org/).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the LSST License Statement and
# the GNU General Public License along with this program.  If not,
# see <http://www.lsstcorp.org/LegalNotices/>.
#

__all__ = ["CoordinateExpr", "Extent", "ExtentI", "ExtentD",
           "Point", "PointI", "PointD"]

from lsst.utils import TemplateMeta

from . import coordinates


def _coordinateStr(self):
    return "({})".format(", ".join("%0.5g" % v for v in self))


def _coordinateRepr(self):
    return "{}({})".format(type(self).__name__,
                           ", ".join("%0.10g" % v for v in self))


def _coordinateReduce(self):
    return (type(self), tuple(self))


[docs]class CoordinateExpr(metaclass=TemplateMeta): """Abstract base class and factory for CoordinateExpr objects. """ TEMPLATE_PARAMS = ("dimensions", ) __str__ = _coordinateStr __repr__ = _coordinateRepr __reduce__ = _coordinateReduce
CoordinateExpr.register(2, coordinates.CoordinateExpr2) CoordinateExpr.register(3, coordinates.CoordinateExpr3)
[docs]class Extent(metaclass=TemplateMeta): """Abstract base class and factory for Extent objects. """ TEMPLATE_PARAMS = ("dtype", "dimensions") TEMPLATE_DEFAULTS = (None, 2) __str__ = _coordinateStr __repr__ = _coordinateRepr __reduce__ = _coordinateReduce
Extent.register((int, 2), coordinates.Extent2I) Extent.register((float, 2), coordinates.Extent2D) Extent.register((int, 3), coordinates.Extent3I) Extent.register((float, 3), coordinates.Extent3D) ExtentI = coordinates.Extent2I ExtentD = coordinates.Extent2D
[docs]class Point(metaclass=TemplateMeta): """Abstract base class and factory for Point objects. """ TEMPLATE_PARAMS = ("dtype", "dimensions") TEMPLATE_DEFAULTS = (None, 2) __str__ = _coordinateStr __repr__ = _coordinateRepr __reduce__ = _coordinateReduce
Point.register((int, 2), coordinates.Point2I) Point.register((float, 2), coordinates.Point2D) Point.register((int, 3), coordinates.Point3I) Point.register((float, 3), coordinates.Point3D) PointI = coordinates.Point2I PointD = coordinates.Point2D