diff --git a/.circleci/config.yml b/.circleci/config.yml
index e2e06bc24..3a041c8b4 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -81,7 +81,7 @@ commands:
-v `pwd`:/app \
-w /app \
--env-file vars.env \
- python:3.7 \
+ python:3.9 \
./build_tools/circle/deploy.sh
jobs:
@@ -94,8 +94,10 @@ jobs:
# larger unit tests, and to avoid multiple setup steps that can slow the pipeline down
test-sanity:
docker:
- - image: python:3.7
+ - image: python:3.9
working_directory: ~/pmdarima
+ environment:
+ SETUPTOOLS_USE_DISTUTILS: stdlib
steps:
- checkout
- run:
@@ -130,26 +132,6 @@ jobs:
python -c 'import pmdarima as pm; print(pm.__version__)'
# --- Unit tests ---
- # These are all executed on `machine` executors, since they require DinD to build the whl
- # files and perform the whl repair for manylinux support.
- test-unit-cpython37:
- machine:
- image: ubuntu-2004:202111-02
- working_directory: ~/pmdarima
- steps:
- - checkout
- - build-test-and-persist:
- pythonversion: "3.7"
-
- test-unit-cpython38:
- machine:
- image: ubuntu-2004:202111-02
- working_directory: ~/pmdarima
- steps:
- - checkout
- - build-test-and-persist:
- pythonversion: "3.8"
-
test-unit-cpython39:
machine:
image: ubuntu-2004:202111-02
@@ -219,16 +201,6 @@ jobs:
#
# ############################################
- deploy-cpython37-whl:
- machine:
- image: ubuntu-2004:202111-02
- working_directory: ~/pmdarima
- steps:
- - checkout
- - restore-whl-file:
- key: "3.7"
- - deploy-to-pypi
-
deploy-cpython38-whl:
machine:
image: ubuntu-2004:202111-02
@@ -287,7 +259,7 @@ jobs:
# GH_TOKEN (the personal Git token with pushes enabled)
deploy-doc:
docker:
- - image: python:3.7
+ - image: python:3.9
working_directory: ~/pmdarima
steps:
- checkout
@@ -306,10 +278,6 @@ workflows:
# run on test and tag
- test-sanity:
filters: *test-filters
- - test-unit-cpython37:
- filters: *test-filters
- - test-unit-cpython38:
- filters: *test-filters
- test-unit-cpython39:
filters: *test-filters
- test-unit-cpython310:
@@ -323,8 +291,6 @@ workflows:
- testing-passed:
requires:
- test-sanity
- - test-unit-cpython37
- - test-unit-cpython38
- test-unit-cpython39
- test-unit-cpython310
- test-unit-cpython311
@@ -339,16 +305,6 @@ workflows:
- testing-passed
filters: *test-filters
- - deploy-cpython37-whl:
- filters: *deploy-filters
- requires:
- - deploy-doc
-
- - deploy-cpython38-whl:
- filters: *deploy-filters
- requires:
- - deploy-doc
-
- deploy-cpython39-whl:
filters: *deploy-filters
requires:
diff --git a/.github/workflows/build_and_deploy.yml b/.github/workflows/build_and_deploy.yml
index 7e20b6397..578cc9859 100644
--- a/.github/workflows/build_and_deploy.yml
+++ b/.github/workflows/build_and_deploy.yml
@@ -20,7 +20,7 @@ jobs:
build-and-deploy:
strategy:
matrix:
- python3-minor-version: [7, 8, 9, 10, 11, 12]
+ python3-minor-version: [9, 10, 11, 12]
# TODO: Figure out macos-14/macos-latest
os: [macos-13, ubuntu-latest, windows-latest]
defaults:
diff --git a/README.md b/README.md
index 7ba1456ff..09a68c6a2 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
[![CircleCI](https://circleci.com/gh/alkaline-ml/pmdarima.svg?style=svg)](https://circleci.com/gh/alkaline-ml/pmdarima)
[![Github Actions Status](https://github.com/alkaline-ml/pmdarima/workflows/Mac%20and%20Windows%20Builds/badge.svg?branch=master)](https://github.com/alkaline-ml/pmdarima/actions?query=workflow%3A%22Mac+and+Windows+Builds%22+branch%3Amaster)
[![codecov](https://codecov.io/gh/alkaline-ml/pmdarima/branch/master/graph/badge.svg)](https://codecov.io/gh/alkaline-ml/pmdarima)
-![Supported versions](https://img.shields.io/badge/python-3.7+-blue.svg)
+![Supported versions](https://img.shields.io/badge/python-3.9+-blue.svg)
![Downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=downloads&query=%24.total&url=https%3A%2F%2Fstore.zapier.com%2Fapi%2Frecords%3Fsecret%3D1e061b29db6c4f15af01103d403b0237)
![Downloads/Week](https://img.shields.io/badge/dynamic/json?color=blue&label=downloads%2Fweek&query=%24.weekly&url=https%3A%2F%2Fstore.zapier.com%2Fapi%2Frecords%3Fsecret%3D1e061b29db6c4f15af01103d403b0237)
@@ -118,7 +118,7 @@ with open('model.pkl', 'rb') as pkl:
### Availability
-`pmdarima` is available on PyPi in pre-built Wheel files for Python 3.7+ for the following platforms:
+`pmdarima` is available on PyPi in pre-built Wheel files for Python 3.9+ for the following platforms:
* Mac (64-bit)
* Linux (64-bit manylinux)
diff --git a/build_tools/circle/build_wheel.sh b/build_tools/circle/build_wheel.sh
index 8785a1745..4e28b1df6 100755
--- a/build_tools/circle/build_wheel.sh
+++ b/build_tools/circle/build_wheel.sh
@@ -9,9 +9,7 @@ function build_wheel {
# https://www.python.org/dev/peps/pep-0513/#ucs-2-vs-ucs-4-builds
ucs_tag=""
- if [ "$pyver" = "3.7" ]; then
- ucs_tag="m"
- elif [ "$ucs_setting" = "ucs4" ]; then
+ if [ "$ucs_setting" = "ucs4" ]; then
ucs_tag="${ucs_tag}u"
fi
diff --git a/doc/conf.py b/doc/conf.py
index dc6d1ebdb..53fa13038 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -224,7 +224,7 @@
def setup(app):
def adds(pth):
print("Adding stylesheet: %s" % pth)
- app.add_stylesheet(pth)
+ app.add_css_file(pth)
adds('css/fields.css') # for parameters, etc.
adds('css/gitcontrib.css') # for git contributors
diff --git a/doc/sg_execution_times.rst b/doc/sg_execution_times.rst
new file mode 100644
index 000000000..81ec8ce28
--- /dev/null
+++ b/doc/sg_execution_times.rst
@@ -0,0 +1,73 @@
+
+:orphan:
+
+.. _sphx_glr_sg_execution_times:
+
+
+Computation times
+=================
+**00:11.856** total execution time for 13 files **from all galleries**:
+
+.. container::
+
+ .. raw:: html
+
+
+
+
+
+
+
+ .. list-table::
+ :header-rows: 1
+ :class: table table-striped sg-datatable
+
+ * - Example
+ - Time
+ - Mem (MB)
+ * - :ref:`sphx_glr_auto_examples_preprocessing_example_date_featurizer.py` (``../examples/preprocessing/example_date_featurizer.py``)
+ - 00:03.490
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_example_simple_fit.py` (``../examples/example_simple_fit.py``)
+ - 00:03.400
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_model_selection_example_cross_val_predict.py` (``../examples/model_selection/example_cross_val_predict.py``)
+ - 00:01.976
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_example_pipeline.py` (``../examples/example_pipeline.py``)
+ - 00:00.937
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_model_selection_example_cross_validation.py` (``../examples/model_selection/example_cross_validation.py``)
+ - 00:00.775
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_arima_example_persisting_a_model.py` (``../examples/arima/example_persisting_a_model.py``)
+ - 00:00.602
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_utils_example_tsdisplay.py` (``../examples/utils/example_tsdisplay.py``)
+ - 00:00.233
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_arima_example_add_new_samples.py` (``../examples/arima/example_add_new_samples.py``)
+ - 00:00.198
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_arima_example_seasonal_decomposition.py` (``../examples/arima/example_seasonal_decomposition.py``)
+ - 00:00.140
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_arima_example_auto_arima.py` (``../examples/arima/example_auto_arima.py``)
+ - 00:00.102
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_datasets_example_load_data.py` (``../examples/datasets/example_load_data.py``)
+ - 00:00.001
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_utils_example_array_differencing.py` (``../examples/utils/example_array_differencing.py``)
+ - 00:00.001
+ - 0.0
+ * - :ref:`sphx_glr_auto_examples_utils_example_array_concatenation.py` (``../examples/utils/example_array_concatenation.py``)
+ - 00:00.000
+ - 0.0
diff --git a/doc/whats_new.rst b/doc/whats_new.rst
index 43daa830e..524c3c025 100644
--- a/doc/whats_new.rst
+++ b/doc/whats_new.rst
@@ -7,6 +7,12 @@ What's new in pmdarima
As new releases of pmdarima are pushed out, the following list (introduced in
v0.8.1) will document the latest features.
+`v2.0.5 `_
+-------------------------------------------------
+
+* Remove support for Python 3.7 (end-of-life 2023-06-23)
+* Remove support for Python 3.8 (end-of-life 2024-10-07)
+
`v2.0.4 `_
-------------------------------------------------
diff --git a/pmdarima/arima/tests/test_arima_diagnostics.py b/pmdarima/arima/tests/test_arima_diagnostics.py
index c31cd6f99..022265e9f 100644
--- a/pmdarima/arima/tests/test_arima_diagnostics.py
+++ b/pmdarima/arima/tests/test_arima_diagnostics.py
@@ -76,8 +76,8 @@ def mock_acf_plot(resid, ax, lags):
def test_mock_plot_diagnostics(model_type, model):
model.fit(lynx)
- with patch('statsmodels.graphics.utils.create_mpl_fig', MockMPLFigure),\
- patch('statsmodels.graphics.gofplots.qqplot', mock_qqplot),\
+ with patch('statsmodels.graphics.utils.create_mpl_fig', MockMPLFigure), \
+ patch('statsmodels.graphics.gofplots.qqplot', mock_qqplot), \
patch('statsmodels.graphics.tsaplots.plot_acf', mock_acf_plot):
diag = model.plot_diagnostics(figsize=(10, 12))
diff --git a/pmdarima/datasets/tests/test_load_datasets.py b/pmdarima/datasets/tests/test_load_datasets.py
index f867e68c7..df73afd28 100644
--- a/pmdarima/datasets/tests/test_load_datasets.py
+++ b/pmdarima/datasets/tests/test_load_datasets.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from pmdarima.datasets import load_heartrate, load_lynx, load_wineind,\
+from pmdarima.datasets import load_heartrate, load_lynx, load_wineind, \
load_woolyrnq, load_ausbeer, load_austres, load_gasoline, \
load_airpassengers, load_taylor, load_msft, load_sunspots, _base as base
diff --git a/setup.py b/setup.py
index 1d82068d6..8487c639e 100644
--- a/setup.py
+++ b/setup.py
@@ -20,8 +20,8 @@
import builtins
# Minimum allowed version
-MIN_PYTHON = (3, 7)
IS_PYTHON_312 = sys.version_info[0] == 3 and sys.version_info[1] >= 12
+MIN_PYTHON = (3, 9)
# Hacky (!!), adopted from sklearn. This sets a global variable
# so pmdarima __init__ can detect if it's being loaded in the setup
@@ -239,8 +239,6 @@ def do_setup():
'Operating System :: Unix',
'Operating System :: MacOS',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',