Skip to main content
Incomplete provenance

3 of 20 release files were uploaded without provenance metadata. View details.

RadFiled3D

Tests PyPI Python versions License

This Repository contains the file format and API according to the Paper: "RadField3D: A Data Generator and Data Format for Deep Learning in Radiation-Protection Dosimetry for Medical Applications".

The aim of this library is, to provide a simple to use API for a structured, binary file format, that can store all relevant information from a three dimensional radiation field calculated by applications that use algorithms like Monte-Carlo radiation transport simulations. Such a binary file format is useful, when one needs to process a huge amount of radiation field files like when training a neural network. With that use-case in mind, RadFiled3D also provides a python interface with a pyTorch integration. In order to directly iterate a dataset generated with the RadField3D tool, just jump to the section RadField3D Datasets.

🌟 Why Use RadFiled3D

  • Efficient Storage: Structured, binary file format for storing large amounts of radiation field data.
  • Easy Integration: Simple API for C++ and Python with pyTorch support.
  • High Performance: Optimized for fast data access and manipulation.
  • Versatile: Supports both Cartesian and Polar coordinate systems.
  • Extensible: Easily extendable to include additional metadata and data types.

Table of Contents

Building and Installing

Installing from PyPi

pip install RadFiled3D

Prebuilt wheels are published for:

Platform Architectures Python
Linux (manylinux 2.28 / 2.17, musllinux 1.2) x86_64 3.11 – 3.14
Windows x64 3.12 – 3.14
macOS 11+ (Apple silicon) arm64 3.11 – 3.14

On any other platform — including Intel macs, whose wheels were dropped as Apple winds down x86 support — pip falls back to the source distribution and compiles the module on the fly. That needs a C++20 compiler (and macOS 10.15 or newer, where std::filesystem became available), while CMake and Ninja are provisioned automatically by the build backend.

Installing from Source

You can build and install this library and python module from source by using CMake and a C++ compiler. The CMake Project will be built automatically, but will take some time.

Prerequisites

  • C++20 compiler
    • g++ >= 10 or clang for Linux
    • MSVC or clang from Visual Studio 2022 for Windows
    • Apple clang (Xcode command line tools) for macOS
  • CMake >= 3.16 (only needed for standalone C++ builds; pip provisions its own)
  • Python >= 3.11

CMake

In order to use the module directly from another C++ Project, you can integrate it by adding the local location of this repository via add_subdirectory() and then link against the target radfiled3d. All classes are then available from the namespace radfiled3d. Check the Example or the First Test File as a first reference.

Naming (since 1.4.0). Namespaces and file names are lowercase — radfiled3d, radfiled3d::storage, radfiled3d::typing, and headers such as <radfiled3d/storage/radiation_field_store.hpp>. Class, struct and enum names keep their PascalCase (CartesianRadiationField, DType). The CMake target is radfiled3d.

Python

The Python package is built with scikit-build-core, the standard PEP 517 backend for CMake projects. It drives the CMake/pybind11 build automatically; no setup.py is required. CMake and Ninja are provisioned by the build backend if they are not already present.

Installing locally

python -m pip install .

Building a wheel

python -m build --wheel

The package version is taken from the release tag (GITHUB_REF / CI_COMMIT_TAG) at build time and falls back to 0.0.0 for non-release builds.

Getting Started

Disclaimer: Not all methods support keyword arguments as they need to be defined manually in the bindings. For some methods like add_layer or the Metadata methods those are implemented.

From Python

Simple example on how to create and store a radiation field. Find more in the example file: Example

from radfiled3d import CartesianRadiationField, DType
from radfiled3d.glm import vec3
from radfiled3d.store import FieldStore, StoreVersion
from radfiled3d.metadata.v1 import Metadata


# Creating a cartesian radiation field
field = CartesianRadiationField(vec3(2.5, 2.5, 2.5), vec3(0.05, 0.05, 0.05))
# channels are dict-like: indexing returns the channel, creating it if needed.
# A layer needs a unit and a dtype, so it is always created explicitly.
field["channel1"].add_layer("layer1", "unit1", DType.FLOAT32)

# checking what a field or a channel holds
assert "channel1" in field
assert "layer1" in field["channel1"]

# indexing a channel with a layer name gives the voxels as a numpy array
array = field["channel1"]["layer1"]
assert array.shape == (50, 50, 50, 1)

# modify voxels content by using numpy array as no data is copied, just referenced
array[2:5, 2:5, 2:5] = 2.0

# addressing a voxel by providing a point in space
voxel = field["channel1"].get_voxel_by_coord("layer1", 0.1, 2.4, 2.1)

# Store changes to a file
metadata = Metadata.default()
FieldStore.store(field, metadata, "test01.rf3", StoreVersion.V1)

# load data
field2 = FieldStore.load("test01.rf3")
metadata2 = FieldStore.load_metadata("test01.rf3")

Channels and layers as mappings

A field behaves like a dict of channels and a channel like a dict of layers:

Expression Meaning
field["channel"] the channel, created on first access if it does not exist
"channel" in field whether the channel exists
channel["layer"] the layer's voxels as a zero-copy numpy view
"layer" in channel whether the layer exists

Layers are the one asymmetry: they are never created implicitly, because a layer needs a unit and a data type. Indexing a layer that does not exist raises a KeyError telling you to call add_layer(name, unit, dtype) first. The explicit add_channel / get_channel / get_layer_as_ndarray methods remain available and do exactly the same thing.

Integrating with pyTorch

RadFiled3D comes with a submodule at radfiled3d.pytorch. This module provides some dataset classes to support the usage. Datasets can be loaded from folders or .zip-Files.

import torch
from radfiled3d.pytorch import DataLoaderBuilder
from radfiled3d.pytorch.datasets import MetadataLoadMode
from radfiled3d.pytorch.datasets.cartesian import CartesianFieldSingleLayerDataset
from radfiled3d.pytorch.helpers import RadiationFieldHelper
from radfiled3d.pytorch.types import DirectionalInput, TrainingInputData


# Extend one of the provided dataset classes to match the output to the current needs
class MyLayerDataset(CartesianFieldSingleLayerDataset):
    def __getitem__(self, idx: int) -> TrainingInputData:
        layer, metadata = super().__getitem__(idx)
        tube = metadata.get_header().simulation.tube
        tube_dir, tube_pos = tube.radiation_direction, tube.radiation_origin
        # transform the layers data to a tensor
        return TrainingInputData(
            input=DirectionalInput(
                direction=torch.tensor([tube_dir.x, tube_dir.y, tube_dir.z]),
                origin=torch.tensor([tube_pos.x, tube_pos.y, tube_pos.z]),
                # the tube spectrum lives in the dynamic metadata, so reading it
                # would require MetadataLoadMode.FULL below
                spectrum=None,
            ),
            ground_truth=RadiationFieldHelper.load_tensor_from_layer(layer),
        )


# Optional: provide a finalizer to configure the dataset once the builder created it
def finalize_dataset(dataset: MyLayerDataset) -> None:
    dataset.set_channel_and_layer("test_channel", "test_layer")
    dataset.metadata_load_mode = MetadataLoadMode.HEADER


# Guard the entry point: with more than one worker, python re-imports this module
# in every worker process (the default start method is spawn on Windows/macOS and
# forkserver on Linux as of python 3.14).
if __name__ == "__main__":
    # Pass the dataset class and other options to the DataLoaderBuilder
    builder = DataLoaderBuilder(
        "./test_dataset.zip",
        train_ratio=0.7,
        val_ratio=0.15,
        test_ratio=0.15,
        dataset_class=MyLayerDataset,
        on_dataset_created=finalize_dataset,
    )

    # Build the training dataset
    train_dl = builder.build_train_dataloader(
        batch_size=8,
        shuffle=True,
        worker_count=4,
    )

    # iterate over the dataset; every batch is a TrainingInputData of stacked tensors
    for train_data in train_dl:
        model_input = train_data.input        # DirectionalInput, direction: (8, 3)
        ground_truth = train_data.ground_truth  # (8, c, x, y, z)

Direct integration with RadField3D datasets

Directly iterate RadField3D datasets either by loading whole fields or iterating each voxel independently. The dataset classes will return pyTorch compatible NamedTuples, that preserve the structure of the raw radiation fields and layers.

from radfiled3d.pytorch import DataLoaderBuilder
from radfiled3d.pytorch.datasets.radfield3d import RadField3DDataset, RadField3DVoxelwiseDataset
# import the pyTorch compatible datatypes
from radfiled3d.pytorch.types import DirectionalInput, PositionalInput, RadiationField, TrainingInputData


if __name__ == "__main__":
    builder = DataLoaderBuilder(
        "./test_dataset_folder/",
        train_ratio=0.7,
        val_ratio=0.15,
        test_ratio=0.15,
        dataset_class=RadField3DDataset
    )

    train_dl = builder.build_train_dataloader(
        batch_size=8,
        shuffle=True,
        worker_count=4
    )

    # iterate over the dataset using fully useable pyTorch classes
    for train_data in train_dl:
        model_input: DirectionalInput | PositionalInput = train_data.input
        field: RadiationField = train_data.ground_truth

Swap dataset_class for RadField3DVoxelwiseDataset to iterate single voxels instead of whole fields, or for RadField3DDatasetWithGeometry to also receive the phantom density map. TrainingInputData consists of two components metadata (as DirectionalInput or PositionalInput) contains the following information

  • radiation direction (x, y, z)
  • radiation origin (x, y, z)
  • field shape (Cone, Rectangle, Ellipsis)
  • field shape parameters (opening angle, size at origin, ...)
  • x-ray tube output spectrum

field (as RadiationField) contains the following information

  • direct x-ray beam component (as RadiationFieldChannel)
    • spectrum per voxel
    • fluence per voxel
    • statistical error per voxel
  • scatter field component (as RadiationFieldChannel)
    • spectrum per voxel
    • fluence per voxel
    • statistical error per voxel
  • geometry (binary density map)

Tracing paths in Cartesian Coordinate Systems

In order to integrate RadFiled3D with other simulation frameworks or applications, one can either take the final results and write it voxel-wise to RadFiled3D or one can already use RadFiled3D during the particle tracking. Therefore, this library offers GridTracers. Each of them implements a different line-segment tracing algorithm to find consecutive voxels that are intersected.

The following GridTracers exists:

  • SamplingGridTracer: Traces a line between two points in the grid using a sampling approach. In this approach the minimum sampling size is the length of the line segment. If the line segment is longer than the minimum sampling size, which is half the L2-Norm of the voxel size, the line is divided into segments of the minimum sampling size. This approach counts the hits if the line segment is incident to a voxel, only!
  • BresenhamGridTracer: Traces a line between two points in the grid using the Bresenham algorithm. This algorithm is a line rasterization algorithm that is used to trace a line between two points in a grid. The starting point is excluded as this can only exit a voxel.
  • LinetracingGridTracer: This class traces a line between two points in the grid using a combination of the SamplingGridTracer and a line tracing algorithm. First the lossy sampling tracer is used to trace the line. Then all adjacent voxels to the voxels that were hit are tested using a line-segment intersection test algorithm.

All those tracers can be created by calling the GridTracerFactory.construct(..) method. The tracers share one single interface method:

def trace(self, p1: vec3, p2: vec3) -> list[int]:

This method takes two points as the definition of the considered line-segment and returns the flat indices of all voxels intersected, that are inside the grid.

Example usage:

from radfiled3d import GridTracerFactory, GridTracerAlgorithm, CartesianRadiationField, DType
from radfiled3d.glm import vec3

field = CartesianRadiationField(vec3(1.0, 1.0, 1.0), vec3(0.01, 0.01, 0.01))
field["test"].add_layer("flux", "counts", DType.INT32)

tracer = GridTracerFactory.construct(field, GridTracerAlgorithm.SAMPLING)
indices = tracer.trace(vec3(0.5, 0.5, 0.0), vec3(0.5, 0.85, 1.0))

# The layer array is a zero-copy view of shape (x, y, z, elements_per_voxel) in
# which x varies fastest, exactly like the flat voxel indices the tracer returns.
# Flattening it with order="F" therefore keeps the view, and the increments land
# in the field itself -- .flatten() would copy and the writes would be lost.
hits_counts = field["test"]["flux"]
hits_counts.reshape(-1, order="F")[indices] += 1

# ... and the 3D view of the same data, for plotting or further processing
hits_per_voxel = hits_counts[..., 0]

Faster loading of field series

As the RadFiled3D format possesses a dynamic structure, the loading of a radiation field requires the discovery of channels and layers as well as calculating the binary entry points of channels, layers and voxels. When loading datasets for machine learning, the structure of the fields loaded will likely be constant for each dataset. Therefore, the binary entry points can be precalculated to access only those parts of the RadFiled3D files that are really needed to increase the loading speed and to reduce the needed memory. This is relealized by the FieldAccessors objects.

from radfiled3d import FieldType
from radfiled3d.glm import uvec3
from radfiled3d.store import CartesianFieldAccessor, FieldStore
from radfiled3d.metadata.v1 import Metadata

accessor: CartesianFieldAccessor = FieldStore.construct_field_accessor("a_file.rf3")
field_type = accessor.get_field_type()
assert field_type == FieldType.CARTESIAN

print(accessor)
field = accessor.access_field("a_similar_file.rf3")
layer = accessor.access_layer("a_similar_file.rf3", "channel1", "layer1")
voxel = accessor.access_voxel("a_similar_file.rf3", "channel1", "layer1", uvec3(0, 0, 0))

FieldAccessors are implemented for the two currently supported coordinate systems: CartesianFieldAccessor and PolarFieldAccessor. Depending on the actual field type, FieldStore.construct_field_accessor(AFile) returns one of them. The pyTorch Datasets are implemented using the FieldAccessor objects to allow for quicker access of datasets. The tests shall act as example code see test_field_accessor.py.

From C++

Simple example on how to create and store a radiation field. Find more in the example file: Example

#include <radfiled3d/storage/radiation_field_store.hpp>
#include <radfiled3d/radiation_field.hpp>
#include <memory>

using namespace radfiled3d;
using namespace radfiled3d::storage;

int main() {
    auto field = std::make_shared<CartesianRadiationField>(glm::vec3(2.5f), glm::vec3(0.05f)); // field extents: 2.5 m x 2.5 m x 2.5 m and voxel extents: 5 cm x 5 cm x 5 cm

    auto metadata = std::make_shared<radfiled3d::storage::v1::RadiationFieldMetadata>(
        // learn about the existing data fields from the example file in ./examples/cxx/example01.cpp
    );

    FieldStore::store(field, metadata, "test_field.rf3", StoreVersion::V1);

    auto field2 = FieldStore::load("test_field.rf3");
    return 0;
}

Available Voxel Datatypes

In general, a C++ Scalar- or HistogramVoxel (and thus layers) can hold any datatype. But in order to deserialize them from a file or use them from Python, there is only a specific list implemented. The Available datatypes are:

C++ Type radfiled3d.DType
float DType.FLOAT32
double DType.FLOAT64
int DType.INT32
uint8_t DType.BYTE
unsigned char DType.BYTE
char DType.SCHAR
uint32_t DType.UINT32
uint64_t DType.UINT64
int64_t DType.INT64
unsigned long long DType.UINT64
_Float16 DType.FLOAT16
glm::vec2 DType.VEC2
glm::vec3 DType.VEC3
glm::vec4 DType.VEC4
HistogramVoxel DType.HISTOGRAM
AngularResolvedVoxel DType.ANGULAR
VMFMixtureVoxel DType.VMF_MIXTURE

The three composite types are not created through add_layer, because each needs extra structure: use add_histogram_layer(name, bins, bin_width, unit), add_spherical_layer(name, segments, unit) or add_vmf_layer(name, lobes, unit). A vMF mixture stores lobes x 5 floats per voxel (weight, mean_x, mean_y, mean_z, kappa), so a layer has shape (x, y, z, lobes, 5). It is part of the core format and always available -- unlike float16, it has no compiler or library prerequisite.

DType.FLOAT16 requires a compiler that provides _Float16 (GCC >= 12, a recent clang). Builds without it compile the type out and raise a clear error when it is used, so check radfiled3d.HAS_FLOAT16 before relying on it — it is not available in every published wheel (for 1.3.6 the manylinux_2_28 and musllinux wheels have it, the manylinux2014 and Windows ones do not).

Field Structure

RadFiled3D defines a field structure, that provides the user with the possibility to first define in which kind of space he wants to operate. Therefore one can choose between CartesianRadiationField and PolarRadiationField.

  • CartesianRadiationField: Segments a room defined by an extent of the room itself and each cuboid voxel into a set of voxels. Each voxel can be addressed by a 3D position (coordinate: x, y, z), a 3D index (number of the voxel in each dimension) or a flat 1D index.
  • PolarRadiationField: Segements the surface of a unit sphere into surface segments. Each segment (voxel) can be addressed by a 2D position (coordinate: theta, phi), a 2D index (number of the segment in each dimension) or a flat 1D index.

Fields are then partitioned into channels (VoxelGridBuffer/PolarSegmentsBuffer). All channels share the same size and resolution. A channel is again partitioned into layers (VoxelGrid/PolarSegment). Each layer holds the actual voxel data and can be constructed from various data types (float, double, uint32_t, uint64_t, glm::vec2, glm::vec3, glm::vec4, N-D-Histogram (list of floats), angular-resolved segment grids and von Mises-Fisher mixtures). Additionally, a layer has a unit string assigned to it as well as a statistical uncertainty to perserve those information.

Dependencies

RadFiled3D comes with a possibly low amount of dependencies. We integrated the OpenGL Math Library (GLM) just to provide those datatypes out of the box and as GLM is a head-only library we suspect no issues by doing so.

All C++ dependencies (Will be fetched by CMake):

All python dependencies:

Citation

If you use RadFiled3D in academic work, please cite the paper describing the format and the data generator:

Lehner, F., Lombardo, P., Castillo, S., Hupe, O. and Magnor, M. (2025). RadField3D: a data generator and data format for deep learning in radiation-protection dosimetry for medical applications. Journal of Radiological Protection 45(2), 021508. https://doi.org/10.1088/1361-6498/add53d

@article{Lehner2025RadField3D,
  author  = {Lehner, Felix and Lombardo, Pasquale and Castillo, Susana and Hupe, Oliver and Magnor, Marcus},
  title   = {RadField3D: a data generator and data format for deep learning in radiation-protection dosimetry for medical applications},
  journal = {Journal of Radiological Protection},
  volume  = {45},
  number  = {2},
  pages   = {021508},
  year    = {2025},
  doi     = {10.1088/1361-6498/add53d}
}

Metadata

Release files for RadFiled3D 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Incomplete provenance

3 of 20 files were uploaded without provenance metadata.

We recommend further investigation before installing these files. View details.

Source distribution (sdist)

Source distribution for RadFiled3D 1.4.0
File Size Uploaded Provenance Actions
radfiled3d-1.4.0.tar.gz 171.8 kB With provenance Details for radfiled3d-1.4.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for RadFiled3D 1.4.0
File Actions
radfiled3d-1.4.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for radfiled3d-1.4.0-cp314-cp314-win_amd64.whl
radfiled3d-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for radfiled3d-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
radfiled3d-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for radfiled3d-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
radfiled3d-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for radfiled3d-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
radfiled3d-1.4.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for radfiled3d-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
radfiled3d-1.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for radfiled3d-1.4.0-cp313-cp313-win_amd64.whl
radfiled3d-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for radfiled3d-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
radfiled3d-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for radfiled3d-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
radfiled3d-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for radfiled3d-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
radfiled3d-1.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for radfiled3d-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
radfiled3d-1.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for radfiled3d-1.4.0-cp312-cp312-win_amd64.whl
radfiled3d-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for radfiled3d-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
radfiled3d-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for radfiled3d-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
radfiled3d-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for radfiled3d-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
radfiled3d-1.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for radfiled3d-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
radfiled3d-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for radfiled3d-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
radfiled3d-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for radfiled3d-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
radfiled3d-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for radfiled3d-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
radfiled3d-1.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for radfiled3d-1.4.0-cp311-cp311-macosx_11_0_arm64.whl

Total release size: 19.6 MB

Release files / radfiled3d-1.4.0.tar.gz

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0.tar.gz
Size 171.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cbb46cf619371a348e319bda2d56827c413d5c3404c6749cccfb67767822b497
BLAKE2b-256 checksum
How to use checksums
397fd5cd49b830fd78ced3294518de81d934b0624a1acb5179871d977a91a8e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp314-cp314-win_amd64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while other files in this release have provenance metadata, this file does not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp314-cp314-win_amd64.whl
Size 564.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
72922041e67fd37262971d96092ca5c171253603cf0a59ae7f09dc490411ec59
BLAKE2b-256 checksum
How to use checksums
4113e47ef232632f04ff07f0ab75ece214c19a259f6c65ca040792636df3e346
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / radfiled3d-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 2.0 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e42095141087bd044a45f66c7fb841877dca4c92ff49715db7a0f2ab0865050c
BLAKE2b-256 checksum
How to use checksums
48a3e184a6ddca00c8f7f57c8fa6861c39046b78f009b8aa13cdb50d5c9eb991
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 929.0 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2c09df82c6751372f8159132da6cf0b2cd8933ead4104005ac086b28cd845075
BLAKE2b-256 checksum
How to use checksums
67e91ac6a91d3c1cc4b8465750ab3578105b7f69904c7fa69d169a914439668d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 948.0 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a1d1ddfca34151416367f336b0259f98155f9eb9e96cab3fc0c4b6a0cc76a382
BLAKE2b-256 checksum
How to use checksums
d2068e785fabb8113a7e6a5e75baa3d710ab12c8834435ab7de80c310a142e49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp314-cp314-macosx_11_0_arm64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
Size 601.2 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a23499b8b6d9f3234372f4a9c4a6a7c9a5615a60dc49c09c6a347521d0f2f191
BLAKE2b-256 checksum
How to use checksums
747716a5e77300bacb47e966d87793e9f18bfb040a9fa185c38d3a548e5e4f37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp313-cp313-win_amd64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while other files in this release have provenance metadata, this file does not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp313-cp313-win_amd64.whl
Size 551.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d23cb19458f15565f14f8d3a937b61a03948d66385ed4590a4168d155b407c7a
BLAKE2b-256 checksum
How to use checksums
4c6dba4f19858410c36bd1b2923d0568eb4a900fa9aaf44d104cfe15f06f5cd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / radfiled3d-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.0 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
95d602ad327543d3246a1d0ccf6ebc4244e023db331e3017a506501fe0466aae
BLAKE2b-256 checksum
How to use checksums
4d860a6965510e378ea9e1d2b3a5474b4acf19abf405dfa7e71a06201e972776
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 928.6 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ef9222c690b6da8f37aed267821e2f4e133b314748098f77d7c42a819497d6e0
BLAKE2b-256 checksum
How to use checksums
4b2fa9547f42b491ddbcb74cdaafb7dca44cc0d51946c357e6fbb2772f55c606
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 946.7 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d8b9c898b48b7c44935be70b68c14ee15c3d7cdd84892ffeea9dc2e0e68ae876
BLAKE2b-256 checksum
How to use checksums
be81131adf54385339aba306f095f89e89ea5c84078001b6292b25d1c36cca3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp313-cp313-macosx_11_0_arm64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 599.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ac73022927bcb3ee3fb74c35da4adc6c0055eb01dcc49632ce1a789047ecdf4f
BLAKE2b-256 checksum
How to use checksums
ac859950cdea07a77a47171175c857fd064ff029f950d15e893e3947afe1511f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp312-cp312-win_amd64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while other files in this release have provenance metadata, this file does not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp312-cp312-win_amd64.whl
Size 551.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3ce551180240ada796ad97f2e00ece557d862249d465742a95c4cdf409ea84ac
BLAKE2b-256 checksum
How to use checksums
6864fb604f61014113412985fee72d23591f66def9e3a0684a41877beb8f83f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / radfiled3d-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.0 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
525b220280e2a2ccdc9c954ffbd488b67624180c33def841ab1af837c1eabb6e
BLAKE2b-256 checksum
How to use checksums
46785c0625250b37721d964448386a899b5771d2f0bc07f96c8cf1eb8a4b30e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 929.0 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3a535163d6a8fd918ade85f4f4a4eba726c7909e9b12ec94079f10c96abf7483
BLAKE2b-256 checksum
How to use checksums
f65af97c18250b91affb98c939287ec4877e314e2231e6e2f25022f957790f21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 946.8 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9fa6d06eaf30093d84259e83d84358cd6a7d322975dc057ccb761a236e87115e
BLAKE2b-256 checksum
How to use checksums
df2c460ac4932f76f65ec74887a25bf9d2aa5eb867bfbe51ef7d254ce8c50643
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp312-cp312-macosx_11_0_arm64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 599.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
32bc2d26ea244d9e53850ce413601f03e5e3ed950369a5bf6c0fa66a562e3c25
BLAKE2b-256 checksum
How to use checksums
d0a443cee77b898afb84780aab8295f5fadb5809de3ce0689a781db29e4835d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.0 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
84c448ef22b08c70e7521a8dee7daa796c468df0fd3d979b9e532351f198861b
BLAKE2b-256 checksum
How to use checksums
f6be255107069624851f4f351ed29614d99332d8ed9773c0da1fb45d7047f113
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 926.2 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c1309169f96bd9bc3c3a441b1ba8a3c34189fa07c8f6d7e99caf5fa77ed258c9
BLAKE2b-256 checksum
How to use checksums
ad0d8996f07b49eecd7f29bd596ca22270cf2e127aa5d61e2b5e598f9f5512a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 944.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
85b63af00e809cb5de869e488dd2c7552f7bd93a128ce5aabd512ed8bdbe606e
BLAKE2b-256 checksum
How to use checksums
9ef5dbcf2772d88dc3c45a53b7927b96e6e92aefc5ac42b3aa521cbd40798afd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / radfiled3d-1.4.0-cp311-cp311-macosx_11_0_arm64.whl

Incomplete provenance

This file belongs to a release with incomplete provenance: while this file has provenance metadata, other files in this release do not.

We recommend further investigation before installing this file. View details.

Download URL radfiled3d-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 593.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7c51d3ad0074aa30b65128a759e7f28e3bd430c1edb25845b2e04f925eae9727
BLAKE2b-256 checksum
How to use checksums
8cbf017595324fd67a2827108a04097f309212e021871f429d26b44303ba8705
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Security for RadFiled3D 1.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Incomplete provenance

3 of 20 release files were uploaded without provenance metadata.

Files with provenance 17 / 20
Files without provenance 3 / 20
Select from 20 files

Attestation for radfiled3d-1.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page