Skip to main content

bsts-causalimpact

PyPI version Python License: MIT R Numerical Equivalence

Bayesian structural time series for causal inference in Python. A faithful port of Google's CausalImpact R package. No TensorFlow required.

The Gibbs sampler is implemented in Rust (via PyO3), reproducing the same algorithm as R's bsts package while achieving 10-30x speedup.

When to Use (and When Not to)

This method is valid only when all of the following hold:

  • Control series are not contaminated by the intervention
  • The relationship between treated and control series is stable across the pre- and post-intervention periods
  • The pre-intervention period is sufficiently long (rule of thumb: at least 3x the post-intervention period)

If any of these assumptions are violated, the causal estimate will be unreliable. Consider a difference-in-differences or synthetic control approach instead.

Installation

Requires Python 3.10+. Binary wheels are intended for supported platforms, so Rust is only required when building from source.

pip install bsts-causalimpact

For development (builds Rust extension locally):

git clone https://github.com/YuminosukeSato/bsts-causalimpact.git
cd bsts-causalimpact

# Install with uv (recommended)
uv sync --all-extras

# Or install with pip (builds Rust extension via maturin)
pip install -e ".[dev]"

Quick Start

import pandas as pd
from causal_impact import CausalImpact

# Prepare your data: first column = response, remaining columns = covariates
data = pd.read_csv("your_data.csv", index_col="date", parse_dates=True)

# Define pre- and post-intervention periods
pre_period = ["2020-01-01", "2020-03-14"]
post_period = ["2020-03-15", "2020-04-14"]

# Run the analysis
ci = CausalImpact(data, pre_period, post_period)

# Print a summary table
print(ci.summary())

# Print a narrative report
print(ci.report())

# Plot the results
fig = ci.plot()
fig.savefig("causal_impact.png")

Example Output

CausalImpact plot example

Posterior inference {CausalImpact}

                         Average        Cumulative
Actual                   136.32          3953.19
Prediction (s.d.)        125.42 (0.66)   3637.07 (19.08)
95% CI                   [124.18, 126.71]  [3601.33, 3674.59]

Absolute effect (s.d.)   10.90 (0.66)    316.13 (19.08)
95% CI                   [9.61, 12.13]   [278.60, 351.86]

Relative effect (s.d.)   8.69% (0.57%) 8.69% (0.57%)
95% CI                   [7.58%, 9.77%] [7.58%, 9.77%]

Posterior tail-area probability p: 0.001
Posterior prob. of a causal effect: 99.90%

Comparison with Alternatives

R CausalImpact bsts-causalimpact (this) tfp-causalimpact tfcausalimpact pycausalimpact
Maintainer Google OSS Google WillianFuks dafiti (stale)
Algorithm Gibbs (bsts/C++) Gibbs (Rust) TFP-based VI default / HMC MLE (statsmodels)
Dependencies R, bsts numpy, pandas, matplotlib TF, TFP (3 GB+) TF, TFP (3 GB+) statsmodels
Spike-and-slab Yes Yes Unknown No No
Horseshoe prior No Yes (prior_type='horseshoe') No No No
Seasonal component Yes Yes (nseasons, season_duration) Unknown Yes (TFP STS) No
Dynamic regression Yes Yes (dynamic_regression=True) Unknown No No
R numerical test Reference ±1% CI-enforced + TOST/ROPE Not published Visual comparison (~8% diff) Not tested
Speed (T=1000) 2.1 s 0.07 s (30x) Seconds Minutes (HMC: hours) Sub-second
Python version N/A (R) 3.10+ 3.8+ 3.7-3.11 3.6-3.8 (stale)
Last release Active Active 2023 2025-01 2020-05

Why this library exists

Existing Python ports have fundamental limitations:

  • pycausalimpact uses MLE (not MCMC), producing results that diverge substantially from R
  • tfcausalimpact uses variational inference by default (not Gibbs sampling), and requires TensorFlow (3 GB+)
  • tfp-causalimpact (Google's own Python port) does not publish numerical equivalence tests with R
  • None of the above implement spike-and-slab variable selection matching R's bsts

This library reproduces the core Gibbs-sampler workflow from R's bsts package in Rust, with CI-enforced numerical equivalence tests on every commit.

Numerical Equivalence with R

R Numerical Equivalence

Verified against R CausalImpact 1.4.1 (bsts 0.9.10, R 4.5) across 5 scenarios. Enforced on every commit via CI.

Test Matrix

Scenario point_effect cum_effect ci_lower ci_upper rel_effect p_value
basic ±1% ±1% ±1% ±1% ±1% alpha=0.05
covariates ±1% ±1% ±1% ±1% ±1% alpha=0.05
strong_effect ±1% ±1% ±1% ±1% ±1% alpha=0.05
no_effect abs<0.5 abs<0.5 abs<0.5 abs<0.5 abs<0.5 alpha=0.05
seasonal ±1% ±1% ±1% ±1% ±1% alpha=0.05

Three-Layer Equivalence Verification

No other Python CausalImpact implementation has statistical equivalence tests. This library provides three layers of verification, exceeding even Google's own Python port.

Layer Method What it proves Reference
1. Deterministic Seed-fixed ±1% threshold Same seed, same result, every commit Regression testing
2. FDA TOST 90% CI upper < delta (N=30 seeds) Mean error is statistically below delta Schuirmann (1987), FDA Guidance (2001)
3. Bayesian ROPE 95% HDI within [0, delta] (N=30 seeds) Posterior of error is practically equivalent Kruschke (2018) AMPPS

Layer 1 runs on every commit (CI-blocking). Layers 2-3 run with --runslow flag.

# Layer 1: deterministic (runs in CI)
uv run pytest tests/test_numerical_equivalence.py -v

# Layers 2+3: TOST + ROPE (30 seeds x 4 scenarios, ~80s)
uv run pytest tests/test_equivalence_tost_rope.py -v --runslow

CI Enforcement

Two-layer CI enforcement:

  1. Fixture-based (ci.yml): Compares Python output against committed R reference data. Blocking on every PR/push.
  2. Live R comparison (numerical-equivalence.yml): Installs R, regenerates fixtures from scratch, and compares. Blocking when R is available. Weekly auto-regeneration.

How to Reproduce

  1. Install R 4.5+ and packages: install.packages(c("CausalImpact", "jsonlite"))
  2. Generate R reference: Rscript scripts/generate_r_reference.R
  3. Run equivalence tests: .venv/bin/pytest tests/test_numerical_equivalence.py -v

Equivalence Verification: Comparison with Other Implementations

R CausalImpact bsts-causalimpact (this) tfp-causalimpact (Google) tfcausalimpact pycausalimpact (dafiti)
R reference fixtures N/A (is reference) 5 scenarios, CI-enforced None None None
Deterministic R test N/A ±1% all metrics (seed=42) None README demo only (~8% diff) None
FDA TOST (Schuirmann 1987) N/A 30-seed, delta=1-2% None None None
Bayesian ROPE (Kruschke 2018) N/A 30-seed, 95% HDI in ROPE None None None
Self-consistency tolerance tolerance=0.01 N/A rtol=0.2 (20%) assert_almost_equal assert_array_equal
CI-blocking R check N/A Every commit + weekly live R None None None

Evidence per implementation (all verified from source code, not documentation claims):

  • tfp-causalimpact (Google official Python port): 47 tests across 7 files. No R reference fixtures. Self-consistency checks use rtol=0.2 (±20%) and atol=0.01. No R output comparison exists in the test suite. README states "designed to produce results close to the R package" but this is not verified by any automated test. (source)
  • tfcausalimpact (WillianFuks): 64 tests across 7 files. tests/fixtures/comparison_data.csv exists but is only used in README demo, not in automated tests. The README demo itself shows ~8% difference in AbsEffect (R: -657 vs Python: -708.51). (source)
  • pycausalimpact (dafiti): 62 tests across 5 files. Uses MLE (not MCMC), fundamentally different algorithm. No R comparison of any kind. Repository archived. (source)
  • causalimpact (jamalsenouci): 54 tests across 4 files. No R comparison. Open issue #7 reports "significantly different results from R". (source)

What is matching R and what is not

R feature Status Detail
Local level model (Gibbs sampler) Matching Same algorithm as bsts: Kalman filter + simulation smoother
SdPrior(sample.size=32) for sigma2_level Matching InvGamma(16, 16 * sigma_guess^2)
Post-period Random Walk propagation Matching Forward simulation from last pre-period state
Data standardization (standardize.data=TRUE) Matching (y - mean) / sd using pre-period moments
prior.level.sd = 0.01 Matching Same default, same semantics
Spike-and-slab variable selection Matching Coordinate-wise sampling with StudentSpikeSlabPrior defaults (expected.r2=0.8, prior.df=50, prior.information.weight=0.01, diagonal.shrinkage=0.5)
expected.model.size Matching Unified default 2 in CausalImpact and ModelOptions
expected.r2 = 0.8, prior.df = 50 Matching Same documented residual variance prior defaults as BoomSpikeSlab / bsts
Seasonal component (nseasons, season_duration) Matching State-space model matching R bsts AddSeasonal() (±1% CI parity)
Dynamic regression Supported Time-varying coefficients via random-walk FFBS; dynamic_regression=True
Local linear trend Supported Opt in with state_model="local_linear_trend"
DATE decomposition Extended Decomposes effects into spot/persistent/trend (arXiv:2602.00836)
Retrospective mode Extended Treatment indicators as covariates; effects from beta posteriors (arXiv:2602.00836)
Placebo test Extended Null distribution from pre-period splits
Horseshoe prior Extended Continuous shrinkage alternative to spike-and-slab (Kohns & Bhattacharjee 2022)
Conformal inference Extended Distribution-free prediction intervals
DTW control selection Extended Automatic covariate selection via Dynamic Time Warping

Matching = CI-enforced numerical equivalence with R bsts (±1% or tighter). Supported = Feature implemented, no R parity fixture yet. Extended = Python-only feature with no R equivalent.

Beyond R: Python-Only Extensions

Features that go beyond R's CausalImpact. These have no R equivalent.

Feature Method What it does Reference
DATE decomposition ci.decompose() Decomposes causal effect into spot, persistent, and trend Schaffe-Odeleye et al. (2026), arXiv:2602.00836
Retrospective mode mode="retrospective" Treatment indicators as covariates; effects extracted from beta posteriors Schaffe-Odeleye et al. (2026), arXiv:2602.00836
Placebo test ci.run_placebo_test() Validates effect against null distribution from pre-period splits
Conformal inference ci.run_conformal_analysis() Distribution-free prediction intervals Vovk et al. (2005)
DTW control selection select_controls() Automatic covariate selection via Dynamic Time Warping Sakoe & Chiba (1978)
Horseshoe prior ModelOptions(prior_type='horseshoe') Continuous shrinkage alternative to spike-and-slab for dense DGP Kohns & Bhattacharjee (2022), arXiv:2011.00938

API

CausalImpact(data, pre_period, post_period, model_args=None, alpha=0.05)

Parameter Type Description
data DataFrame or ndarray First column is the response variable, remaining columns are covariates
pre_period list[str | int] [start, end] of the pre-intervention period
post_period list[str | int] [start, end] of the post-intervention period
model_args dict or ModelOptions MCMC parameters (see below)
alpha float Significance level for credible intervals (default: 0.05)

Model Arguments

Key Default Description
niter 1000 Total MCMC iterations
nwarmup 500 Burn-in iterations to discard
nchains 1 Number of MCMC chains
seed 0 Random seed for reproducibility
prior_level_sd 0.01 Prior standard deviation for the local level
standardize_data True Standardize data before fitting
expected_model_size 2 Expected number of active covariates (spike-and-slab prior)
nseasons None Optional seasonal cycle count (R-compatible API)
season_duration None Optional duration of each seasonal block; defaults to 1 when nseasons is set
dynamic_regression False Enable time-varying regression coefficients (random-walk beta)
state_model "local_level" "local_level" or "local_linear_trend"
prior_type "spike_slab" "spike_slab" or "horseshoe" (continuous shrinkage for dense DGP)
mode "forward" "forward" (counterfactual prediction) or "retrospective" (treatment indicators as covariates)

Methods and Properties

Name Returns Description
summary(output="summary") str Tabular summary of causal effects
report() str Narrative interpretation of results
plot(metrics=None) Figure Matplotlib figure with original/pointwise/cumulative panels
inferences DataFrame Per-timestep actuals, predictions, prediction s.d., and effect intervals
summary_stats dict Aggregate statistics (effect mean, CI, p-value, etc.)
posterior_inclusion_probs ndarray | None Posterior inclusion probability per covariate (spike-and-slab only)
posterior_shrinkage ndarray | None Mean shrinkage factor per covariate (horseshoe only)
decompose(alpha=None) DateDecomposition DATE decomposition into spot/persistent/trend components
run_placebo_test(...) PlaceboTestResults Placebo test for effect validation
run_conformal_analysis(...) ConformalResults Distribution-free conformal prediction intervals

Benchmark Results

T k niter This (Rust) R (bsts) vs R
100 0 1000 0.008s 0.213s 26x
500 0 1000 0.033s 0.997s 30x
1000 0 1000 0.069s 2.108s 31x
1000 5 1000 0.197s 2.171s 11x
5000 0 1000 0.330s 10.264s 31x

Median of 3 runs. Reproduce: python benchmarks/benchmark.py

Architecture

python/causal_impact/
    __init__.py          # Public API: CausalImpact, ModelOptions, __version__
    data.py              # DataProcessor: validation, standardization, period parsing
    main.py              # CausalImpact facade class
    options.py           # ModelOptions: typed MCMC configuration
    analysis.py          # CausalAnalysis: effect computation, CI, p-values
    summary.py           # SummaryFormatter: tabular and narrative reports
    plot.py              # Plotter: matplotlib visualization
    decomposition.py     # DATE decomposition (spot/persistent/trend)
    retrospective.py     # Retrospective attribution mode

src/ (Rust)
    lib.rs               # PyO3 entry point: run_gibbs_sampler()
    sampler.rs           # Gibbs sampler (R bsts-compatible algorithm)
    kalman.rs            # Kalman filter and simulation smoother
    state_space.rs       # State space model representation
    distributions.rs     # Posterior sampling distributions

Development

git config core.hooksPath .githooks

Running Tests

# All tests
uv run pytest tests/ -v

# Numerical equivalence only
uv run pytest tests/test_numerical_equivalence.py -v

# Rust tests
cargo test

Contributing

See CONTRIBUTING.md for development setup, PR workflow, and test requirements.

License

MIT

Metadata

Release files for bsts-causalimpact 1.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bsts-causalimpact 1.7.0
File Size Uploaded
bsts_causalimpact-1.7.0.tar.gz 1.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for bsts-causalimpact 1.7.0
File
bsts_causalimpact-1.7.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
bsts_causalimpact-1.7.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
bsts_causalimpact-1.7.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
bsts_causalimpact-1.7.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
bsts_causalimpact-1.7.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
bsts_causalimpact-1.7.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
bsts_causalimpact-1.7.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
bsts_causalimpact-1.7.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
bsts_causalimpact-1.7.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
bsts_causalimpact-1.7.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
bsts_causalimpact-1.7.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
bsts_causalimpact-1.7.0-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 9.5 MB

Release files / bsts_causalimpact-1.7.0.tar.gz

Download URL bsts_causalimpact-1.7.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
7646fb96879d133a06de5b8fff834831a50b78a2439bd8a6d7e8d9a11d591192
BLAKE2b-256 checksum
How to use checksums
a402fdf70b608dc2795f6e414f1db255c06fe1646aa2b485e8c768e5c084b959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp313-cp313-win_amd64.whl

Download URL bsts_causalimpact-1.7.0-cp313-cp313-win_amd64.whl
Size 321.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
10926c7699786c0a7daf3e81985a8a16bdc174af91483d56da69abd2c14dc269
BLAKE2b-256 checksum
How to use checksums
97ffa10df938328c36960e89096d48ff89f512d7ee9afd20d74c80e3bbeb1847
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 459.2 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cdc7c3fc4c6b94f3928d28ba0efac37bf90be6d5c87cb316c1359eb73c7fb42f
BLAKE2b-256 checksum
How to use checksums
376bdb0a8f9646f6576f3c1611f75bb35a757788fedd38b43cf7d72a021f6254
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bsts_causalimpact-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 446.7 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
5ac5b3849c179b4a4823fd94d233be5e7a10e7fbc4b7992bfe19866eb49c8267
BLAKE2b-256 checksum
How to use checksums
9d29db5225ce650c6847ea941dcce543241bc6cdcfdefe2467635ebd0e9b31fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL bsts_causalimpact-1.7.0-cp313-cp313-macosx_11_0_arm64.whl
Size 412.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
41efda5d0b7edde629658b6e01033a2e3ee59087ec4b4d04e20b08d5dd4bef19
BLAKE2b-256 checksum
How to use checksums
89583bcd2751225399a441ca19cff0e9df38c0d3bef457a4a78e5947b282be83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 419.4 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b5265a4fde57312927edc1a54d9a518c146413e271fe5849abb27ab4b5cb445e
BLAKE2b-256 checksum
How to use checksums
628a67048f0263d548620f2504333dde490f0b57cc5e57071539e291842f9e07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp312-cp312-win_amd64.whl

Download URL bsts_causalimpact-1.7.0-cp312-cp312-win_amd64.whl
Size 321.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
00f7f6c00baea0f561e22f53a7f77e22ffd1af22a483d164d09414ad201dbcfd
BLAKE2b-256 checksum
How to use checksums
be71692ddc3147c821c80e3f7e431d4c5ceabb5eaff1f062cfab8c1367fb01d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 459.5 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
27a636c4ede27fda9e160651ff6d18d2e6283ffc5e4398be7c4304a967c3c900
BLAKE2b-256 checksum
How to use checksums
e9dc736daf7424dc3fff7886e59f80b60abd0b8e58229725db182cc8a6b519ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bsts_causalimpact-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 447.2 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
9c09539c95935c531d40b982df081cdc2dfbc5eb4473f47ed34014079f4ab0f9
BLAKE2b-256 checksum
How to use checksums
92eff83d7a7f994b928952af5dac15af4ad237bb3aab89a2db94d1c1e26769a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL bsts_causalimpact-1.7.0-cp312-cp312-macosx_11_0_arm64.whl
Size 412.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
277ad23462538673dfde86de13868a57841a999825822fa3ee5d7d8ffcb0d9a7
BLAKE2b-256 checksum
How to use checksums
fc28bbce25dabaa64e2b400c4813e560f13f05a4559d84ebbffa1d5d1234817f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 419.7 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
fff89d526901dbd5e04f9b9b1dbe1a719977f571198eb37d892c3f7ac9ba095e
BLAKE2b-256 checksum
How to use checksums
e9f474e388ccc8b2a4c9ecb7b13dd11da82c38bb27ebf68f4a4636d40bb9b1c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp311-cp311-win_amd64.whl

Download URL bsts_causalimpact-1.7.0-cp311-cp311-win_amd64.whl
Size 324.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
30b8e09e627b9ee08e804d6b257e1b20936dd700ed43d9449ee036481c6c9f8c
BLAKE2b-256 checksum
How to use checksums
6327df51acde36d88b366b51cdeaa1fd895a18a297d86d809add39a94458c48a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 459.4 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
42abe85ad54ab6fe0c37b171e0b8804ef21c11fae5446e9679f0054dc76cff78
BLAKE2b-256 checksum
How to use checksums
2708671f9c7c16ccf4bbc83b631915ce7dffe23db1be5baf08880a3d2e489dde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bsts_causalimpact-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 447.4 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a746ddf30ea04752612bf19928e03a51eb85ddbc1c9f7d6e4c399279c757f0b1
BLAKE2b-256 checksum
How to use checksums
eebb07759cf347683fe62026c724529228d2fa7515350488b17afea2ffb18c15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL bsts_causalimpact-1.7.0-cp311-cp311-macosx_11_0_arm64.whl
Size 413.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d277195c1e545db86950d790f57b6c7f7abd0a60bc59b7501018e51f9c652b7e
BLAKE2b-256 checksum
How to use checksums
068afdaaaa37b200d36349b8538ca5db3873a8a2845184c8afa85273ced99756
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 419.7 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c6fec1c46fa7ab15b57dd6965a7411a65814ccfaa7288d139f766ca10d5b5889
BLAKE2b-256 checksum
How to use checksums
785f3d25655201b9063d682e0336c51e7c64c0587ec0fd47b84214754428264b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp310-cp310-win_amd64.whl

Download URL bsts_causalimpact-1.7.0-cp310-cp310-win_amd64.whl
Size 324.1 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a0ccb853076796d62fd797d9883bc42cacf65dba89562672fe5b393587097a82
BLAKE2b-256 checksum
How to use checksums
da8dd8baca3e9476a0728aa6b264cb40f998fe31c1c9e1c07cffd0667225a787
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 459.5 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d9851b91a8d23bdebedb582259184c180a945a7854f90cf4accca2c050ec1d71
BLAKE2b-256 checksum
How to use checksums
4b63e4078963b7105e534623070ef22dfc9474dc9092ae423c2d373cd27cee61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL bsts_causalimpact-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 447.6 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
606d8342eb5b91ba25ce712953f713abbfed8cc0e592fbdf113cecaaafe51db2
BLAKE2b-256 checksum
How to use checksums
c87cddcb3b6bd4c63836a95ce2b013e48335d25e4b29fd4c46d2ab62dedfc8ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL bsts_causalimpact-1.7.0-cp310-cp310-macosx_11_0_arm64.whl
Size 413.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5b7596e30514082b72ee76f819faa03b93414a68e1b452f75b788277631b9192
BLAKE2b-256 checksum
How to use checksums
5f48e0a585f664c0335f2f1db3e2640048361a8b3bbc130b4f9ec76fdcb2dc31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release files / bsts_causalimpact-1.7.0-cp310-cp310-macosx_10_12_x86_64.whl

Download URL bsts_causalimpact-1.7.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 420.0 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
75a733e362658343e628e27cdad3531ed70172a113014381c7d137ab481c38fa
BLAKE2b-256 checksum
How to use checksums
307dea39eb55a29b90e0cda7d080bd15749dd66ec0669c7dd7793fccf33a72b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.7.0 This release

21 release files

1.6.0

21 release files

1.5.1

21 release files

1.3.0

21 release files

1.2.0

21 release files

1.1.0

21 release files

1.0.1

21 release files

1.0.0

21 release files

0.3.0

21 release files

0.2.0

21 release files

0.1.0

21 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page