Polars Time Series Extension
Project description
Documentation • Source Code • PyPI
Distance Metrics • Clustering • Forecasting • Imaging • Changepoints • Preprocessing
polars-ts is a batteries-included time series toolkit built on Polars. It gives you Rust-accelerated distance metrics, 10+ clustering algorithms, a full forecasting stack, and diagnostics — all from a single pip install, no heavyweight frameworks required.
Why polars-ts?
| Pain point | How polars-ts helps |
|---|---|
| "I need DTW but scipy is slow" | 12 distance metrics compiled to native code via Rust + Rayon, orders of magnitude faster on large panels |
| "I want to cluster time series but tslearn/sktime have too many deps" | K-Medoids, K-Shape, HDBSCAN, Spectral, Hierarchical, K-Means DBA, CLARA/CLARANS, U-Shapelets, Contrastive, DEC/IDEC — all built-in |
| "Setting up a forecast pipeline takes too long" | ForecastPipeline wires up lags, rolling stats, calendar features, target transforms, and any sklearn model in 5 lines |
| "I want to use foundation models / LLMs for forecasting" | Chronos, TimesFM, Moirai adapters for zero-shot; Time-LLM, LLM-PS for reprogrammed LLM forecasting; N-BEATS, PatchTST native DL |
| "I need Bayesian methods" | Kalman filters, BSTS, Bayesian ETS, Bayesian VAR, GP regression, MCMC wrapper, particle filters — all built-in |
| "I don't know which clustering method to pick" | auto_cluster sweeps methods × distances × k values and returns the best result with evaluation scores |
| "Polars doesn't have time series functions" | Mann-Kendall, Sen's slope, CUSUM, PELT, decomposition, ACF/PACF — all group-aware and Polars-native |
At a glance
import numpy as np
import polars as pl
import polars_ts as pts
from datetime import datetime, timedelta
# Build a small panel of 20 hourly series
dates = [datetime(2023, 1, 1) + timedelta(hours=i) for i in range(100)]
df = pl.concat([
pl.DataFrame({
"unique_id": [f"s_{i}"] * 100,
"ds": dates,
"y": (np.sin(np.linspace(0, 4 * np.pi, 100)) + np.random.normal(0, 0.1, 100)).tolist(),
})
for i in range(20)
])
# Cluster by shape similarity
result = pts.auto_cluster(df, methods=["kmedoids", "spectral"], distances=["sbd", "dtw"])
print(result.best_labels) # DataFrame[unique_id, cluster]
# Forecast with a full ML pipeline
from sklearn.linear_model import Ridge
pipe = pts.ForecastPipeline(Ridge(), lags=[1, 7, 14], rolling_windows=[7], calendar=["day_of_week"])
pipe.fit(df)
forecasts = pipe.predict(df, h=7)
# Detect changepoints
breaks = pts.pelt(df, cost="meanvar", penalty=10)
Column defaults are
unique_id,ds,ythroughout. Passid_col=,time_col=,target_col=to override.
Installation
pip install polars-timeseries
Extras for optional features:
pip install "polars-timeseries[clustering]" # HDBSCAN, DBSCAN, spectral (sklearn + scipy)
pip install "polars-timeseries[forecast]" # SCUM, auto_arima (statsforecast)
pip install "polars-timeseries[decomposition]" # Fourier decomposition (polars-ds)
pip install "polars-timeseries[all]" # Everything
Requires Python 3.12+ and Polars 1.30+.
Quick start
Pairwise DTW distance
import polars as pl
import polars_ts as pts
df = pl.DataFrame({
"unique_id": ["A"] * 5 + ["B"] * 5,
"y": [1.0, 2.0, 3.0, 2.0, 1.0,
1.0, 3.0, 5.0, 3.0, 1.0],
})
result = pts.compute_pairwise_dtw(df, df)
Auto-cluster time series
result = pts.auto_cluster(
df,
methods=["kmedoids", "spectral", "kshape"],
distances=["sbd", "dtw"],
k_range=range(2, 6),
)
print(result.best_method, result.best_k, result.best_score)
print(result.best_labels) # DataFrame[unique_id, cluster]
End-to-end forecast pipeline
from sklearn.ensemble import GradientBoostingRegressor
import polars_ts as pts
pipe = pts.ForecastPipeline(
GradientBoostingRegressor(),
lags=[1, 2, 7],
rolling_windows=[7],
calendar=["day_of_week", "month"],
target_transform="log",
)
pipe.fit(train_df)
forecasts = pipe.predict(train_df, h=7)
# forecasts: DataFrame[unique_id, ds, y_hat]
Forecast with covariates
pipe = pts.ForecastPipeline(
Ridge(),
lags=[1, 2, 7],
past_covariates=["temperature"], # lagged automatically
future_covariates=["is_holiday"], # looked up from future_df
)
pipe.fit(train_df) # train_df has temperature + is_holiday columns
forecasts = pipe.predict(train_df, h=7, future_df=future_df)
ARIMA forecasting
# Fit ARIMA(1,1,1) and forecast 12 steps ahead
fitted = pts.arima_fit(df, order=(1, 1, 1))
forecast = pts.arima_forecast(fitted, h=12)
# Or use automatic order selection
forecast = pts.auto_arima(df, h=12, season_length=12)
Changepoint detection
# PELT — multiple changepoints with mean/variance cost
breaks = pts.pelt(df, cost="meanvar", penalty=10)
# breaks: DataFrame[unique_id, changepoint_idx, ds]
# Bayesian Online Changepoint Detection
probs = pts.bocpd(df)
Exponential smoothing
# Holt-Winters seasonal forecast
result = pts.holt_winters_forecast(df, h=12, season_length=12, seasonal="additive")
Mann-Kendall trend test
import polars as pl
import polars_ts as pts
df = pl.DataFrame({
"group": ["A"] * 10 + ["B"] * 10,
"y": list(range(10)) + [10 - x for x in range(10)],
})
result = df.group_by("group").agg(
pts.mann_kendall(pl.col("y")).alias("trend"),
pts.sens_slope(pl.col("y")).alias("slope"),
)
Seasonal decomposition
df = pl.DataFrame({
"unique_id": ["A"] * 48,
"ds": list(range(48)),
"y": [10 + 5 * (i % 12 > 5) + 0.5 * i for i in range(48)],
})
result = pts.seasonal_decomposition(df, freq=12, method="additive")
Features
Distance metrics Rust, parallelized via Rayon
All distance functions return a tidy DataFrame with columns [id_1, id_2, <metric>]. A unified compute_pairwise_distance(method=...) API lets you swap metrics with a single string.
| Metric | Function | Key Parameters |
|---|---|---|
| Dynamic Time Warping | compute_pairwise_dtw |
method: standard, sakoe_chiba, itakura, fast |
| Derivative DTW | compute_pairwise_ddtw |
Shape-sensitive comparison |
| Weighted DTW | compute_pairwise_wdtw |
g: weight sharpness |
| Move-Split-Merge | compute_pairwise_msm |
c: move cost |
| Edit Distance (Real Penalty) | compute_pairwise_erp |
g: gap value |
| Longest Common Subsequence | compute_pairwise_lcss |
epsilon: matching threshold |
| Time Warp Edit Distance | compute_pairwise_twe |
nu: stiffness, lambda_: deletion cost |
| Shape-Based Distance | compute_pairwise_sbd |
Cross-correlation based |
| Frechet Distance | compute_pairwise_frechet |
Geometric coupling distance |
| Edit Distance on Real Sequences | compute_pairwise_edr |
Edit-operation cost |
| Multivariate DTW | compute_pairwise_dtw_multi |
metric: manhattan, euclidean |
| Multivariate MSM | compute_pairwise_msm_multi |
c: move cost |
Clustering & classification
| Method | Function | When to use |
|---|---|---|
| K-Medoids (PAM) | kmedoids |
Known k, any distance metric, interpretable medoids |
| K-Shape | KShape |
Shape-based grouping via cross-correlation centroids |
| Spectral (KSC) | spectral_cluster |
Non-convex clusters, graph Laplacian structure |
| Contrastive | ContrastiveClusterer |
Self-supervised representation learning + clustering |
| DEC / IDEC | DECClusterer |
Autoencoder-based deep clustering |
| HDBSCAN | hdbscan_cluster |
Unknown k, varying density, noise detection |
| DBSCAN | dbscan_cluster |
Fixed-radius neighbourhood, noise detection |
| Hierarchical | agglomerative_cluster |
Dendrogram visualization, flexible linkage |
| K-Means DBA | kmeans_dba |
DTW Barycentric Averaging centroids |
| CLARA | clara |
Scalable k-medoids via sampling |
| CLARANS | clarans |
Randomized k-medoids neighbourhood search |
| U-Shapelets | shapelet_cluster |
Interpretable sub-sequence patterns |
| ROCKET / MiniRocket | rocket_features, minirocket_features |
Random convolutional kernel feature extraction |
| Auto-cluster | auto_cluster |
Sweep methods × distances × k, pick the best |
Evaluation: silhouette_score, davies_bouldin_score, calinski_harabasz_score
Classification: knn_classify (distance-based k-NN), TimeSeriesKNNClassifier (OOP), KShapeClassifier (centroid-based), RocketClassifier, InceptionTimeClassifier, ResNetClassifier (deep)
Trend & changepoint detection
- Mann-Kendall test — non-parametric trend detection (Rust)
- Sen's slope — robust trend magnitude estimation (Rust)
- CUSUM — cumulative sum changepoint detection (Rust)
- PELT — multiple changepoints with mean/variance/meanvar cost functions
- BOCPD — Bayesian Online Changepoint Detection
- Regime detection — Hidden Markov Model state inference
Decomposition
- Seasonal decomposition — additive or multiplicative (classical)
- Fourier decomposition — harmonic decomposition with configurable frequencies
- Decomposition features — trend/seasonal strength extraction (simple or MSTL)
- Anomaly flagging — residual-based anomaly detection from any decomposition
Feature engineering
- Lag features — create lagged versions of a target column per group
- Rolling features — rolling window aggregations (mean, std, min, max, sum, median, var)
- Calendar features — extract day_of_week, month, quarter, is_weekend, etc.
- Fourier features — sin/cos pairs for seasonal modelling
- Target encoding — smoothed categorical encoding by target mean
- Holiday features — binary holidays + distance-to-holiday (requires
holidayspackage) - Interaction features — cross-term column generation
- Time embeddings — cyclical sin/cos encoding for time components
Target transforms
- Log transform — log1p / expm1 with automatic validation and lossless inversion
- Box-Cox transform — parametric power transform with configurable lambda
- Differencing — configurable order and seasonal period with metadata for lossless inversion
All transforms are group-aware, invertible, and accessible via the df.pts namespace.
Data preprocessing
- Missing value imputation — forward/backward fill, linear interpolation, mean, median, seasonal
- Outlier detection — z-score, IQR, Hampel filter, rolling z-score
- Outlier treatment — clip (winsorize), median replacement, interpolation, null
- Temporal resampling — downsample/upsample with configurable aggregation
Validation strategies
- Expanding window CV — growing training window cross-validation
- Sliding window CV — fixed-size training window cross-validation
- Rolling origin CV — general rolling-origin with configurable initial/fixed train size
Forecasting
- SCUM — ensemble model combining AutoARIMA, AutoETS, AutoCES, and DynamicOptimizedTheta
- ARIMA/SARIMA — explicit
(p,d,q)order viastatsmodels(arima_fit/arima_forecast) or automatic selection viastatsforecast(auto_arima) - Baseline models — naive, seasonal naive, moving average, and FFT-based forecasts
- Exponential smoothing — SES, Holt's linear, Holt-Winters (additive/multiplicative, Rust-accelerated)
- Multi-step strategies —
RecursiveForecasterandDirectForecaster - ForecastPipeline — end-to-end ML pipeline with feature engineering + transforms
- GlobalForecaster — cross-series panel model with optional ID encoding
- N-BEATS / PatchTST — native deep learning forecasters (requires
torch) - Time-LLM / LLM-PS — LLM-reprogrammed forecasting adapters (requires
torch) - Foundation models — Chronos, TimesFM, Moirai zero-shot forecasting
- Agentic forecasting —
TimeSeriesScientistmulti-agent pipeline (Curator → Planner → Forecaster → Reporter)
Probabilistic forecasting
- QuantileRegressor — one model per quantile level with CRPS-compatible output
- Conformal prediction — distribution-free intervals with coverage guarantees
- EnbPI — Ensemble Batch Prediction Intervals with adaptive online updates
Ensembling
- WeightedEnsemble — equal, manual, or inverse-error-optimized weights
- StackingForecaster — meta-learner trained on out-of-fold predictions
Forecast evaluation & diagnostics
- Metrics — MAE, RMSE, MAPE, sMAPE, MASE, CRPS
- Kaboudan metric — model robustness evaluation via block-shuffle backtesting
- Bias detection & correction — mean, regression, quantile mapping
- Calibration diagnostics — calibration table, PIT histogram, reliability diagram
- Residual diagnostics — ACF, PACF, Ljung-Box test
- Permutation importance — model-agnostic feature importance
Multivariate & hierarchical
- VAR — Vector Autoregression with OLS fitting and multi-step forecasts
- Granger causality — F-test for causal relationships between series
- GARCH — volatility modelling and conditional variance forecasting
- Forecast reconciliation — bottom-up, top-down, and MinTrace-OLS
Bayesian methods
- Kalman Filter / RTS Smoother — linear state-space models
- BSTS — Bayesian Structural Time Series (local level/trend + seasonality + regressors)
- Bayesian ETS — exponential smoothing with posterior predictive
- Bayesian VAR — vector autoregression with Minnesota/Normal-Wishart priors
- Gaussian Process regression — non-parametric Bayesian forecasting
- MCMC wrapper — adapter for NumPyro/PyMC backends
- Unscented / Ensemble Kalman Filter — nonlinear state-space models
- Particle Filter / SMC — fully nonlinear/non-Gaussian
- Bayesian anomaly scoring — posterior predictive p-values, Bayes factors
Causal inference
- CausalImpact — Bayesian structural time series counterfactual analysis
- Synthetic control — donor-pool weighted counterfactual estimation
- Placebo tests — significance testing via counterfactual permutation
Backtesting
- Unified backtest framework — fit → predict → score across rolling windows with multiple models
Anomaly detection
- Decomposition-based — residual threshold anomaly flagging
- Isolation Forest — unsupervised anomaly detection on engineered features
Integration adapters
- NeuralForecast — convert to/from N-BEATS, PatchTST, N-HiTS format
- PyTorch Forecasting — convert to/from TFT, DeepAR format
- HuggingFace — convert to Dataset for Chronos, TimesFM, Lag-Llama
- Chronos / MOMENT embeddings — foundation model feature extraction for clustering
- Foundation forecast — ChronosForecaster, TimesFMForecaster, MoiraiForecaster (zero-shot)
- LLM forecast — TimeLLMForecaster, LLMPSForecaster (reprogrammed LLM)
- ForecastEnv — Gymnasium-compatible RL environment for decision making
Tutorials
The notebooks/ directory contains 13 end-to-end tutorials:
| # | Topic | Notebook |
|---|---|---|
| 01 | Data wrangling & exploration | Open |
| 02 | Feature engineering & transforms | Open |
| 03 | Forecasting fundamentals | Open |
| 04 | ML forecasting pipelines | Open |
| 05 | Uncertainty & calibration | Open |
| 06 | Changepoint & anomaly detection | Open |
| 07 | Time series similarity & clustering | Open |
| 08 | Multivariate & volatility | Open |
| 09 | Ensembles & reconciliation | Open |
| 10 | Ecosystem adapters | Open |
| 11 | Time series imaging | Open |
| 12 | Advanced feature extraction | Open |
| 13 | Agentic forecasting | Open |
Development
git clone https://github.com/drumtorben/polars-ts.git
cd polars-ts
uv sync
uv pip install -e .
uv run pytest
Code quality
Pre-commit hooks run via prek (Rust reimplementation of pre-commit) or standard pre-commit — both read .pre-commit-config.yaml:
# Option A: prek (faster)
uv tool install prek
prek run --all-files
# Option B: standard pre-commit
pre-commit run --all-files
Type checking
# mypy (authoritative)
uv run mypy polars_ts/
# ty (fast, informational — beta)
uvx ty check polars_ts/
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polars_timeseries-0.8.0.tar.gz.
File metadata
- Download URL: polars_timeseries-0.8.0.tar.gz
- Upload date:
- Size: 5.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea3a2338304fb9cba92075f535705c4ddd81864d1e14fec2f7ce81ed42131a8f
|
|
| MD5 |
eb1e1b45c53fbd468abbfebf3af1533e
|
|
| BLAKE2b-256 |
484c0f794235dd1dc5548dd5dc5c3643e91d47647bfa6f6e69b79561b6aeabb8
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0.tar.gz:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0.tar.gz -
Subject digest:
ea3a2338304fb9cba92075f535705c4ddd81864d1e14fec2f7ce81ed42131a8f - Sigstore transparency entry: 1439941414
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type:
File details
Details for the file polars_timeseries-0.8.0-cp312-abi3-win_amd64.whl.
File metadata
- Download URL: polars_timeseries-0.8.0-cp312-abi3-win_amd64.whl
- Upload date:
- Size: 16.2 MB
- Tags: CPython 3.12+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed164672cd6e136e4d888e5d96493558485f442b3b900e6611a1a3a327c8433d
|
|
| MD5 |
1547a656d101563d94302a81bcc4e685
|
|
| BLAKE2b-256 |
1901788e13e151e06216a1dd8a8d5e63face911d13c0c26d2e4bc760983ed159
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0-cp312-abi3-win_amd64.whl:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0-cp312-abi3-win_amd64.whl -
Subject digest:
ed164672cd6e136e4d888e5d96493558485f442b3b900e6611a1a3a327c8433d - Sigstore transparency entry: 1439941442
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type:
File details
Details for the file polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 17.2 MB
- Tags: CPython 3.12+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48b134f4e20b61252d91e0f51407dc91d570e3e269e311b0073bc3366c9f0db0
|
|
| MD5 |
49de12b65d0e08449353cabd58afdbd0
|
|
| BLAKE2b-256 |
e01eb66b513749dcf1f703eeac611c912e25e16f2d0befa413442090707223c5
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
48b134f4e20b61252d91e0f51407dc91d570e3e269e311b0073bc3366c9f0db0 - Sigstore transparency entry: 1439941418
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type:
File details
Details for the file polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 17.5 MB
- Tags: CPython 3.12+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
367a511d18ee662ec9c98aff891cf2ca4f9fb1d1b1cd97c81414ef15519ed778
|
|
| MD5 |
fa2fd9ba761b342e9a0d18618ff92e9a
|
|
| BLAKE2b-256 |
e7afaf47b3e962feca2569670c9119b84fc29103ac03a6d6dfa70852a943772d
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
367a511d18ee662ec9c98aff891cf2ca4f9fb1d1b1cd97c81414ef15519ed778 - Sigstore transparency entry: 1439941423
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type:
File details
Details for the file polars_timeseries-0.8.0-cp312-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: polars_timeseries-0.8.0-cp312-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.9 MB
- Tags: CPython 3.12+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4f2c63fd9f1fd9cfaa85bf44eadba64b2cc2fc9387a13ec20d71e662b672a56
|
|
| MD5 |
8b61fe5080d58d544325165266689bfa
|
|
| BLAKE2b-256 |
1548ebeecdde12488f8fe1198505babd9640ed0cd22cd04e3a99cf6699275bfc
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0-cp312-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0-cp312-abi3-macosx_11_0_arm64.whl -
Subject digest:
e4f2c63fd9f1fd9cfaa85bf44eadba64b2cc2fc9387a13ec20d71e662b672a56 - Sigstore transparency entry: 1439941424
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type:
File details
Details for the file polars_timeseries-0.8.0-cp312-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: polars_timeseries-0.8.0-cp312-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 16.6 MB
- Tags: CPython 3.12+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ad0c88a40788104e1333914fc61daf130a19d6fca12fc01fe1fc45ed7bfca53
|
|
| MD5 |
deb1fc46ab1751eb1fb72ac3f92eb14e
|
|
| BLAKE2b-256 |
19c5bca5cdae71fa9ce2c02e8cae48738bb6f51bebc4e4844af48bb2abe1af7b
|
Provenance
The following attestation bundles were made for polars_timeseries-0.8.0-cp312-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on drumtorben/polars-ts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
polars_timeseries-0.8.0-cp312-abi3-macosx_10_12_x86_64.whl -
Subject digest:
7ad0c88a40788104e1333914fc61daf130a19d6fca12fc01fe1fc45ed7bfca53 - Sigstore transparency entry: 1439941435
- Sigstore integration time:
-
Permalink:
drumtorben/polars-ts@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/drumtorben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ddae3ac9003693a6efa41cb585edfee8c80c035 -
Trigger Event:
push
-
Statement type: