Installation ============ .. contents:: On this page :local: :depth: 1 Requirements ------------ - **Python** ≥ 3.9 - A supported platform: Linux, macOS, or Windows All core dependencies are installed automatically by pip. From PyPI (recommended) ----------------------- .. code-block:: bash pip install routing Verify the installation: .. code-block:: python import routing print(routing.__version__) From Source (development) -------------------------- Clone the repository and install in editable mode: .. code-block:: bash git clone https://github.com/Dessia-tech/routing.git cd routing pip install -e ".[dev]" The ``[dev]`` extras install testing and linting dependencies. Dependencies ------------ Core dependencies (installed automatically): - **volmdlr** — 3D CAD geometry: STEP file loading, mesh operations - **numpy** — array operations, voxelization - **scipy** — simulated annealing optimizer (``dual_annealing``) - **piping_3d** — pipe section definitions (``piping.Section``) - **dessia_common** — serialization base classes Optional dependencies (not installed by default): - **open3d** — 3D visualization for the pathfinding example scripts (``scripts/pathfinding/examples/03_view_map.py``) - **plotly** — interactive 3D plots for Theta* comparison example (``scripts/pathfinding/examples/04_theta_star.py``) Install optional dependencies as needed: .. code-block:: bash pip install open3d plotly Upgrading --------- .. code-block:: bash pip install --upgrade routing Checking the Installation -------------------------- Run the quickstart example to confirm everything works: .. code-block:: python import numpy as np from routing.pathfinding.core.grid import Grid from routing.pathfinding.finder.a_star import AStarFinder from routing.pathfinding.core.diagonal_movement import DiagonalMovement matrix = np.ones((5, 5, 5)) matrix[2, 2, 2] = 0 # obstacle grid = Grid(matrix=matrix) start = grid.node(0, 0, 0) end = grid.node(4, 4, 4) finder = AStarFinder(diagonal_movement=DiagonalMovement.always) path, runs = finder.find_path(start, end, grid) print(f"Path found: {len(path)} nodes in {runs} iterations") If this prints a path, the installation is working correctly.