22 __all__ = [
"CoordinateExpr", 
"Extent", 
"ExtentI", 
"ExtentD",
 
   23            "Point", 
"PointI", 
"PointD"]
 
   30 def _coordinateStr(self):
 
   31     return "({})".
format(
", ".join(
"%0.5g" % v 
for v 
in self))
 
   34 def _coordinateRepr(self):
 
   36                            ", ".join(
"%0.10g" % v 
for v 
in self))
 
   39 def _coordinateReduce(self):
 
   40     return (
type(self), tuple(self))
 
   44     """Abstract base class and factory for CoordinateExpr objects. 
   46     TEMPLATE_PARAMS = (
"dimensions", )
 
   48     __str__ = _coordinateStr
 
   49     __repr__ = _coordinateRepr
 
   50     __reduce__ = _coordinateReduce
 
   53 CoordinateExpr.register(2, _geom.CoordinateExpr2)
 
   54 CoordinateExpr.register(3, _geom.CoordinateExpr3)
 
   57 class Extent(metaclass=TemplateMeta):
 
   58     """Abstract base class and factory for Extent objects. 
   60     TEMPLATE_PARAMS = (
"dtype", 
"dimensions")
 
   61     TEMPLATE_DEFAULTS = (
None, 2)
 
   63     __str__ = _coordinateStr
 
   64     __repr__ = _coordinateRepr
 
   65     __reduce__ = _coordinateReduce
 
   68 Extent.register((int, 2), _geom.Extent2I)
 
   69 Extent.register((float, 2), _geom.Extent2D)
 
   70 Extent.register((int, 3), _geom.Extent3I)
 
   71 Extent.register((float, 3), _geom.Extent3D)
 
   72 ExtentI = _geom.Extent2I
 
   73 ExtentD = _geom.Extent2D
 
   76 class Point(metaclass=TemplateMeta):
 
   77     """Abstract base class and factory for Point objects. 
   79     TEMPLATE_PARAMS = (
"dtype", 
"dimensions")
 
   80     TEMPLATE_DEFAULTS = (
None, 2)
 
   82     __str__ = _coordinateStr
 
   83     __repr__ = _coordinateRepr
 
   84     __reduce__ = _coordinateReduce
 
   87 Point.register((int, 2), _geom.Point2I)
 
   88 Point.register((float, 2), _geom.Point2D)
 
   89 Point.register((int, 3), _geom.Point3I)
 
   90 Point.register((float, 3), _geom.Point3D)
 
   91 PointI = _geom.Point2I
 
   92 PointD = _geom.Point2D