Skip to main content

Cross-platform Python bindings for Helios 3D plant simulation

Project description



Build Wheels Test Linux Test Windows Test MacOS PyPI version

Getting Started {#GettingStarted}

Cross-platform Python bindings for Helios 3D plant simulation library.

PyHelios provides a Python interface to the powerful Helios C++ library for 3D physical simulation of plant and environmental systems. It enables plant modeling, geometry manipulation, and biophysical simulations including GPU-accelerated radiation transfer, photosynthesis, and plant architecture modeling.

📖 Complete Documentation

⚠️Note that this is a work in progress. Not all Helios functionality has been implemented in PyHelios ⚠️

⚠️Help make PyHelios better by reporting issues: https://github.com/PlantSimulationLab/PyHelios/issues ⚠️

See the Helios C++ documentation for a more in-depth description of Helios: https://baileylab.ucdavis.edu/software/helios

Quick Start

Installation

Requirements: Python 3.10 or later (pre-built wheels available for Python 3.10–3.14)

Easy Install (Recommended):

pip install pyhelios3d

This installs pre-built PyHelios with platform-appropriate plugins:

  • macOS (Apple Silicon): All plugins including radiation via Vulkan backend
  • macOS (Intel): Pre-built wheels not available - please build from source
  • Windows/Linux: All plugins with GPU acceleration via OptiX backend (NVIDIA GPUs)

PyHelios automatically selects the best execution mode:

  • Plugins with GPU backends (radiation): Require GPU - Vulkan (all platforms) or OptiX (NVIDIA)
  • Plugins with CPU/GPU modes (energybalance): Work on all platforms, GPU acceleration optional
  • CPU-only plugins: Work on all platforms without special hardware

Note for Intel Mac Users: Due to GitHub Actions infrastructure limitations, pre-built wheels are only available for Apple Silicon Macs. Intel Mac users must build PyHelios from source following the macOS build instructions below.

Build from Source {#build-from-source}

If you need to customize plugins or build from source:

Windows {#windows}

Prerequisites:

  • Visual Studio 2019+ or Build Tools for Visual Studio
  • Python 3.10+
# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Build native libraries (optional - pre-built binaries included)
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

macOS {#macos}

Prerequisites:

  • Xcode command line tools
  • Python 3.10+
# Install Xcode command line tools
xcode-select --install

# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Install c++ dependencies and build native libraries
source helios-core/utilities/dependencies.sh
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

Linux (Ubuntu/Debian) {#linux}

Prerequisites:

  • Build essentials
  • CMake
  • Python 3.10+
# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Install c++ dependencies and build native libraries
source helios-core/utilities/dependencies.sh
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

GPU Features Setup (Optional)

PyHelios plugins have three types of GPU support:

GPU-Required Plugins:

  • Radiation Model: GPU-accelerated ray tracing via Vulkan (all GPUs) or OptiX (NVIDIA)
  • Aerial LiDAR: GPU-accelerated LiDAR simulation (CUDA)

GPU-Optional Plugins (work with or without GPU):

  • Energy Balance (v1.3.61+): Automatic mode selection - GPU (CUDA) → OpenMP (parallel CPU) → Serial CPU
    • CPU mode recommended for most workloads without GPU

CPU-Only Plugins (no GPU needed):

  • All other plugins (PlantArchitecture, Photosynthesis, SolarPosition, etc.)

For GPU Acceleration (optional), ensure you have at least one:

  • Vulkan loader library (macOS/Linux only; no extra packages on Windows)
  • OR for NVIDIA-optimized path: CUDA 12.0+ with driver >= 560 (OptiX 8.1) or CUDA 9.0+ with driver < 560 (OptiX 6.5)

The radiation plugin auto-detects the best available backend at runtime (OptiX 8 -> OptiX 6 -> Vulkan).

Verification:

vulkaninfo  # Should show Vulkan device information
# OR for NVIDIA:
nvidia-smi  # Should show GPU information

Testing GPU Features:

from pyhelios import Context, RadiationModel, EnergyBalanceModel

context = Context()

# Test GPU-required plugin (radiation)
try:
    radiation = RadiationModel(context)
    print("GPU radiation modeling available!")
except RuntimeError as e:
    print(f"Radiation requires GPU: {e}")

# Test GPU-optional plugin (energybalance)
with EnergyBalanceModel(context) as energy:
    if energy.isGPUAccelerationEnabled():
        print("EnergyBalance using GPU acceleration")
    else:
        print("EnergyBalance using CPU mode (OpenMP or serial)")

First Example

from pyhelios import Context
from pyhelios.types import *

# Create simulation context
context = Context()

# Add a patch primitive
center = vec3(2, 3, 4)
size = vec2(1, 1)
color = RGBcolor(0.25, 0.25, 0.25)
patch_uuid = context.addPatch(center=center, size=size, color=color)

print(f"Created patch: {patch_uuid}")

Documentation

Section Description
Getting Started Installation, setup, and first steps
User Guide Core concepts, API reference, and examples
Cross-Platform Platform-specific usage and deployment
Plugin System Available plugins and configuration

Key Features

  • Cross-platform: Windows, macOS, and Linux support
  • Plant modeling: 20+ plant species models in the plant architecture plug-in
  • GPU acceleration: Radiation simulation via Vulkan or OptiX backends
  • 3D visualization: OpenGL-based real-time rendering

Updating PyHelios

PyPI Installation

If you installed via pip, simply upgrade to the latest version:

pip install --upgrade pyhelios3d

Source Installation

If you built PyHelios from source, update with the latest changes:

# Update main repository and submodules recursively
git pull --recurse-submodules

# Alternative: Update main repo first, then submodules
git pull
git submodule update --init --recursive

# Rebuild native libraries after updates (recommended)
./build_scripts/build_helios --clean

# Reinstall PyHelios
pip install -e .

Important: Always use --recurse-submodules or manually update submodules when pulling updates, as PyHelios depends on the helios-core submodule for C++ functionality.

Quick Commands

# Test installation (uses subprocess isolation for robust testing)
pytest

# Check plugin status  
python -m pyhelios.plugins status

# Interactive plugin selection
./build_scripts/build_helios --interactive

Support


Note: This project is in active development. The API may change quickly - see docs/CHANGELOG.md for updates.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyhelios3d-0.1.23-cp314-cp314-win_amd64.whl (52.9 MB view details)

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.23-cp314-cp314-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.23-cp313-cp313-win_amd64.whl (52.6 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.23-cp313-cp313-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.23-cp312-cp312-win_amd64.whl (52.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.23-cp312-cp312-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.23-cp311-cp311-win_amd64.whl (52.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.23-cp311-cp311-macosx_14_0_arm64.whl (62.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.23-cp310-cp310-win_amd64.whl (52.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.23-cp310-cp310-macosx_14_0_arm64.whl (62.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file pyhelios3d-0.1.23-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.23-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 52.9 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.23-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3b5cdac7cad1d5ac0d5b5ca33231167ba2c9f6c819836f28106073b2884b7038
MD5 e37bba0a42a11f28980bbcf183801635
BLAKE2b-256 2549ed42a5090e8bf9edb01fd4a8e2b6cf7a666efee2fceb9c091bf18d1dadd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp314-cp314-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9522d818e58ebcab7a1baf4c11af87319dfbdbdb0ce6cbc65780a084aabad35a
MD5 0282719139c3c985eee84e79f13b7a1e
BLAKE2b-256 54ff23b2cebe94b81834132ce084bcefc0f44c68410891a352b72b1b33cac9d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f2902f34d20da484589737403f84d5509aa1b882cdc6bbb28b7e4b1bedba4dc8
MD5 bd274091872637a00a9b915f9bdc4da5
BLAKE2b-256 dbf8905c2a7a4887287b3b45c82f6acef2671db5d649a1840de9feadfe8f270d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.23-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 52.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.23-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 838a40da15ef0aa9c0b3a28a5337bc13fc330c07d0f4bae138a44e8c833cef54
MD5 dda797c8756216c0c4be70ceae348333
BLAKE2b-256 c2d3bdf1c1a9bafb28d86435e2bab66d13e4708182c56ef66be06f781452324d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp313-cp313-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f9ad0411f0b0e3086aa9a9f6708e3cabc9a672dcbc2e33357da97e96bf332da8
MD5 84777f46e2f00c4f9d79f26fc97ebc8a
BLAKE2b-256 0eccde224379d1f2fbb4f94ff23855aa1136ba35cb2d30df0b231c1c7f7bbf2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 502ae65cec81fa70b6c77c689055f285f488f1e46ec3fc68084e14d2ce449e8f
MD5 56f5a268722fb6c79b6a9659ddfb0713
BLAKE2b-256 f974d45c144ab6912a1146d45242afcc9011af0bf16b8f49064c4d0f2b8ec2b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.23-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 52.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.23-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 402895f1c725dda82d0b83878aed75994db4aea97980775f475c4a14ca20332c
MD5 1ee5931caf1d35f48a178f78c354c783
BLAKE2b-256 7ad16a2bc27f6e15b499cce02bb2e73e97f09752d8115c33bca4db9628fa5dab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 785056be63d92b3d153e3ea1191807791b4f278409cb446fdaf09b9574f34026
MD5 69c79af9adbc5d46d5c99cfb5f8ccc8a
BLAKE2b-256 c4520595b13f258067ce6758c7bd1039a8b7e17c3fae23062d8f9d0d2ed540e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c332057d7f1d100ac15c39bf6f5038959eabc8ff493980ff4043e58d2db4d810
MD5 21301efc83a6325127cb84ad0d9d9b42
BLAKE2b-256 be2af090528f24a448cf1e12ecbc7ab8aacdbc7be6a8c9c3c88be099d702596f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.23-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 52.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.23-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 de93d175bb9ea947a544c30db4785fc1f4017a741c34c0c2494d9bf27037444c
MD5 3a5fe16cc5792e16780919dd4d489080
BLAKE2b-256 821b2c9a36458628e4c909ceb18a3b9bdc5b42e4f7aa3b28fe6a92d62f13a8dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 cf71d19663815381ade0e852b3edf04e84c48ac4b7b1fb272204e8354847dcb0
MD5 a609db0f6df7b98166c2d0a717b1ab3c
BLAKE2b-256 3049b70671325bc4befc7c730ba553c0d78ca85ea5d724823437c4f6febdc18a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f7f35fa30088c64985905730ea15340443a10a363b99015a1f8beda91e9bbdca
MD5 28f2fe3c4b445fe500d4df499bc03df8
BLAKE2b-256 fe5a29a6f66c40ca741812c0e35b77166df3a4f92e95e8922a28e036bf3fbd9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.23-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 52.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.23-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 382c16fac03fc2bbb2d58234d178229f01aa651fc6a7e9135d4a91827ff208e3
MD5 0a23b881f4cc7c69bc4c75199a54a04e
BLAKE2b-256 75c5af3b1bf75980744fbab3dce612ac1e1c1f923efde04a9e115be724d194d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 fed58f111fc8ea3febae5f745be2524d9fac4e0ebaa21d1c4ed0ffeffa37543d
MD5 34013809a24ae5ca8d7b2758325f4d9c
BLAKE2b-256 d78814d60b98ddab7201d92ae84a85d7dfac9dced10fe00b82bc7173667e46cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.23-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.23-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e8d98b40ff764b4f127d0206bca8597388fdce36e0d0cee7e9829e07442c4254
MD5 1058a26a282e71b76ca8a8b2848a4ab1
BLAKE2b-256 1aa477e5342818ee1972d5a419bab73fbb10b7c77aaa48c3025550538d1b1422

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.23-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page