Skip to content

Compatibility imports and public-interface status

The gem initializer is empty: import classes/functions from their modules. There are no root Vector/Matrix aliases, separate Vector2/3/4 classes or a root version API. gem.experimental is an empty retained package marker.

Status Meaning here
Canonical core Implemented algorithms under gem.vector/common/matrix/quaternion/plane/ray/bezier/legendre/spherical_harmonics
Legacy but retained Preserved helpers and field spellings described on the topic pages; not blanket 1.0 stability
Transitional import Thin reexport of the canonical object; no duplicate implementation
Retired Removed unfinished E07; no core transport replacement
Experimental algorithm None currently retained in the experimental directory; only compatibility shims remain
Private Leading-underscore helpers and implementation imports/cache; not supported mathematical entry points

No runtime deprecation, removal date or new support promise is declared here. See migration policy and compatibility assessment.

Retained paths and exact exports

Historical module Exported objects Canonical module
gem.experimental.bezier cubicBezierPoint, quadraticBezierPoint, BezierPath gem.bezier
gem.experimental._bezier_legacy BezierPath (private historical path retained) gem.bezier
gem.experimental.legendre Legendre gem.legendre
gem.experimental.sph Factorial, K, SPH, Legendre gem.spherical_harmonics; prefer gem.legendre for Legendre
gem.experimental.sph_sample SPHSample, GenerateSamples gem.spherical_harmonics
gem.experimental.sph_irradiance_map SPH_IrradianceMapCoeff gem.spherical_harmonics

These are identical objects with identical signatures, basis conventions and ownership, not adapters. __all__ in experimental.bezier names its three exports; experimental.legendre names Legendre. Other shims use direct imports without a new __all__; incidental attributes are not an additional mathematical contract. Canonical gem.spherical_harmonics.Legendre is the same imported core class. Changing a probe-class import does not change legacy coefficients into canonical SH; use legacy_to_canonical explicitly.

from gem.bezier import BezierPath, cubicBezierPoint
from gem.legendre import Legendre
from gem.spherical_harmonics import SPH, SPHSample
from gem.experimental.bezier import BezierPath as OldPath, cubicBezierPoint as old_cubic
from gem.experimental.legendre import Legendre as OldLegendre
from gem.experimental.sph import SPH as old_sph
from gem.experimental.sph_sample import SPHSample as OldSample

assert OldPath is BezierPath and old_cubic is cubicBezierPoint
assert OldLegendre is Legendre and old_sph is SPH and OldSample is SPHSample

Retired and non-core interfaces

gem.experimental.sph_object, including SPHVertex, SPHObject and misspelled GenereateCoeffs, was removed. Import fails; no compatibility transport container or serialization shim exists. Archived audit evidence and packaging/retirement tests distinguish retired diagnostics from fixed mathematics. External consumers are unknown.

launcher.py is a source-tree print demonstration; its ignored test argument is not an assertion runner. examples/hdr_sh, benchmark scripts and documentation tools are development/example code, not installed core mathematical APIs. No future roadmap module is implied to be importable. The historical Wiki is audit evidence and may describe corrected defects; it is not the current API reference.

The removal window for retained aliases, broader public stability and invalid-input policy remain maintainer decisions. See index.