Installation#

FURY requires Python 3.12 or newer. Python 3.12, 3.13, and 3.14 are supported stable versions, tested in blocking Linux, macOS, and Windows CI. Python 3.12 support will be removed in an upcoming FURY release.

Dependencies#

The mandatory dependencies are:

  • NumPy >= 2.0

  • SciPy >= 1.13.0

  • Pillow >= 10.4.0

  • packaging >= 23.0

  • lazy_loader >= 0.4

  • pygfx >= 0.16.0

  • GLFW >= 2.7.0

  • aiohttp

  • polyxios >= 0.2.0

Optional dependencies are available as extras:

  • window: PySide6, jupyter-rfb, and imgui_bundle (on Python 3.12 or newer).

  • plot: Matplotlib >= 3.9.

  • medical: DIPY and nibabel.

  • compute: Numba.

  • optional: all of the above, plus OpenCV (opencv-python).

For example, to install the window backends:

pip install "fury[window]"

Installation with PyPi#

In a terminal, issue the following command

pip install fury

Installation with Conda#

Our conda package is on the Conda-Forge channel. You will need to run the following command

conda install -c conda-forge fury

Installation via Source#

Step 1. Get the latest source by cloning this repo

git clone https://github.com/fury-gl/fury.git
cd fury

Step 2. Install requirements

pip install -r requirements/default.txt

Step 3. Install fury via

pip install .

or

pip install -e .

Step 4: Enjoy!

Test the Installation#

You can check your installation via this command

python -c "from fury import get_info; print(get_info())"

This command will give you important information about FURY’s installation. The next step will be to run a tutorial.

Running the Tests#

From the repository root (the directory containing pyproject.toml), install the requirements for running the tests:

pip install -r requirements/default.txt
pip install -r requirements/test.txt

Examples, all run from the repository root:

  • Run the full test suite:

pytest -svv fury
  • Run a specific test file:

pytest -svv fury/tests/test_window.py
  • Run a specific test directory:

pytest -svv fury/actor/tests
  • Run a specific test function:

pytest -svv fury/tests/test_window.py::test_scene_initialization_default

Running the Tests Offscreen#

FURY renders with pygfx and WebGPU through WGPU. Offscreen rendering still requires a working graphics backend; it does not remove the need for compatible graphics drivers.

For an existing scene, explicitly request an offscreen image with window.snapshot(scene=scene, fname="output.png"), or create an offscreen manager with window.ShowManager(scene=scene, window_type="offscreen"). In contrast, setting FURY_OFFSCREEN=true changes the capture behavior of ShowManager.start() but does not replace a windowed canvas with an offscreen canvas.

For full headless tests on Ubuntu, install Mesa Vulkan drivers, Xvfb, and the GLFW/Qt libraries. See ci/setup_headless.sh for the complete CI package list; that GitHub Actions-specific provisioning script is not a local installation command. From the repository root, run:

QT_QPA_PLATFORM=offscreen FURY_OFFSCREEN=true xvfb-run -a --server-args="-screen 0 1024x768x24" pytest -svv fury

Coding style#

FURY uses the standard Python PEP8 style to ensure the readability and consistency across the toolkit. FURY has adopted an automated style checking framework that uses pre-commit and ruff. Style conformance rules are specified in the ruff.toml configuration file. When requesting to push to FURY, the compliance to the set of rules is automatically checked using a GitHub Actions workflow.

In order to check the compliance locally, developers should install the [style] dependencies:

pip install -e .[style]

The git hook scripts need to be installed then running:

pre-commit install

pre-commit will then run automatically on git commit.

Most text editors can be configured to check the compliance of your code with the set of rules specified in the ruff.toml file.

Populating our Documentation#

Folder Structure#

The relevant repository folders are:

fury/
├── docs/
│   ├── build/                 # Generated documentation output
│   ├── examples/              # Maintained gallery inputs
│   ├── examples_revamped/     # Generated/prepared gallery examples
│   ├── source/                # Documentation prose and configuration
│   ├── make.bat
│   ├── Makefile
│   └── README.md
├── requirements/              # Generated dependency requirements
└── fury/
    ├── actor/                 # Runtime actor package
    └── ...

docs/examples/ contains the maintained Python gallery scripts. docs/examples/_valid_examples.toml selects which inputs are prepared for the gallery in docs/examples_revamped/; do not edit those generated/prepared files. Maintain prose and configuration in docs/source/. Documentation builds write their output to docs/build/.

Building the documentation#

Step 1. From the repository root, install all required packages for documentation generation:

pip install -U -r requirements/default.txt
pip install -U -r requirements/optional.txt
pip install -U -r requirements/doc.txt

Step 2. Change to the docs folder:

cd docs

Generate the documentation on Linux and macOS:

make -C . clean && make -C . html

To generate the documentation without running the examples

make -C . clean && make -C . html-no-examples

or under Windows

.\make.bat clean
.\make.bat html

To generate the documentation without running the examples under Windows

.\make.bat clean
.\make.bat html-no-examples

Step 3. Congratulations! the build folder has been generated! Go to build/html and open with browser index.html to see your generated documentation.