""" inire Wave-router """ from collections.abc import Callable from .geometry.primitives import Port as Port # noqa: PLC0414 from .model import ( CongestionOptions as CongestionOptions, DiagnosticsOptions as DiagnosticsOptions, NetSpec as NetSpec, ObjectiveWeights as ObjectiveWeights, RefinementOptions as RefinementOptions, RoutingOptions as RoutingOptions, RoutingProblem as RoutingProblem, SearchOptions as SearchOptions, ) # noqa: PLC0414 from .results import ( # noqa: PLC0414 ComponentConflictTrace as ComponentConflictTrace, ConflictTraceEntry as ConflictTraceEntry, FrontierPruneSample as FrontierPruneSample, IterationNetAttemptTrace as IterationNetAttemptTrace, IterationTraceEntry as IterationTraceEntry, NetConflictTrace as NetConflictTrace, NetFrontierTrace as NetFrontierTrace, RoutingResult as RoutingResult, RoutingRunResult as RoutingRunResult, ) from .seeds import Bend90Seed as Bend90Seed, PathSeed as PathSeed, SBendSeed as SBendSeed, StraightSeed as StraightSeed # noqa: PLC0414 __author__ = 'Jan Petykiewicz' __version__ = '0.1' def route( problem: RoutingProblem, *, options: RoutingOptions | None = None, iteration_callback: Callable[[int, dict[str, RoutingResult]], None] | None = None, ) -> RoutingRunResult: from .router._stack import build_routing_stack resolved_options = RoutingOptions() if options is None else options stack = build_routing_stack(problem, resolved_options) finder = stack.finder results = finder.route_all(iteration_callback=iteration_callback) return RoutingRunResult( results_by_net=results, metrics=finder.metrics.snapshot(), expanded_nodes=tuple(finder.accumulated_expanded_nodes), conflict_trace=tuple(finder.conflict_trace), frontier_trace=tuple(finder.frontier_trace), iteration_trace=tuple(finder.iteration_trace), ) __all__ = [ "Bend90Seed", "CongestionOptions", "ComponentConflictTrace", "ConflictTraceEntry", "DiagnosticsOptions", "NetSpec", "NetConflictTrace", "NetFrontierTrace", "ObjectiveWeights", "PathSeed", "Port", "FrontierPruneSample", "IterationNetAttemptTrace", "IterationTraceEntry", "RefinementOptions", "RoutingOptions", "RoutingProblem", "RoutingResult", "RoutingRunResult", "SBendSeed", "SearchOptions", "StraightSeed", "route", ]