Rename to rpmroute

The router began as a port of FreeRouting and has grown its own engine
(negotiated congestion, tree nets, exact checks, axis escapes), and
'freeroute' was one letter from the project it no longer follows. The
package, module and command are now rpmroute; the freeroute command stays
as an alias, and the RPMROUTE / RPMROUTE_ORACLE_JAVA variables fall back
to the old FREEROUTE names. Version 2026.10.07. Routing is unchanged: a
PCBench board routes to a byte-identical session either way.
This commit is contained in:
2026-10-07 14:10:36 -06:00
parent 45aee463a8
commit a6aa1991a1
95 changed files with 346 additions and 334 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ containment and degenerate (empty / point / segment) tiles.
from __future__ import annotations
from freeroute.geometry import IntBox, IntPoint, IntVector, RationalPoint
from rpmroute.geometry import IntBox, IntPoint, IntVector, RationalPoint
def test_measures():
+1 -1
View File
@@ -5,7 +5,7 @@ Oracles hand-derived from ``geometry/planar/{Direction,IntDirection}.java``.
from __future__ import annotations
from freeroute.geometry import Direction, IntDirection, IntPoint, IntVector, Side
from rpmroute.geometry import Direction, IntDirection, IntPoint, IntVector, Side
def test_normalized_direction_reduces_by_gcd():
+2 -2
View File
@@ -5,7 +5,7 @@ Oracles hand-derived from ``geometry/planar/Line.java``.
from __future__ import annotations
from freeroute.geometry import IntPoint, Line, RationalPoint, Side
from rpmroute.geometry import IntPoint, Line, RationalPoint, Side
def test_side_of_point():
@@ -79,7 +79,7 @@ def test_intersection_approx_matches_exact():
def test_translate_and_opposite():
line = Line.from_coords(0, 0, 4, 0)
assert line.opposite().direction().equals(line.direction()) is False
from freeroute.geometry import IntVector
from rpmroute.geometry import IntVector
moved = line.translate_by(IntVector(0, 5))
assert moved.side_of(IntPoint(2, 5)) == Side.COLLINEAR
+1 -1
View File
@@ -7,7 +7,7 @@ import random
import pytest
from freeroute.geometry import IntBox, IntPoint, ceil_sqrt2, overlaps_2d, segment_octagon
from rpmroute.geometry import IntBox, IntPoint, ceil_sqrt2, overlaps_2d, segment_octagon
@pytest.mark.parametrize("r", [0, 1, 2, 3, 1000, 2000, 3000, 12345, 999999])
+2 -2
View File
@@ -8,7 +8,7 @@ Java ``long``, and rational equality.
from __future__ import annotations
from freeroute.geometry import (
from rpmroute.geometry import (
IntPoint,
IntVector,
RationalPoint,
@@ -139,7 +139,7 @@ def test_rational_point_infinite():
def test_rational_point_contained_in_box_exact():
from freeroute.geometry import IntBox
from rpmroute.geometry import IntBox
box = IntBox(0, 0, 2, 2)
assert RationalPoint(3, 2, 2).is_contained_in(box) # (1.5, 1.0) inside
+3 -3
View File
@@ -13,9 +13,9 @@ from __future__ import annotations
import pytest
from freeroute.geometry import IntPoint, Side
from freeroute.geometry.polygon import Polygon
from freeroute.geometry.polygon_shape import PolygonShape
from rpmroute.geometry import IntPoint, Side
from rpmroute.geometry.polygon import Polygon
from rpmroute.geometry.polygon_shape import PolygonShape
def pts(*coords):
+1 -1
View File
@@ -2,7 +2,7 @@
from __future__ import annotations
from freeroute.geometry import (
from rpmroute.geometry import (
IntBox,
IntPoint,
Polyline,
+2 -2
View File
@@ -16,7 +16,7 @@ Source: ``geometry/planar/{TileShape,Simplex}.java``.
from __future__ import annotations
from freeroute.geometry import IntBox, IntPoint, Line, Side, Simplex
from rpmroute.geometry import IntBox, IntPoint, Line, Side, Simplex
def _grid(lo: int, hi: int):
@@ -162,7 +162,7 @@ def test_get_instance_detects_empty_from_opposing_halfplanes():
def test_translate_preserves_shape():
tri = right_triangle()
from freeroute.geometry import IntVector
from rpmroute.geometry import IntVector
moved = tri.translate_by(IntVector(100, 50))
for p in _grid(-3, 13):