facebook/prophet
68.7
Adequate · 4 October 2026
4.7k
lines of production code
Python
with R
1
measurement over time
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
Updated quick start vignette with main site link and simplified plotting instructions
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.