Skip to content
CAI
Software that uses CAICheck a score

facebook/prophet

68.7

Adequate · 4 October 2026

4.7k

lines of production code

Python

with R

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Prophet forecasting library, providing time-series prediction capabilities through both Python and R interfaces backed by Stan probabilistic programming. It supports flexible trend modeling (linear, logistic, and flat), seasonal adjustments, and external regressors, with options to use either the rstan/cmdstanr or cmdstanpy backends. The codebase includes utilities for cross-validation, model serialization, and diagnostic plotting, alongside comprehensive test suites and updated holiday datasets to ensure robust statistical analysis.

How it got here

2017 — CmdStan migration and R package modernization

14 changes.

This period focused on migrating the project from PyStan to CmdStan and modernizing the R package infrastructure by switching to rstantools and cmdstanr. Significant work included consolidating Stan model definitions, deferring model compilation to improve installation speed, and updating the Python packaging to use pyproject.toml. The effort also involved extensive documentation updates, expanded test coverage, and the addition of new features like flat trend support and cross-validation diagnostics.

2018–2021 — v1.4.0 release and infrastructure modernization

6 changes.

This period focused on the release of Prophet version 1.4.0, introducing new scaling options, holiday configuration, and model serialization capabilities alongside a backward-compatibility shim for the package rename. The underlying Stan model was refactored to support flat trends and unified likelihoods, while holiday data generation was standardized through new Python and R scripts. Test infrastructure was also significantly improved with shared fixtures and multi-backend support to ensure robustness across different probabilistic programming engines.

Features

Add serialization and flat trend documentation notebooks

Added a new 'additional\_topics' notebook that documents how to save and load Prophet models using JSON serialization (replacing pickle for Python) and demonstrates the new 'flat' growth option for forcing a constant trend. Updated the diagnostics notebook to reflect recent changes in cross-validation metrics and visualization.

notebooks · high confidence

Added script to generate R-compatible holiday data

A new Python script (\generate\_holidays\_file.py\) has been added to generate the \generated\_holidays.csv\ file used by the R package. This script creates a comprehensive dataset of holidays for all supported countries from 1995 to 2045, ensuring compatibility with R by converting UTF-8 characters to ASCII and handling specific country code mappings like 'TU' for Turkey.

python/scripts · high confidence

R package refactoring and cmdstanr backend support

The R package has been restructured into modular files (diagnostics, plotting, utilities, etc.) and now supports the cmdstanr Stan backend via the new \backend\ argument and \R\_STAN\_BACKEND\ environment variable, in addition to the existing rstan backend. The \prophet()\ constructor now accepts \daily.seasonality\, \changepoint.range\, \seasonality.mode\, and \fit\ arguments, and allows model instantiation without immediate fitting. New features include a \regressor\_coefficients()\ function to inspect extra regressor impacts, a \generated\_holidays\ dataset for country-level holidays, and a \cross\_validation()\ function for time-series validation.

R/R · high confidence

Removals

Removal of legacy fbprophet Python package files

The \\_\init\\_.py\ and \forecaster.py\ source files for the \fbprophet\ Python package have been deleted. This removes the core \Prophet\ class implementation and its initialization entry point, effectively eliminating the ability to import or use the \fbprophet\ library from this codebase location.

python/fbprophet · high confidence

Behavioural changes

Consolidate Stan models into a single unified file

The separate Stan model files for linear and logistic growth trends have been removed and replaced with a single \prophet.stan\ file that handles all trend types (linear, logistic, and flat) via a \trend\_indicator\ parameter. This change consolidates the model definition, allowing users to switch between trend behaviors within one unified model structure rather than relying on distinct model files for each growth type.

python/stan · high confidence

Deferred Stan model compilation and updated build configuration

The package no longer compiles Stan models during installation or package load; instead, compilation is deferred until the first model fit, which improves installation speed and complies with CRAN policies. This change is supported by the removal of the \install.libs.R\ script that previously handled pre-compilation and the update of \Makevars\ and \Makevars.win\ to use \rstantools\-generated configurations with C++17 standard and dynamic header detection.

R/src · high confidence

Introduction of fbprophet shim package for backward compatibility

A new shim package has been added to maintain backward compatibility for users still importing the 'fbprophet' namespace. This package re-exports all functionality from the new 'prophet' package while issuing a deprecation warning, allowing existing code to continue working without immediate changes. The shim includes a test suite to verify that the re-exported components function correctly.

_python\shim · high confidence

License change to MIT and adoption of CmdStan backend

The project license has changed from BSD to MIT, and the Python backend has switched from PyStan to CmdStanPy (with CmdStan as the default), requiring users to update their installation and licensing terms.

(repo-wide) · high confidence

License change to MIT and documentation updates

The Python package license has been changed to MIT, replacing the previous license terms. The documentation has been updated: the old README file has been replaced with a new README.md that reflects the current project structure and links, and the MANIFEST.in file has been updated to include the new LICENSE file, pyproject.toml, test data, and type stubs, while pruning unnecessary build artifacts.

python · high confidence

Prophet version 1.4.0 release

This update releases Prophet version 1.4.0, introducing several new capabilities and behavioral changes. Users can now choose between 'absmax' and 'minmax' scaling for model inputs via the new \scaling\ parameter, and configure holiday effects independently of seasonality using the \holidays\_mode\ argument. Model serialization is now supported through \model\_to\_dict\ and \model\_from\_dict\ functions, allowing models to be saved and loaded as dictionaries or JSON. The plotting API has been extended with an \include\_legend\ flag for the main plot and a \predict\_columns\ parameter for cross-validation output. Additionally, the library now includes full static typing support and utilizes \importlib.resources\ for resource management.

python/prophet · high confidence

R package documentation overhaul and new feature support

The R manual has been regenerated to reflect significant API changes and new capabilities. Key updates include support for the cmdstanr backend (with new internal documentation for backend management), a new 'flat' growth option, and custom seasonality features. The documentation also covers new diagnostic tools for cross-validation (including metrics like MAPE and MDape) and plotting utilities, such as the ability to overlay changepoints and customize axis labels.

R/man · high confidence

R package modernization and build system overhaul

The R package has been significantly updated to version 1.2.2, introducing a new MIT license and modernizing the build infrastructure by switching to rstantools for Stan compilation. This change requires R 3.4.0 or later and updates several core dependencies, including dplyr (\>= 0.7.7), rstan (\>= 2.18.1), and the addition of rlang, RcppParallel, StanHeaders, and dygraphs. The package now supports daily seasonality, includes new exported functions for cross-validation, changepoint visualization, and regressor coefficients, and adds cmdstanr as a suggested backend for Stan.

R · high confidence

Removal of duplicate Stan model files from the stan directory

The \prophet\_linear\_growth.stan\ and \prophet\_logistic\_growth.stan\ files have been removed from the \stan\ directory. These files were duplicates of those already included in the R and Python directories, and their removal resolves potential issues with Git symlinks on Windows platforms.

stan · high confidence

Stan model refactored to support flat trend and unified likelihood

The underlying Stan model has been updated to support a 'flat' trend mode (in addition to the existing linear and logistic trends) and now uses the \normal\_id\_glm\ distribution for the likelihood calculation. This change simplifies the model structure by combining trend logic into a single file and adjusting how regressors and seasonality are applied, which may affect how users configure trend types and interpret model parameters.

R/inst/stan · high confidence

Updated R holiday dataset with internal packaging

The R package now includes a regenerated \generated\_holidays.csv\ file containing updated holiday data (e.g., for Aruba/ABW from 1995 onwards) and a new \generated\_holidays.R\ script that loads this CSV and saves the resulting data frame as an internal package data object using \usethis::use\_data(..., internal = TRUE)\.

R/data-raw · high confidence

Updated example datasets with pre-processed values and new COVID/multivariate data

The example CSV files in the \examples\ directory have been replaced to provide pre-processed data, removing the need for users to apply log transformations manually in their code. Specifically, the original \example\_wp\_R.csv\, \example\_wp\_R\_outliers1.csv\, \example\_wp\_R\_outliers2.csv\, and \example\_wp\_peyton\_manning.csv\ files (containing raw integer counts) have been removed and replaced with \example\_wp\_log\_R.csv\, \example\_wp\_log\_R\_outliers1.csv\, \example\_wp\_log\_R\_outliers2.csv\, and \example\_wp\_log\_peyton\_manning.csv\ (containing log-transformed float values). Additionally, new datasets have been added: \example\_air\_passengers.csv\ for monthly air passenger data, \example\_pedestrians\_covid.csv\ for daily pedestrian counts affected by the pandemic, \example\_pedestrians\_multivariate.csv\ for sub-daily multivariate location data, and \example\_yosemite\_temps.csv\ for high-frequency temperature readings.

examples · high confidence

The R quick start vignette now includes a link to the main Prophet documentation site for users seeking a detailed guide. Additionally, the instructions for plotting forecast components have been simplified, removing the comparison to Python syntax and directly stating that the \prophet\_plot\_components\ function is used in R.

R/vignettes · high confidence

Test coverage

Expanded R test suite for diagnostics, Stan functions, and utilities; Refactored test infrastructure with shared fixtures and multi-backend support.

Dependencies

Python packaging modernized and Ruby dependencies updated

The Python package now uses a pyproject.toml file to define build requirements (setuptools, wheel, cmdstanpy) and runtime dependencies (numpy, matplotlib, pandas, holidays, tqdm), while dropping support for Python versions older than 3.10. The documentation site's Ruby dependencies have been updated, notably upgrading the github-pages gem from version 104 to 228, which pulls in significant updates to underlying gems like activesupport and nokogiri.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 69 → 69 (-0.5)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 88 → 79 (-9.1)
  • Architecture 100 → 100 (+0.1)
  • Maturity 64 → 65 (+0.3)
  • Readiness 60 → 62 (+1.5)
  • Security 88 → 88 (+0.0)

Resolved (4)

  • Hotspot: python/prophet/forecaster.py (python/prophet/forecaster.py)
  • Hotspot: python/prophet/plot.py (python/prophet/plot.py)
  • Members sharing a duplicated core (5 members, 50+ identical tokens) (python/prophet/diagnostics.py)
  • No dependency advisory monitoring

New (5)

  • Documentation: no project overview (docs/_docs/holiday_effects.md)
  • Documentation: no project overview (docs/_docs/installation.md)
  • Documentation: no project overview (docs/_docs/seasonality,_holiday_effects,_and_regressors.md)
  • Members sharing a duplicated core (5 members, 50+ identical tokens) (python/prophet/diagnostics.py)
  • katex_render.html.splitAtDelimiters (cognitive 25) (docs/_includes/katex_render.html)

Changes since last survey

  • 3 commits — 0 feature/other, 3 fixes

By area

  • python/prophet — 3 commits

Notable commits

  • fix: Fix cross-validation with shared seasonality conditions (#2748)
  • fix: fix: avoid deprecated class-scoped fixture instance method (#2746)
  • fix: fix: do not modify the metrics list passed to performance_metrics (#2751)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

facebook/prophet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 4 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 0e2adaf37f59f594e51fab673cd1c103632eb0a7 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b94e107d0cec.