Skip to main content

SciRS2: A comprehensive scientific computing library in Rust - Python bindings (SciPy alternative) with async support and pandas integration

Project description

SciRS2 - Python Bindings

SciRS2: High-performance scientific computing in Rust with Python bindings. A comprehensive, type-safe alternative to SciPy with exceptional performance for statistical analysis, linear algebra, FFT, signal processing, clustering, and more.

PyPI License Python Version

Overview

scirs2-python provides Python bindings for the entire SciRS2 scientific computing ecosystem using PyO3 and Maturin. It leverages scirs2-numpy — a SciRS2-maintained fork of rust-numpy with native ndarray 0.17 support — for zero-copy NumPy array interoperability.

Key Characteristics

  • Exceptional Statistics Performance: Up to 410x faster than SciPy for higher-order moments (skewness, kurtosis) on small/medium datasets
  • Pure Rust Stack: OxiBLAS for linear algebra, OxiFFT for transforms — no system OpenBLAS or FFTW required
  • Zero-Copy NumPy Interop: Direct memory sharing between Rust and NumPy arrays via scirs2-numpy
  • SciPy-Compatible API: Familiar naming conventions for Python scientists migrating from SciPy
  • Maturin Build System: Single pip install scirs2 — no C/Fortran compiler needed
  • Type Stubs: .pyi files for full IDE autocompletion and type checking
  • Feature-Gated Modules: Enable only the SciRS2 crates you need

Architecture

scirs2-python/
├── src/
│   ├── lib.rs          - PyO3 module registration
│   ├── linalg.rs       - Linear algebra (OxiBLAS-powered)
│   ├── stats.rs        - Statistics and distributions
│   ├── fft.rs          - FFT (OxiFFT-powered)
│   ├── cluster.rs      - Clustering algorithms
│   ├── series.rs       - Time series analysis
│   ├── signal.rs       - Signal processing
│   ├── optimize.rs     - Optimization algorithms
│   ├── spatial.rs      - Spatial algorithms
│   ├── sparse.rs       - Sparse matrix operations
│   ├── ndimage.rs      - N-dimensional image processing
│   ├── graph.rs        - Graph algorithms
│   ├── metrics.rs      - ML evaluation metrics
│   ├── io.rs           - File I/O (CSV, HDF5, Parquet, etc.)
│   ├── datasets.rs     - Dataset loading and generation
│   ├── transform.rs    - Dimensionality reduction
│   ├── text.rs         - NLP and text processing
│   ├── vision.rs       - Computer vision
│   ├── linalg_ext.rs   - Extended linear algebra (v0.3.4+)
│   ├── signal_ext.rs   - Extended signal processing (v0.3.4+)
│   ├── optimize_ext.rs - Extended optimization (v0.3.4+)
│   └── stats/
│       └── mcmc_gp.rs  - MCMC and Gaussian process bindings (v0.3.4+)
├── tests/
│   └── test_module_structure.py
├── scirs2.pyi          - Type stubs
└── pyproject.toml

Installation

pip install scirs2

For development (builds Rust from source):

pip install maturin
git clone https://github.com/cool-japan/scirs
cd scirs/scirs2-python
maturin develop --release

No system BLAS, OpenBLAS, or FFTW installation required — SciRS2 uses pure Rust OxiBLAS and OxiFFT.

Quick Start

Statistics (Fastest Module)

SciRS2 delivers exceptional speed for statistical analysis:

import numpy as np
import scirs2

data = np.random.randn(1000)

# Basic statistics (5-25x faster than NumPy on small-medium data)
mean     = scirs2.mean_py(data)           # 8x faster
std      = scirs2.std_py(data, 0)         # 14x faster
var      = scirs2.var_py(data, 1)
median   = scirs2.median_py(data)
iqr      = scirs2.iqr_py(data)

# Higher-order moments (50-410x faster than SciPy!)
skewness = scirs2.skew_py(data)           # 52x faster
kurtosis = scirs2.kurtosis_py(data)       # 52x faster

# Correlation (17-127x faster)
x = np.random.randn(100)
y = np.random.randn(100)
corr = scirs2.correlation_py(x, y)
cov  = scirs2.covariance_py(x, y, 1)

# Full descriptive summary
summary = scirs2.describe_py(data)
# Returns: {'mean', 'std', 'min', 'max', 'skewness', 'kurtosis', ...}

Linear Algebra

import numpy as np
import scirs2

A = np.array([[4.0, 2.0], [2.0, 3.0]])
b = np.array([1.0, 2.0])

# Basic operations
det   = scirs2.det_py(A)
inv   = scirs2.inv_py(A)
trace = scirs2.trace_py(A)

# Decompositions
lu   = scirs2.lu_py(A)       # {'L', 'U', 'P'}
qr   = scirs2.qr_py(A)       # {'Q', 'R'}
svd  = scirs2.svd_py(A)      # {'U', 'S', 'Vt'}
chol = scirs2.cholesky_py(A)

# Eigenvalues/vectors
eig  = scirs2.eig_py(A)      # {'eigenvalues_real', 'eigenvalues_imag', 'eigenvectors'}
eigh = scirs2.eigh_py(A)     # For symmetric matrices

# Solvers
x     = scirs2.solve_py(A, b)
lstsq = scirs2.lstsq_py(A, b)

# Norms and properties
norm_fro = scirs2.matrix_norm_py(A, "fro")
norm_vec = scirs2.vector_norm_py(b, 2)
cond     = scirs2.cond_py(A)
rank     = scirs2.matrix_rank_py(A)

FFT (OxiFFT Backend)

import numpy as np
import scirs2

data = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0])

# FFT (2-5x faster than NumPy on small data < 2K samples)
fft_result = scirs2.fft_py(data)           # {'real', 'imag'}
real, imag = fft_result['real'], fft_result['imag']

ifft_result = scirs2.ifft_py(
    np.array(real), np.array(imag)
)

rfft  = scirs2.rfft_py(data)
irfft = scirs2.irfft_py(
    np.array(rfft['real']), np.array(rfft['imag']), len(data)
)

# DCT
dct  = scirs2.dct_py(data, 2)             # Type-II DCT
idct = scirs2.idct_py(np.array(dct), 2)

# Helpers
freqs    = scirs2.fftfreq_py(len(data), 1.0)
rfreqs   = scirs2.rfftfreq_py(len(data), 1.0)
shifted  = scirs2.fftshift_py(data)
fast_len = scirs2.next_fast_len_py(100, False)

Clustering

import numpy as np
import scirs2

X = np.vstack([
    np.random.randn(100, 2) + [0, 0],
    np.random.randn(100, 2) + [5, 5],
])

# K-Means
kmeans = scirs2.KMeans(n_clusters=2)
kmeans.fit(X)
labels   = kmeans.labels
inertia  = kmeans.inertia_

# Cluster quality metrics
silhouette = scirs2.silhouette_score_py(X, labels)
db_score   = scirs2.davies_bouldin_score_py(X, labels)
ch_score   = scirs2.calinski_harabasz_score_py(X, labels)

# Preprocessing
X_std  = scirs2.standardize_py(X, True)
X_norm = scirs2.normalize_py(X, "l2")

Time Series

import numpy as np
import scirs2

data = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])
ts   = scirs2.PyTimeSeries(data, None)

# Transformations
diff1    = scirs2.apply_differencing(ts, 1)
seasonal = scirs2.apply_seasonal_differencing(ts, 4)

# ARIMA modelling
arima = scirs2.PyARIMA(1, 1, 0)
arima.fit(ts)
forecast = arima.forecast(5)
print(arima.summary())

# Box-Cox transform
result      = scirs2.boxcox_transform(ts, None)   # auto lambda
transformed = result['transformed']
lambda_val  = result['lambda']
recovered   = scirs2.boxcox_inverse(np.array(transformed), lambda_val)

# Stationarity test
adf = scirs2.adf_test(ts, None)
print(f"ADF statistic: {adf['statistic']}, p-value: {adf['p_value']}")

# STL decomposition
decomp   = scirs2.stl_decomposition(ts, 4)
trend    = decomp['trend']
seasonal = decomp['seasonal']
residual = decomp['residual']

MCMC and Gaussian Processes (v0.3.4+)

import numpy as np
import scirs2

# Gaussian Process regression
X_train = np.linspace(0, 2 * np.pi, 20).reshape(-1, 1)
y_train = np.sin(X_train.ravel()) + 0.1 * np.random.randn(20)

gp = scirs2.GaussianProcessRegressor(kernel='rbf', length_scale=1.0, noise=0.01)
gp.fit(X_train, y_train)

X_test = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)
mean, std = gp.predict(X_test, return_std=True)

# MCMC sampling
sampler = scirs2.MetropolisHastings(log_prob_fn=my_log_prob, step_size=0.1)
samples = sampler.sample(initial=np.zeros(3), n_samples=10000, burnin=1000)

Extended Optimization (v0.3.4+)

import numpy as np
import scirs2

# Gradient-free optimization
result = scirs2.minimize_nelder_mead(
    lambda x: (x[0] - 1)**2 + (x[1] + 2)**2,
    x0=np.array([0.0, 0.0]),
    tol=1e-8
)

# Constrained optimization
result = scirs2.minimize_slsqp(
    fun=objective,
    x0=x0,
    constraints=[{'type': 'eq', 'fun': equality_constraint}],
    bounds=[(0, None), (0, None)]
)

Performance Guide

Where SciRS2 Excels

Operation Data Size Speedup vs SciPy Notes
Skewness 100 410x Higher-order moments
Kurtosis 100 408x Higher-order moments
Pearson correlation 100 127x Small dataset
IQR 100 95x Quartile calculations
Percentile 100 49x Distribution analysis
Skewness 1,000 52x Medium dataset
Std 100 25x Small data variability
Mean 100 11x Small data average
FFT (rfft) 128 5.2x Small signal
Linear solve 10x10 9.4x Small systems

Where NumPy/SciPy May Win

Operation Size Notes
Linear algebra (SVD, QR) 200x200+ SciPy LAPACK highly optimized
FFT 32K+ samples NumPy FFT optimized for large N
Basic stats 100K+ elements NumPy C SIMD optimizations

Recommended Hybrid Approach

import numpy as np
import scirs2

data = np.random.randn(1000)

# Use scirs2 for statistics on small-medium data
skewness = scirs2.skew_py(data)      # 52x faster than SciPy
kurtosis = scirs2.kurtosis_py(data)  # 52x faster than SciPy
mean     = scirs2.mean_py(data)      # 8x faster
std      = scirs2.std_py(data, 0)    # 14x faster

# Use scirs2 for FFT on small signals
signal = np.random.randn(512)
rfft   = scirs2.rfft_py(signal)      # 3x faster than NumPy

# Fall back to NumPy/SciPy for large transforms
large_signal = np.random.randn(65536)
spectrum     = np.fft.rfft(large_signal)  # NumPy wins here

Feature Flags

Enable specific SciRS2 crates in pyproject.toml:

[features]
default = ["linalg", "stats", "fft", "cluster", "series"]
linalg      = ["scirs2-linalg"]
stats       = ["scirs2-stats"]
fft         = ["scirs2-fft"]
cluster     = ["scirs2-cluster"]
series      = ["scirs2-series"]
signal      = ["scirs2-signal"]
optimize    = ["scirs2-optimize"]
spatial     = ["scirs2-spatial"]
sparse      = ["scirs2-sparse"]
ndimage     = ["scirs2-ndimage"]
graph       = ["scirs2-graph"]
metrics     = ["scirs2-metrics"]
io          = ["scirs2-io"]
datasets    = ["scirs2-datasets"]
transform   = ["scirs2-transform"]
text        = ["scirs2-text"]
vision      = ["scirs2-vision"]

Type Hints

import scirs2

# IDE provides full autocompletion from .pyi stubs
result: float    = scirs2.det_py(matrix)
svd_res: dict    = scirs2.svd_py(matrix)
fft_res: dict    = scirs2.fft_py(data)
labels: np.ndarray = scirs2.KMeans(n_clusters=3).fit_predict(X)

Building from Source

# 1. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 2. Install maturin
pip install maturin

# 3. Build and install in development mode
cd scirs2-python
maturin develop --release

# 4. Run tests
pip install pytest numpy
pytest tests/

Dependencies

  • PyO3 - Rust/Python FFI
  • scirs2-numpy - SciRS2 fork of rust-numpy with ndarray 0.17 support
  • Maturin - Build system for Python/Rust extensions
  • OxiBLAS - Pure Rust BLAS/LAPACK (no system dependencies)
  • OxiFFT - Pure Rust FFT

Related Projects

  • SciRS2 Core - Rust scientific computing library
  • scirs2-numpy - NumPy/ndarray 0.17 bridge
  • NumPy - Array operations
  • SciPy - Python scientific computing (API inspiration)

License

Licensed under the Apache License 2.0. See LICENSE for details.

Authors

COOLJAPAN OU (Team KitaSan)

Project details


Download files

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

Source Distribution

scirs2-0.5.0.tar.gz (37.2 MB view details)

Uploaded Source

Built Distributions

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

scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp314-cp314-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.14Windows x86-64

scirs2-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp314-cp314-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

scirs2-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

scirs2-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp313-cp313-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.13Windows x86-64

scirs2-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp313-cp313-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

scirs2-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

scirs2-0.5.0-cp312-cp312-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.12Windows x86-64

scirs2-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp312-cp312-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

scirs2-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

scirs2-0.5.0-cp311-cp311-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.11Windows x86-64

scirs2-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp311-cp311-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

scirs2-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

scirs2-0.5.0-cp310-cp310-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.10Windows x86-64

scirs2-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

scirs2-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

scirs2-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file scirs2-0.5.0.tar.gz.

File metadata

  • Download URL: scirs2-0.5.0.tar.gz
  • Upload date:
  • Size: 37.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scirs2-0.5.0.tar.gz
Algorithm Hash digest
SHA256 9682236a88afd2de3731470ac6ed299cfd175a0150fc595cbcb519a5009f621b
MD5 f14b8f342fb834df7a45a616c57cf2cf
BLAKE2b-256 73bd86a6962d6648673b4e10a0dd5a93b90b68c87a9e9871d381b04202a698ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0.tar.gz:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6abe04cfcb3060f32f2e9eb3c862d842e2a22bb8785b3cc5133b3801870f50c9
MD5 5634c28dae16680b24d0f1a57b9b3a37
BLAKE2b-256 d0852ef3eff2dba6bb2a7dd3998199f0b19b552ed8ba5bf4e66b5e0273a1b695

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 281bfdd4eb8b99e222f5e9e178c96fde7d616ad57bb94c3b625f99dc5629ff40
MD5 a00932e6a2654ad67b17dbc5e1debbb7
BLAKE2b-256 9fc3d6d8e9925b734f9b035c64988c8f6c545052b598f9930c46cc3c89689c7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0edf2d266b01a84dbcb954f34679d2355f6eb5a18b39d221b950fae995ba1198
MD5 31c2889ac5608afc807b5c7ba6d2074c
BLAKE2b-256 cefb4f8ea78d63bd87b967e9cef32af066dfbf790309341595e6b87450342774

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e2154b5828f430d8d939e1a3a789f9dc455097845b42df89ab393452cd63e085
MD5 488f78f1a7d27442d5fd6be5f0c641c1
BLAKE2b-256 f131cc77dfc59f1f592883cb9c0da3cf022694c194f129def98f14bdcd87ce13

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.5.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 4.7 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 scirs2-0.5.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 19ae9bcd14cc9cfa0f53df36b8c682c17fabe75bfee84cc3168f2f05c4e946a0
MD5 c45a2032a2768cb0155f1487a2601182
BLAKE2b-256 e1bd3eafca5394e6779924b112b189359f96b963dfaee2458874de36f08c7c12

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36aa3fb791c4a8fa530864c1754fabd0b3dd82345f3dda469c6fcc593d41d16f
MD5 68ed7b1b8d967417d0880ecb77062480
BLAKE2b-256 c333bc2810fc0931a73dddbc6d1eca3d83199f36ab80f0b7271a62a0d4a0dfb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e70007844b172e746ff5f753b0b8175124f9da8d9ce2d63336cef5413508794
MD5 97ee230e94b72b6e14868112b7d07b2e
BLAKE2b-256 111ba7bd44bc99d371374c23aaeea3aa5f8fe6f6cdf7d5a1de879fafbc02352f

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99c7a1082cd2497db10a259a0a48b5bd5300e57009f650399df7391f8e7d76ee
MD5 7cd818cb1bba37786c1dd09909178eae
BLAKE2b-256 6506502bb684815ad9210019d14e777726f2ccc648567b7a75e546a05e545f27

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 65ccb70bd5afc6aa9a6aa348c9c41211bd1b9765525f69d02179fddcba2eae09
MD5 723afe5b8e8b1fdef0b2b833e8262ce8
BLAKE2b-256 b6862e55170b4b4980150b3a708708c6a22018dd31061518d67fcb78e7a371eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 56db81c2a6780865299cde5732c3a75c2e09379b211e801e5e35e260bf6b61d3
MD5 6a2297486ca61aa43135a86a17027a0d
BLAKE2b-256 10fe7b3e93a31a30c5c82e44157bce3c44737498c725d04dfe0e73312f75e693

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 4.7 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 scirs2-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bd740982de8ec5528fc119455de6724473b41fdf00c9d27a3471414cda68bb3a
MD5 e676a4db14ee1c1e3d91e026e4f963c9
BLAKE2b-256 aa07d7788b0fe1a20ccb52d6eec8ef0980bb5b588b7cdbf10d18872746e8fa85

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d4ff8559a7d6ed72a85b1c1de5fbeadcab43d63f01d69e999ff0d2529255fa2
MD5 77bac4b7db2024bd6bc07aa3cb29d88e
BLAKE2b-256 00b267ec1ea717c2f826d35146b412168dcbe15d2e11d155ab895846425a9242

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60b97876dbf98901a782bbc870a7bbfda9862e5a7f4bfc201e88d3f2af78062a
MD5 7afec36e0a0632106fa837aded604fee
BLAKE2b-256 ab7162bc391f86d5388f15e425f3be1529816246c551c09be45b2c3dd9e38160

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ae0b93436c002b6eb678c531407b8084b45f693ea51d1c5cd46cb277eb816d9
MD5 04cb4ef7a0e44959fab01ac5ce8137aa
BLAKE2b-256 ae552d0d9d2f853c6863d716ce953b36791ffa78d2e199093ff4634f693d0a7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 07f4ff894d3b609659e1931b5bc079ee5de45f7211d3224195508d2b8d78a927
MD5 38b189652eeb8b96f558d0c8e6bdc9dc
BLAKE2b-256 2c68213a6f356aade9b853a10cc540c74f0c52cd0bd46693ea69cf529b6e5a96

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 4.7 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 scirs2-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a63b8f7412e81a7461d19554519c24f2931e7d2aa5ccf498fa41c56947fd3574
MD5 f304a451f28101b6f8023f34ca42aae5
BLAKE2b-256 48791b6ce0b6dfec8f62ca434c12581dbbc6abb8daf366138ccdd08b82f4ba1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp312-cp312-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecc9da69e5f22ac6187906483f1bf5a6c40c31699b04fad6a381e2b8f3013578
MD5 6f96057cb65f1675a5fb1e8c43af821d
BLAKE2b-256 d05508040df914416a9f945d4a9a0ab2adaf07c0a2896113009bfe31ca9e86de

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a7b99e9e4f9ead9531d3928d0c1a3adca14e59ff0ffa6209cfaeff36d852166e
MD5 28523fd8e3b216d890c581ace644ea63
BLAKE2b-256 1d25d6f9c625ad4922b1ba2f3c4c10c1e48cb7e6b89f531f3f83174429ca948e

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4793772be1f563796efcf87fb7f7f1a11dd31e4614a12a7278d95aadeee1f139
MD5 1be142efe287896b0a87121fb2853c23
BLAKE2b-256 e880ac8f2096190c164db3b8f1d8d2ef7f27d070c38edf61bbce419fef242d75

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8648844326c57b46ff99c2b8d985acd08374b3b4da292fbbfe7fd32c3f4a28ea
MD5 5dab8d87f912d716508f200a27d459bf
BLAKE2b-256 b998cbed53717a6c42ad53adf36b9dfef464b33a18570347d74158d88d40d474

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 4.7 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 scirs2-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 455caf844bb19bbb8ede243654d5f74cb18620ac58407fa7a8184c417f2949c3
MD5 35274049c83d924f4cc3f3d8fc682219
BLAKE2b-256 d7518a2239c4b0836bb515f0f3e94d587ea265d4f904474ebd8f675681c7fad5

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp311-cp311-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97164c09d6b1aca60309d11d741f2b2b80e790ef7deae92ffb06abdd2b3ae8d3
MD5 37f860d455d1709b5a6312489885d367
BLAKE2b-256 83c73a9ddedea65d23673927d9c6698d88c9c8a89e9c088c0d4da9c2c8b3fc42

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 727e25b837f1d78dbd957c39a480bcb40433ab0ef46f87d54520210bac8b5ce0
MD5 2eb960aa60fbf13da6bcc4d151f574dd
BLAKE2b-256 d1ea395ff06d57b543f16d2b89fa4243ca17979813afe9e00475ae301e0e4c33

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dff59e65723e66d0529cece222aa71c2274cc974ed97079dc067a25987c2a8e3
MD5 7920d1c7ea28828a58af77595e708a9a
BLAKE2b-256 7b358b18545e8104d2e4b4d6e9cde58bffaf7b977ae42b83d698b8ec9ff986b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 04fb74602fc020506d03e6dd1bee9b584871f84a7e4d3dc537c3a5438b527d92
MD5 e60181f43e4d6303692bc494cd683273
BLAKE2b-256 57255b1020866f1e392b535a269d85c2c04ee76352ebb2c43a9c07b7509a4617

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 4.7 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 scirs2-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ccafc22463b2fab4ba3e970241b28f5d24e4525aa44ee64f0b007102ae051709
MD5 5a554e95e15d51a3b8b4cbab8fb498a4
BLAKE2b-256 e7c49658892146ba1e7fc5630c9cca9f972c96280531292559192f8471ac3aac

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp310-cp310-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8728718804fe47ccbbdb6ddf74b624043810c2ef9ca9435650457e26df449db0
MD5 6202e20b057b23b3264b9e20e0503b90
BLAKE2b-256 d62818f64447d118fcfa7262e1cae7cfa464061856fa454b03a41889422f3c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2211e4ec1977c4b45514f517f70d0d3ffa542423c1504c47d3493918041a32df
MD5 154eb8085c3dc6067ea59fe53007af70
BLAKE2b-256 18aa90f7728b40dc9c195517cc5f27634a8d64d47253a94ae72103bbfb70d531

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3aec6b0a8d9078c7e763c659678f1053a74f7755e7924496dd30db23bbd99c1f
MD5 e770e211b2668acf114b08593deebab3
BLAKE2b-256 959277cc3e4f391d00e72a67caaa9c66f1607866de0e2ee7eb57eaf77b29fcbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 819e2eb8cce5b082fc651850df12e1cee9d5f5804f7d6701c76fda41ce9bb4bd
MD5 8bca7806b2d037d8e28ae049d7659433
BLAKE2b-256 38f450b49feeac3368bbfb5132f50e21419c7311e81ec9e216456a72f513d1af

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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

File details

Details for the file scirs2-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d00b683bd4a10f83b9e367cfc3c27a36441b3b92d782740709daddf84cf83c53
MD5 7948ec6d75059c5ad9ebbc3f3730af3b
BLAKE2b-256 ff94231d12bcbd874e9a412b3f55255b1740c7b416dac3d433ad269ba6a52928

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/scirs

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