Upgrading to 3.0

ObjectNat 3.0 runs its computationally intensive parts in a compiled Rust engine, objectnat._rust, and adds 2.5D and grid methods on top of it. No function is removed or renamed, but the parameters of the former Python implementations are removed, some results differ and installing from source needs a Rust toolchain. Release 2.2.0 already has the new engine and still accepts the removed parameters with a warning, so this page applies to upgrades from any 2.x release.

What changes for existing code

Change

Effect

What to do

Radius isochrones and coverage follow the network

With geometry_type="radius" every reachable node is buffered by its remaining budget, but by no more than off_network_distance (default 150 m), so the area no longer grows into a straight-line circle around the start

off_network_distance=None keeps the 2.x shape

get_visibility() has one exact method

method, resolution and parallel are removed: the visibility is always exact and computed in parallel threads; max_workers limits the threads

Remove these arguments; get_visibility(points, obstacles, 100) replaces get_visibility(points, obstacles, 100, "simple")

calculate_simplified_noise_frame() always runs the visibility in parallel threads

visibility_parallel is removed

Remove the argument; visibility_max_workers limits the threads

Provision allocation runs in Rust

For a given seed the allocation differs from 2.1, but matches it statistically, and is the same on any number of cores; get_service_provision() also accepts a pandas sparse OD matrix

None needed: the model and the signature are unchanged

Noise reflections are deterministic

simulate_noise() gives the same result on every run

None needed

Installation

Wheels contain the compiled extension; building from source requires Rust; IduEdu 2.4.2 or newer

pip install -U objectnat installs a wheel, no compiler needed

What is new