smooth
Python implementation of the smooth package for forecasting and time series analysis using Single Source of Error (SSOE) state-space models.
Every wheel published to PyPI is signed via Sigstore on the exact GitHub Actions runner that built it and ships with PEP 740 attestations (SLSA Build Level 3 provenance). Verify a downloaded wheel client-side with pypi-attestations:
pip install pypi-attestations
pypi-attestations verify pypi --repository https://github.com/openforecast-org/smooth smooth-*.whl
The package includes the following models:
- ADAM - Augmented Dynamic Adaptive Model, uniting exponential smoothing, ARIMA and regression, implemented in the
ADAMclass. - ETS - Exponential Smoothing in the SSOE state space form, implemented in the
ESclass. - CES - Complex Exponential Smoothing with complex-valued smoothing parameters, implemented in the
CESclass (fixed seasonality type) andAutoCESclass (automatic seasonality selection). - MSARIMA - Multiple seasonal ARIMA in state space form, implemented in the
MSARIMAclass (fixed orders) andAutoMSARIMAclass (automatic order selection). - OM - Occurrence Model for intermittent demand, implemented in the
OMclass (plusOMGfor the general two-component model andAutoOMfor automatic type selection). - SMA - Simple Moving Average in state-space form (an AR(m) model with fixed coefficients), implemented in the
SMAclass with automatic order selection. - TBATS - De Livera et al.'s TBATS in ADAM's framework, for multiple and non-integer seasonal periods, implemented in the
TBATSclass. - SM - Scale Model, a second ADAM fitted to the scale of the error term so the variance evolves over time, available as the
.sm()method on a fitted model.
The package also provides standalone data generators that mirror R's sim.* family — sim_es, sim_ssarima, sim_ces, sim_gum, sim_sma, and sim_oes — plus a .simulate() method on fitted ADAM, OM, and OMG objects. See Simulation Functions.
All of these are implemented with the support of the following features:
- Automatic components selection in ETS and forecasts combination
- Explanatory variables
- Multiple seasonal models (e.g. for high frequency data)
- Advanced loss functions
- Fine tuning of any elements of ADAM/ETS/ARIMA/Regression
- A variety of prediction interval construction methods
Like the R version, the Python smooth depends on the greybox package for distributions, information criteria, regressor selection, and the LOWESS smoother. It is installed automatically as a dependency.
Installation
From PyPI (recommended):
pip install smooth
From source (development):
pip install "git+https://github.com/openforecast-org/smooth.git@master#subdirectory=python"
See the Installation Guide for platform-specific instructions.
System Requirements
If installing from source, this package requires compilation of C++ extensions. Before installing, ensure you have:
- C++ compiler (g++, clang++, or MSVC)
- CMake >= 3.25
- Armadillo linear algebra library
Quick Example
import numpy as np
from smooth import ADAM
# Sample data
y = np.array([10, 12, 15, 13, 16, 18, 20, 19, 22, 25, 28, 30,
11, 13, 16, 14, 17, 19, 21, 20, 23, 26, 29, 31])
# Fit ADAM model with additive error, no trend, no seasonality
model = ADAM(model="ANN")
model.fit(y)
# Generate forecasts
forecasts = model.predict(h=12)
# With seasonal component (monthly data, annual seasonality)
model = ADAM(model="ANA", lags=[1, 12])
model.fit(y)
forecasts = model.predict(h=12)
ADAMX — ADAM with Explanatory Variables
This also works with the exponential smoothing (ETSX) via the ES() class.
import numpy as np
from smooth import ADAM
# Simulate data where y depends on two external regressors
rng = np.random.default_rng(42)
n = 120
X = rng.standard_normal((n, 2))
y = 10 + 2 * X[:, 0] - 1.5 * X[:, 1] + rng.standard_normal(n)
# Fit ETSX(AAN) — use all regressors with fixed coefficients
model = ADAM(model="AAN", regressors="use")
model.fit(y, X)
print(model) # shows fitted coefficients including xreg
# Forecast 12 steps ahead with future regressor values
X_future = rng.standard_normal((12, 2))
fc = model.predict(h=12, X=X_future)
print(fc.mean)
# Automatic variable selection (drops insignificant regressors)
model_sel = ADAM(model="AAN", regressors="select")
model_sel.fit(y, X)
# Adaptive (time-varying) regressor coefficients
model_adp = ADAM(model="AAN", regressors="adapt")
model_adp.fit(y, X)
X accepts a NumPy array or a pandas DataFrame (column names are preserved as regressor names).
regressors controls treatment: "use" (fixed coefficients), "select" (stepwise selection via greybox), or "adapt" (ETS-style time-varying coefficients).
AutoMSARIMA — Automatic ARIMA Order Selection
AutoMSARIMA selects the best ARIMA orders automatically using information criteria,
mirroring R's auto.msarima(). It fixes distribution="dnorm" and uses pure ARIMA
(no ETS components).
import numpy as np
from smooth import AutoMSARIMA
# Monthly time series (e.g. AirPassengers, 144 observations)
y = np.array([
112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118,
# ... remaining observations
], dtype=float)
# Automatic seasonal ARIMA — searches up to ARIMA(3,2,3)(3,1,3)[12]
model = AutoMSARIMA(lags=[1, 12])
model.fit(y)
print(model) # AutoMSARIMA: ARIMA([p,P],[d,D],[q,Q])
# Reduce search space for speed
model = AutoMSARIMA(
lags=[1, 12],
ar_order=[2, 1], # max AR: p≤2 at lag 1, P≤1 at lag 12
i_order=[2, 1], # max I: d≤2 at lag 1, D≤1 at lag 12
ma_order=[2, 1], # max MA: q≤2 at lag 1, Q≤1 at lag 12
)
model.fit(y)
fc = model.predict(h=24)
CES — Complex Exponential Smoothing
CES and AutoCES mirror R's ces() / auto.ces(). CES uses complex-valued
smoothing parameters to capture both the level and the "potential" of a series,
covering four seasonality modes: "none", "simple", "partial", "full".
import numpy as np
from smooth import CES, AutoCES
y = np.array([
112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118,
115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 140,
], dtype=float)
# CES with a fixed seasonality type
model = CES(seasonality="partial", lags=[1, 12], h=6, holdout=True)
model.fit(y)
print(model.model_name) # e.g. "CES(partial)"
print(model.a_, model.b_) # complex smoothing parameters
fc = model.predict(h=6)
print(fc.mean)
# AutoCES — select the best seasonality type by information criterion; fit()
# returns the selected CES, with the criteria of all the candidates in ICs
best = AutoCES(lags=[1, 12], h=6, holdout=True, ic="AICc").fit(y)
print(best.model_name, best.ICs)
Note: strict R-parity in the two-stage NLopt path requires
nlopt>=2.10.0; older versions still fit, but the BOBYQA stage-1 trajectory may differ slightly from R.
SM — Scale Model
A scale model is a second ADAM fitted to a transform of the location model's
residuals, so the error's scale varies over time instead of being one number —
the state-space counterpart of a GARCH or GAMLSS scale equation. It mirrors R's
sm(), and is scored by the location model's likelihood, so the information
criteria of the two are directly comparable.
import numpy as np
from smooth import ADAM
# Monthly series whose noise grows with the level
rng = np.random.default_rng(42)
t = np.arange(120)
level = 100 + 0.8 * t + 10 * np.sin(2 * np.pi * t / 12)
y = level * (1 + rng.normal(0, 0.02 + 0.0004 * t))
# Location model: the mean. Requires loss="likelihood" (the default).
model = ADAM(model="AAA", lags=[1, 12], distribution="dnorm")
model.fit(y)
print(model.aicc) # 801.9385 — one constant scale
# Scale model: the variance. "YYY" (the default) selects among multiplicative ETS.
scale = model.sm(model="MNN")
model.scale_model = scale # this assignment is R's implant()
print(model.aicc) # 775.9587 — now a time-varying scale
print(scale.model_name) # ETS(MNN)
print(model.extract_scale()[:3]) # [2.930 2.853 2.766] — scale per observation
# Prediction intervals now widen and narrow with the fitted scale
fc = model.predict(h=12, interval="prediction", level=0.95)
print(fc.upper[:3])
sm is also importable directly — from smooth import sm, then sm(model, ...),
which mirrors R's call form; it is the same function the method wraps.
sm() supports seven distributions — dnorm, dlaplace, ds, dgnorm,
dlnorm, dgamma, dinvgauss — and takes the usual ADAM arguments
(lags, orders, regressors, X, initial, ic, bounds), so the scale
can carry its own ETS structure, ARIMA orders or explanatory variables.
Set model.scale_model = None to detach it. There is no implant() function:
Python can modify a fitted object in place, so assignment does the job.
TBATS — Multiple and Non-Integer Seasonality
TBATS mirrors R's tbats(): De Livera, Hyndman and Snyder's (2011) model in ADAM's
single source of error framework — an ETS level and trend, a trigonometric seasonality
for each period and ARMA errors, after a Box-Cox transform. The periods can be several
and need not be integers; the number of harmonics, the trend, the ARMA orders and the
distribution are selected automatically.
import numpy as np
from smooth import TBATS
# Ten years of weekly data with a yearly cycle of 52.18 weeks
t = np.arange(1, 521)
y = 100 + 0.05 * t + 10 * np.sin(2 * np.pi * t / 52.18) + np.random.normal(0, 2, 520)
model = TBATS(lags=[1, 52.18], h=52, holdout=True).fit(y)
print(model.model_name) # TBATS(lambda, {p,q}, phi, <52.18,k>)
fc = model.predict(h=52, interval="prediction")
print(fc.mean[:3])
See the TBATS wiki page for the details.
Documentation
- GitHub Wiki - Full documentation
- ADAM - Main unified ETS/ARIMA framework
- Installation Guide - Dependencies and troubleshooting
The pages below document the models and their Python classes:
- ADAM — Augmented Dynamic Adaptive Model — unified ETS/ARIMA/regression framework
- AutoADAM — Automatic ADAM with distribution and ARIMA order selection
- ES — Exponential Smoothing (ETS) wrapper for ADAM
- CES — Complex Exponential Smoothing (
CES,AutoCES) - MSARIMA — Multiple Seasonal ARIMA (fixed orders) and automatic selection (
AutoMSARIMA) - OM — Occurrence Model for intermittent demand (
OM,OMG,AutoOM) - SMA — Simple Moving Average in state-space form with automatic order selection
- TBATS — Trigonometric seasonality, Box-Cox and ARMA for multiple and non-integer seasonal periods
- Scale Model —
model.sm(), a dynamic model for the scale of the error term - Simulation Functions —
sim_es,sim_ssarima,sim_ces,sim_gum,sim_sma,sim_oes, and the.simulate()method on fitted models
Book: Svetunkov, I. (2023). Forecasting and Analytics with the Augmented Dynamic Adaptive Model (ADAM). Chapman and Hall/CRC. Online: https://openforecast.org/adam/
See Also
- R package on CRAN - Production-ready R implementation
About
smooth is developed and maintained by OpenForecast, a demand forecasting and inventory management consultancy. The package implements the methods we use in our consulting and teach in our training courses.
Metadata
Release files for smooth 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| smooth-1.2.0.tar.gz | 29.8 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| smooth-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| smooth-1.2.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| smooth-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| smooth-1.2.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| smooth-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl | CPython 3.13 | CPython 3.13 | macOS 10.13+ x86-64 | Details |
| smooth-1.2.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| smooth-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| smooth-1.2.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| smooth-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl | CPython 3.12 | CPython 3.12 | macOS 10.13+ x86-64 | Details |
| smooth-1.2.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| smooth-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| smooth-1.2.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| smooth-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl | CPython 3.11 | CPython 3.11 | macOS 10.9+ x86-64 | Details |
Total release size: 131.5 MB
Release files / smooth-1.2.0.tar.gz
| Download URL | smooth-1.2.0.tar.gz |
|---|---|
| Size | 29.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8303def2b9106c6fc9e24b180134326c57d5b8fdc9fa234a6f81b09663c6a035
|
|
BLAKE2b-256 checksum How to use checksums |
2b7345acfa35db20fc7396c4c57100639c5d1c4602d96ab60a9d36394af36593
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | smooth-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 13.2 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
76ba54e90fe1d8b7de3edbe527c84488090247003663e109c9cfb668164ac555
|
|
BLAKE2b-256 checksum How to use checksums |
2a351127b7c69f79f1bd018006e4db0c2238ea2fdab27bb67ace676a04aa6a8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp313-cp313-win_amd64.whl
| Download URL | smooth-1.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 14.0 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c55eeafc89a37b8a370462f5a28b1a676fe3bf2a03ae11e2a2104cefd3ef7567
|
|
BLAKE2b-256 checksum How to use checksums |
cb22deaec1577030a8f8b4980640fec023fac2b4aade08ad057d96e97f7312a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | smooth-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 13.2 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3f94b7a828f70e5f155248f2095504b6cb85f7a6f4838133fe2a66f704313bfb
|
|
BLAKE2b-256 checksum How to use checksums |
108d5bacbcb3b3e1c86e4b53e533d3e061fbe77e9b58614fc12e248211e0552c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | smooth-1.2.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cc624d9cf3766d050d7c4b4dc1670dfda77b53a64418ed03a01c85d8ba5ee239
|
|
BLAKE2b-256 checksum How to use checksums |
692b932b1d0d61573b81bd08c65bc00ca52d7324733eb533e56f96a78ec76b5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | smooth-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
393dcd4d9e4d79cb59cdead5231a81280e88871e0c03eae244a51bed4afa6c43
|
|
BLAKE2b-256 checksum How to use checksums |
b6701cc9d83513de029713f8b11002f88f54752f4a6e70bd39aa737bb8ed927d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp312-cp312-win_amd64.whl
| Download URL | smooth-1.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 14.0 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
24b549c175f072fae1aacae5efee6503ab0fdadefc49ec3cfe53e9190fda1c14
|
|
BLAKE2b-256 checksum How to use checksums |
4b65b4c9df0dbea36e7b882515cb027b293481b5958489ae774a81c7c10780fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | smooth-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 13.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
96c13a9bf80607a136b82152cc97fe65b29aaaaea69b2ca571802aec6e1a87e2
|
|
BLAKE2b-256 checksum How to use checksums |
0693943f3d639397e777e4981def4eaea83652838c08e83a92dd2f0b2bf19e0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | smooth-1.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
81fcac912d8086807113e3e15513efd6f65736d77c5a2702229b02c182cbd2a5
|
|
BLAKE2b-256 checksum How to use checksums |
8c1195a2c99dd996e00c5b2f12c86fcfb29483388e97fde0e9ff64c0ddfc25db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | smooth-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
8d9b6ce0a60698c7dd25267baf676496856964091120d3094bc858fb6c6ee27e
|
|
BLAKE2b-256 checksum How to use checksums |
64c3303b70cb0fdb51fcac0681b0008bfbc091fc825a73d7652a977e7f39cde9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp311-cp311-win_amd64.whl
| Download URL | smooth-1.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 14.0 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
850e6be1dde0bc15194d2c01a804d356aa9ec6e2c276ac29f0ed5bc72caa3f2d
|
|
BLAKE2b-256 checksum How to use checksums |
ef7caadf444b19d5b377e2842044aca9acf7f2df24a2f0d397993f23c9db71fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | smooth-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 13.2 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9795c0f0c12739a1fac57446c7b73128b4f397afad05bf556720a35ce1ad648d
|
|
BLAKE2b-256 checksum How to use checksums |
de1e8e71673c5d82c15eeac13f0beb8221c2c727e77727455123e988fe82a559
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | smooth-1.2.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a4060dab6a2118aa56bf14c10214b04331776b78b5dc7da50c52b3c6f6b1f807
|
|
BLAKE2b-256 checksum How to use checksums |
181f1b695d969963aee2d2b6550691550e832cd0df99aadffe220c1342cb2185
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / smooth-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | smooth-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
42636b318c9b7bcc1f4d39c30ac97097573448a68a85a8cd438d50c9ead78412
|
|
BLAKE2b-256 checksum How to use checksums |
a3d75c03a66c2fa03f458a2ee41c520b0f85f70274646284c505db09be4c3183
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency log