Source code for gon.base

from ground.base import (Context as _Context,
                         get_context as _get_context,
                         set_context as _set_context)
from ground.hints import Scalar as _Scalar

from .core.angle import (Angle as _Angle,
                         Kind,
                         Orientation)
from .core.compound import (Compound,
                            Indexable,
                            Linear,
                            Location,
                            Relation,
                            Shaped)
from .core.contour import Contour as _Contour
from .core.empty import Empty as _Empty
from .core.geometry import Geometry
from .core.mix import Mix as _Mix
from .core.multipoint import Multipoint as _Multipoint
from .core.multipolygon import Multipolygon as _Multipolygon
from .core.multisegment import Multisegment as _Multisegment
from .core.point import Point as _Point
from .core.polygon import (Polygon as _Polygon,
                           Triangulation)
from .core.segment import Segment as _Segment
from .core.vector import Vector as _Vector

Compound = Compound
Geometry = Geometry
Indexable = Indexable
Linear = Linear
Shaped = Shaped
Compound.__module__ = __name__
Geometry.__module__ = __name__
Indexable.__module__ = __name__
Linear.__module__ = __name__
Shaped.__module__ = __name__

Kind = Kind
Location = Location
Orientation = Orientation
Relation = Relation

Triangulation = Triangulation


class _ContextMixin:
    _context = ...  # type: _Context
    __slots__ = ()


[docs]class Empty(_ContextMixin, _Empty): __slots__ = ()
#: Empty geometry instance, equivalent of empty set. EMPTY = Empty()
[docs]class Point(_ContextMixin, _Point[_Scalar]): __slots__ = ()
[docs]class Contour(_ContextMixin, _Contour[_Scalar]): __slots__ = ()
[docs]class Mix(_ContextMixin, _Mix[_Scalar]): __slots__ = ()
[docs]class Multipoint(_ContextMixin, _Multipoint[_Scalar]): __slots__ = ()
[docs]class Segment(_ContextMixin, _Segment[_Scalar]): __slots__ = ()
[docs]class Multisegment(_ContextMixin, _Multisegment[_Scalar]): __slots__ = ()
[docs]class Polygon(_ContextMixin, _Polygon[_Scalar]): __slots__ = ()
[docs]class Multipolygon(_ContextMixin, _Multipolygon[_Scalar]): __slots__ = ()
[docs]class Angle(_ContextMixin, _Angle[_Scalar]): __slots__ = ()
[docs]class Vector(_ContextMixin, _Vector[_Scalar]): __slots__ = ()
_context = _get_context().replace(contour_cls=Contour, empty_cls=Empty, mix_cls=Mix, multipoint_cls=Multipoint, multipolygon_cls=Multipolygon, multisegment_cls=Multisegment, point_cls=Point, polygon_cls=Polygon, segment_cls=Segment) _ContextMixin._context = _context _set_context(_context)