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.4.0.tar.gz (35.3 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.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

scirs2-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp314-cp314-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.14Windows x86-64

scirs2-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp314-cp314-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

scirs2-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

scirs2-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp313-cp313-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.13Windows x86-64

scirs2-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

scirs2-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

scirs2-0.4.0-cp312-cp312-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.12Windows x86-64

scirs2-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

scirs2-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

scirs2-0.4.0-cp311-cp311-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.11Windows x86-64

scirs2-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

scirs2-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

scirs2-0.4.0-cp310-cp310-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.10Windows x86-64

scirs2-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

scirs2-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

scirs2-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for scirs2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 37e5459d422e71a52e4ae30395d9b3df2424a5b9d995206bdf6374fa75ff25b9
MD5 8e76cb87355c647e9c45c72b0b547efd
BLAKE2b-256 322aece8f0b13c93afcbd1e788ad6246b89e05a87429519d9967e8d317fe9228

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2534ae4caece4e7e96c7b501f3488bde1c305eeecd25dae9ec893b37654a9c5
MD5 b3ae02724b873d73872727fef06414ac
BLAKE2b-256 6c22723286a27538c71374bb856c853d50dc5baf70ea3318c6c4df05489fadbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51e63225bd3574021d7062b7f3ecb99250936d3f8b7934ab72b033cd2e93db22
MD5 db34389a20006cae00475c644abd467e
BLAKE2b-256 635db1b9757612202c52396837981cc64899c9c3c9783e12d4d4f186f55b0119

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 116166cae291457c51437dd4100bd0e48fbffcde5b5213deb6d4b3ad29bcca02
MD5 27550a832daa5994c3bea2ec61c35f43
BLAKE2b-256 cf08dd641114da84684a1e5c2c74958ba2f35f1841ca5b3deab4d0a4edf5c6ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.4.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scirs2-0.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bea88d7ead62624e71123f7bbbe7b82f5d4ff6f4af9ad6a822a9907fb8846593
MD5 d5278b7695f43c51d4109456053bc8c5
BLAKE2b-256 9dd636a637eefbc5a26b2acfdf7a3eeef56b7c05a4a0bcbd5699d41f05b852a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31eafeeb548a0773926d7697a3c8ab4fd3e3339c577f60380c329033de6de91b
MD5 e0e274fff296a2c804c7b5c8228f0927
BLAKE2b-256 5e624b7cf07cd050577cd7d421e3f55fbdb907fb1d3929f7087a95a43f60a3ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c19c946361f56584e5b64c7e65b9aebf874f26c09d721b22c5fec56e94848a44
MD5 e85ec66f8b87c494c570b61fa3dd097e
BLAKE2b-256 7f30e38997dec7d5c2d73e94e6207e3765d69b2c51530ede02538c29ab33befb

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9c37d31a3379f189620504f8330383ec3c8682f7b0913146a0ba3b92911212e
MD5 587dfb896a53725f85d156ce82b63262
BLAKE2b-256 dadd7b7ca706df648f1e4f5e87365557e059f2ba249356f3a25bfaa3c4854370

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ebbc1eaaa9370639c677b247a2d4c7abced55bc254fc61097508cd5ae6e8c827
MD5 2a0e882b93559e74f1fae39b41a2fbc0
BLAKE2b-256 b280bcd35358ac9d2fc5df6a05cae9df75efa3639a5abdc98ebfc9dc5854272b

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e2417256332a7adae9800e71e0037d7ec939609539eed0f325ad4b18f0cfddc
MD5 51c3354297e3c6e6adcb71020658e7ee
BLAKE2b-256 87da21a01711a7f7651c72617f310811a8e15e2ae52eba99e7a99b5fc93c890c

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scirs2-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ab4810538734c6342e48c2ad5a97acc4e44549e3702245b7d3e269054bf6c028
MD5 6a82e0e059e16d1311b9380b192d9756
BLAKE2b-256 f2f4e21c393e8f3b1b8d46c98bc1956bbe1a80abe60a6c5947f5b857e84ec538

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a263d915bbb2feec52ae555f42ea75491d82d9f89e561229a24ab5fe4b54752
MD5 b9437294cb2f29113a1d571b72e2e01f
BLAKE2b-256 65ba4fc11a17062f4a54a98e3f24938aa5efb157af1f01f377d0783710a778f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 58374f342e4902cc228e701878634231d63b5ddc0592486eaaa3869fcbb8255b
MD5 b3d1b4bc8d8b4ea4dbb1bc8f72c2f891
BLAKE2b-256 9f3ed6c385f740b1c516d5e373967836ba70b1befb74acd8c83f989399dad3e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 666bca6b9581f01dad2a3a7cc91bab62092d133726b1bdacb1b92fb12146f528
MD5 aeae4ee740860980e5f55465a4e67381
BLAKE2b-256 2d34986063d5695834c9abb12c2dd8d5cfb507c9178d553f775dc9ff13d53f3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5a258ce546b1b8535bfd500509bb3f8c83e2f9dad600395ae08d1773643e49c7
MD5 dfc6e5d5dd77bdd931b16b084fe09712
BLAKE2b-256 3fbad2039ac651882df4c3297383806560def4a1b179a55ff8e98cd7387a4fc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scirs2-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fb31e4a0b882dd6ea59e1dcc7e4ff41842f621ea299dd0f508c704e09ff1d286
MD5 5f3198694ab45c76af337065b975c303
BLAKE2b-256 81ef8ad001e8b13d23e0198d30d4026d359099a1c3cc95ae5d515276e5921f0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8f728f52b50c96266ad6faeb86780a62c70a217d906994d8090d5030df67c04
MD5 bd1343ffbbd1dcbb9e6f4c465c6df8ef
BLAKE2b-256 5b06b8d1900c19a94acc2fc7704f39aa660049a03d768c1a2dd4d3dac3496bb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd5dcf8189b9c2fa2db8b678671679aed84c9155a1b8f44772bcf4a17e227393
MD5 f4b1802a2c95028721605bc39395e21f
BLAKE2b-256 d7e70da0450afad3e7ddbd30872d0a462b09d50b036f7030115649cd52204c8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d255f46dcfd0c33a1e4beeac950ff5aee35b09089b3ace67fcc36198074a487
MD5 638cf30444c1bcea36e1edf160c95090
BLAKE2b-256 25bf63dab52535615505273c0493330c3dca594a356ff30f27663285a87ca009

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cdccaf8e2c1622b8529e91d6a36a7e3d0a9a8ab22cc2b10cd1d9234a52bdb872
MD5 4a6cdc584b3d568edbe25bfe29772c8c
BLAKE2b-256 2e159185656a944d208877dc1a9d9ed29a704b13e2a529850a0e0b3127509ca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scirs2-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7e64440305e60e0c58966603a13d2cb7d4b994ef6d1fcf0bfec2fc7243df0f08
MD5 2de2debb2db1626fa04782112a35dad1
BLAKE2b-256 9e3d1fd152c1055f00eb1dde293548e8347326d231a63937571bc40579e34e57

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b73869247efc28a6f55f345326bbfd3cdfa4090d359b71a44b153b4347f26a3a
MD5 f2e1bd72fcd54d32b50ebbb203b08cc8
BLAKE2b-256 f418a2730a07ea847172daf6db68bec69d2a2557fa0318185068d007ac2f2fdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 436397683968769303887712a2a6ae2d40d2e5c008bb1073e019d766a772439d
MD5 f131a7b89b1048bceee9800aee28f942
BLAKE2b-256 71f2f25059dfcead4f2d0739bdfaf98cdf7d44a4cc3a2b83ed4273dbffde8e62

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20666bb1709ca95871c9b6924ecb0047e2a40671e115b8791816413e7d148497
MD5 6ec35a31ef56002e11429c3c968cb9ce
BLAKE2b-256 e6953d6c13cf7925ce8107baf61e93d564dd7a6c039c2364ad47fabed48e794d

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c9fd341109ea28af3e41b2d50143a94538eeb3c1dd523a8d42a601ff88b96440
MD5 8e78355fbea84abe2b302f9b4c5604ec
BLAKE2b-256 83f7c7513fca5cc78eea6914a6740a0263acb794a71115a176d47232733296ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: scirs2-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scirs2-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e7ef5bd6361a11b81c48fb414e50eab362bf582ccfe01472f7bae91bb213fd54
MD5 f8eddd0d4164d0402fde147be7a6773f
BLAKE2b-256 a543da187addf51bc348622e61933f63efaaf2e4962dadc5c6a76c524fedaca0

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 085526e2ed52fabfa32a06760c7a0a4778711fbd5c868203e50e339a8b42f541
MD5 edab8510856f4620ef8900327ca1d2c8
BLAKE2b-256 7b3d68af28933aaf4fe263f7ca5cc75022c81abedadc3dd3ff0700632082be14

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0d4404c13ab7eff6645f7c00c763ca95462d6ca412586901c40a403ca71936df
MD5 ac834b7c67ebbee7b00d928bd8688948
BLAKE2b-256 6d3c5805fcc60e436ffe8f3b95397783b09452510adbfe550dec85f4b0a3165a

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1685a1bcc46e3b06fcb75414d9b9c1c87008ab091c1d1baa6732bc7a1ac214fa
MD5 50a38ec7b54e6f68fb80dc2800a962db
BLAKE2b-256 d58304763ea3ec5d026d48d16d143a563c685917956a7649b2b2dc4b241f98eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cbbcd63c2de5642058a8a442c2e0b7be9fdb7dbb1a8f92b8bf92fd41ef9c1418
MD5 5a9a7fbc6e20c6231fa08045e2dd9e00
BLAKE2b-256 3a5a433616d7a07e6c7f9ba6d33bd9e620e21066c5b14676e41b1efe23842505

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efa1605377e3402eadcaf4f6218a584dd423f4c7663ec0e1764759b049091249
MD5 3ed65e3d5e6ff70d1a8c87f2f02801b9
BLAKE2b-256 1823db5a9e2852e2c1e2b0e419c6f8cef20256b6627266c371c6359a2869ef53

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.0-cp38-cp38-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.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for scirs2-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0f79d6c898288229e23dd815417eee503a09b2f2b09ea1838a60fdbe23840d33
MD5 aba65ca53c3668be20bd0232ec3fbbc0
BLAKE2b-256 d3d880df0d1e5c1472de8e84414cad1989186ea68ec349f60fc04319ea6b06e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for scirs2-0.4.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