#!/usr/bin/env python3
"""


See EOF for license/metadata/notes as applicable
"""

##-- builtin imports
from __future__ import annotations

# import abc
import datetime
import enum
import functools as ftz
import itertools as itz
import logging as logmod
import pathlib as pl
import re
import time
import types
import weakref
# from copy import deepcopy
# from dataclasses import InitVar, dataclass, field
from typing import (TYPE_CHECKING, Any, Callable, ClassVar, Final, Generic,
                    Iterable, Iterator, Mapping, Match, MutableMapping,
                    Protocol, Sequence, Tuple, TypeAlias, TypeGuard, TypeVar,
                    cast, final, overload, runtime_checkable, Generator)
from uuid import UUID, uuid1

##-- end builtin imports

##-- lib imports
import more_itertools as mitz
##-- end lib imports

##-- logging
logging = logmod.getLogger(__name__)
##-- end logging

@dataclass
class LineSweepResult:
    """ Utility class to collect the start and end sets of halfedges,
    along with the set of intersections contained within halfedges,
    and the vertex describing that point.

    Starting and Ending are defined from Top -> Bottom, Left -> Right
    """

    vertex  : Vertex   = field()
    start   : HalfEdge = field()
    contain : Any      = field()
    end     : HalfEdge = field()

    def __repr__(self):
        return f"<Intersection: {self.vertex}\nStart: {self.start}\nContain: {self.contain}\nEnd: {self.end}>"
