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.3+)
│   ├── signal_ext.rs   - Extended signal processing (v0.3.3+)
│   ├── optimize_ext.rs - Extended optimization (v0.3.3+)
│   └── stats/
│       └── mcmc_gp.rs  - MCMC and Gaussian process bindings (v0.3.3+)
├── 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.3+)

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.3+)

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.3.3.tar.gz (32.0 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.3.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.14Windows x86-64

scirs2-0.3.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

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

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13Windows x86-64

scirs2-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

scirs2-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

scirs2-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

scirs2-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

scirs2-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

scirs2-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

scirs2-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

scirs2-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

scirs2-0.3.3-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.3.3.tar.gz.

File metadata

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

File hashes

Hashes for scirs2-0.3.3.tar.gz
Algorithm Hash digest
SHA256 802eecd1d85d0e0b4b9832728a303c8b76ee26529ec89d83474fb6530378133f
MD5 a026aee93636569835935b723ca695fc
BLAKE2b-256 6ea0434482d10f7d7cbff23859aab93f19dbe19034df491e3b4f3c8544534ec9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eafe2ff70948f5e5774ccf9f27fd5c58dfa702df32269abbe7cbd4f3df2f0f8e
MD5 cb5964266bb1342bef8ca4696115d7ec
BLAKE2b-256 1615c877687463e531c691bb1af8293ac947bea1fbc7d9a4ae77ddd28271cf25

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dcd9755d960303be96244d8bad576773b6ae2a8fe32245bedd84d00058266472
MD5 4a2ec29d946a51c7202ffb403c33ea10
BLAKE2b-256 41497e02dc5c56b8efc9fae107f1d352779cfe970e3385feacf972385b489781

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9ed8510f9eb7f7884afe2620de329773ab475b5d6f4cb7de5a96d2bf7445b4a5
MD5 f3029511fc2728c00df497986539d278
BLAKE2b-256 2725205fa78c95773b81126a0e9b69ce03d78ec2897519f1bfcab118aa31aab2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: scirs2-0.3.3-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.3.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c28f2792d49fd7849d180fff6a7206a439e9e0d52b4d78928550fa8c0a8717ca
MD5 500a3c91ffce04a6be50c893e666c399
BLAKE2b-256 3a939a05a8091cb56f33365911c21cac3aac49edc808b28ef933599d44ca0f50

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66b1178dbcf2970ae6e8e5713f031cb0db84f3c53b8e6085fea962e4c279c522
MD5 96352d8c3c12f231ef31f927738bef35
BLAKE2b-256 d2bd5d69f64b5bbf6d64a4bc5ea2e23625b7cf81136fb4416071b0eb7aae00f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b85aedcacdcb98efd45faba7cba59fb1922174d560d1b0453ad71226c8263016
MD5 7a4c50015ee29f9c5e98b04a6b3055e4
BLAKE2b-256 e234e9393149916ba76804318ee1cd1fa8e8a5b16151c06f2ec77a6f1b70bd3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90135a06802abc6b2578bcd6d2aeef55df43440b5315e2250b2f64fc1938c87c
MD5 aab190921fc526243924400011ca8f55
BLAKE2b-256 3cbf5a75ad2d5602cb8ff6bfa33b2f7dccb7741b5bbea384397ae88e668f6b6c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a6fd26774bd38b3e2b8590f41743d04cba3b72758a4eb45da30720312a640807
MD5 86f5cfe18c706743e02eaefda9da9725
BLAKE2b-256 c3d1892bb92176d29979b8b0d2c6957d9d2f7cc4b351885e7396e000f577bf4b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 86aa0392bcd45e98af79ea66a950b8ade97db667aa80afea63e91f8ef639415a
MD5 904263388faf923d23a68f7d0363d7dc
BLAKE2b-256 b901fc3f0f789ae673a1d09308c1c8a739783653b85b023379f1d4d8ccda1074

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: scirs2-0.3.3-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.3.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 343a6479cefbe70d7198f8b7835045e4200eca880767562989895c3042532514
MD5 de985288d81605abddf1e5fa78ca76a3
BLAKE2b-256 04e7b9fb42b28271c1b5859fc2b4eaee0cb4c20374a122651fe9b59226181bbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 96a6828b81e7e69086c8e56f100f0fb3abfc5dc7a4743ecb2fc8b131e519d4ac
MD5 1f98ede6420d080ec03c27ddf0fefed3
BLAKE2b-256 177c73e6a8848f4bcb786f425911b68ca8a0369e0c7c48d26b0860a04cce5b96

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d5037c92708cefa265a5126438a8bb68e02e8ac43b781c58220c2ff34583dd9
MD5 d370d20ae9e58f6d2a9f15617b53c030
BLAKE2b-256 ca3ba65d5f3d88d699d75750a780eae3262d594cfc8041acaef21916bc6ff634

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 59dc06259c0b686b320ccd564b8163fd4849f1ea6644aba7aaaaaa2d048d0f1a
MD5 c40dc0049f6bf879f66e4fe97c59779f
BLAKE2b-256 b659f9e75a0d37e0d427c17eaf8969988d4108766f795a35866899af59fbe08e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 089016771d559bd1510f3f21bdd4af87fed74df5772d87023e0e0d3b4bdbbfd1
MD5 f0eaf495594e38927e1a8b23cd7ccf2e
BLAKE2b-256 8b67ed2efac6fe3e67e0712fef8c310a68b155eadbc325f8ec80ca94b866668e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: scirs2-0.3.3-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.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 926a48f4ec90882b70dbfc899ac81e49cd6ccf69b5239936a50e41d52c9e4643
MD5 3efb4e46df2be88c3dcdde1ccec08a66
BLAKE2b-256 0802f6b2815c6cfd33436925742b5fdf6a184c6f2ff2ab6bcbcd6804fff3c9f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84b49397a7cb1a9e7554d006a7bd1f274ac5cc37e1864863c908d5236cd1049e
MD5 623ceea561f2f9cde8897cd54101305f
BLAKE2b-256 44f28e7a9bd3da704a5aa4febcde204544fa7cb4279f14a4486faaf7bd3e9995

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e7b5158a2373719245ea59c6fcc647fe635a1464c98e8fea13d3a20b8ed967a
MD5 cf2978b7e50c6bb88ad259b890c8831e
BLAKE2b-256 ab03a4aea2883b53f7e12ea3c1c3be94aa9cd04a02270e96938840be8273aaac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9cbc151b5ab9bf347c1018c8fe2103a75d35ee6504d1daa2a32661ea84a89c1b
MD5 1a05d0289ec238055da59d3101bceca4
BLAKE2b-256 146c8710c874854723150dc22f38332da552d55299870fc98c5fa8f84496d634

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 72ecf401f8d7b6cb1bef509e712d5f06e47d612fc428dabaa0c88a8b2486d763
MD5 31046ba7ae09136e6e75985c2a74ee02
BLAKE2b-256 c36ad25b7f48385ae7d19815c278fede7fb8fe76911a9f45505d3940805878bd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: scirs2-0.3.3-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.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2a34cd73d1582d580420fc80e474aa4fc76ce4a7d07d524e019e907b4c123204
MD5 a2f8683504997a9437a3b896937eecee
BLAKE2b-256 94355205c018d87e5c35d8ecf47b30712714974ca07f017128ad13761e2f590e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25cd09731b4cda54b9e16ea223968a87fcc634f2962570167b5bfce104cb786b
MD5 8de32dbbdb9d3f9f277eab6e3e4a4afa
BLAKE2b-256 e745314918043c98e2c46d4777caf208db41df2a67ea32b84fe97dbe52cd08e0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 774d6341934b96d32f15281387e071dc74c3a04612922b42ff2cda843aed6154
MD5 74252af0e77faf55aa1565fbafbedf73
BLAKE2b-256 34debd96e873c1f2bc1e377b2e5ea833dc4b24a3265ad8b16819b356df6034de

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f40b003c0c30c2a2d9e6e8d0282d53416f3dba747a83e2385d8c348371ca8906
MD5 0c5084cceebe736e7ec7d0554b908b64
BLAKE2b-256 ddfdd423de8039f3ef6fe2025e625bdb635d7ac323e07b31fdf7c4e33227cab6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 061b8a2832734be626e648b8476f6f42d0b9c0fdd86a1320b42d8c5a6e5a91e1
MD5 33568d48dda0576625cc168fe6527c87
BLAKE2b-256 0f8044d86242840290e08b454dabc39e05887514ecfa8b4010db9076aee1221f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: scirs2-0.3.3-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.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a6af74034770d8a7050fdef024092a22b85879a55615cb63e44886458f41ae98
MD5 a047f71f7bd799e26473287f07fe440d
BLAKE2b-256 e9616f8382d364ecba638b9d5e395f8c38c503b050c795c3c63ddbd06bfda2f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7d1a9e4c00c3bc790fe7bd6245c9a5845674f82b0b597a933c37177ec41a93c
MD5 076d6a7e9a736ee5540da321b7858101
BLAKE2b-256 59db564ba7e72c5f151c68116e657d9cbfdb9cc1d0aa08d822311bef01d04fb1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 35f8d61bad4de75c753b13a8d5929ef84525a90e09654c491a3e42163e00f81e
MD5 7245fb202e656b966d956f78b6aa126e
BLAKE2b-256 e74742d436f249612643edef08b8b36174942d58012666a92a57fc7a62164f45

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2125f6c4608c2f174d106fb3e091a499053978f4ec087cbdfdb3e28654776205
MD5 3f08e9e99a53b94bbcb931f362f1818d
BLAKE2b-256 6a1da106d8ae77b9d9b4f31e743d33d2033975c611f2ae7619b6cb19b743db89

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b6fd8ed2c48b743bf3463bca2d2568ded7a88eefad8dc0c7baccb83f67403c23
MD5 be14278bff99c8d31c2f2ed0675ec5fc
BLAKE2b-256 19a19a9104b84a832679c7407fa4db95cbc16eb237922f1c7cc98738e5c9ee85

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0908c7540d922d43d5ef771e9ce2270587cd5940adbc230dbf267963583ab824
MD5 1d38ab2d75263c42415f006295bbfb19
BLAKE2b-256 2e5e50f7ffca0862674194aa0528922853924c0d117577e343457d1bb5184c08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for scirs2-0.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3913308d8ff34f09b4c23eef3b23b5f07f022d47ef987801667f3f2762df1aba
MD5 95a3ba55ad48dcad2624bf9ff401d7b1
BLAKE2b-256 03e2e0b7d31c06c3b5e4d3b324f954cc8b5f183eceb4ee320d09434908640070

See more details on using hashes here.

Provenance

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