This is an automated email from the ASF dual-hosted git repository.

skrawcz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hamilton.git

commit fbb92f45133509ee7c51321caa27fcf2d5eb327a
Author: Josh Markovic <[email protected]>
AuthorDate: Thu Jan 8 15:43:50 2026 +0000

    Remove Pythono 3.8 and 3.9
---
 .github/workflows/hamilton-main.yml       | 23 ++++-------------------
 .github/workflows/hamilton-ui-backend.yml |  2 +-
 contrib/setup.py                          |  4 +---
 dev_tools/language_server/pyproject.toml  |  2 +-
 docs/get-started/install.md               |  2 +-
 pyproject.toml                            | 15 ++++++---------
 scripts/build_conda.sh                    |  2 +-
 ui/backend/setup.py                       |  4 +---
 ui/sdk/pyproject.toml                     |  4 +---
 writeups/developer_setup.md               |  2 +-
 10 files changed, 18 insertions(+), 42 deletions(-)

diff --git a/.github/workflows/hamilton-main.yml 
b/.github/workflows/hamilton-main.yml
index b71e1e38..0c9db92d 100644
--- a/.github/workflows/hamilton-main.yml
+++ b/.github/workflows/hamilton-main.yml
@@ -79,15 +79,6 @@ jobs:
 
 
         - name: Test integrations
-          if: ${{ matrix.python-version == '3.9' }}
-          run: |
-            uv sync --group test --extra pandera
-            uv pip install -r tests/integrations/pandera/requirements.txt
-            uv pip install dask-expr
-            uv run pytest tests/integrations
-
-        - name: Test integrations
-          if: ${{ matrix.python-version != '3.9' }}
           run: |
             uv sync --group test --extra pandera
             uv pip install -r tests/integrations/pandera/requirements.txt
@@ -111,15 +102,11 @@ jobs:
             uv run pytest plugin_tests/h_narwhals
 
         - name: Test dask
-          # Dask supports >= py3.9
-          if: ${{ matrix.python-version != '3.8' }}
           run: |
             uv sync --group test --extra dask
             uv run pytest plugin_tests/h_dask
 
         - name: Test ray
-          # Ray supports >= py3.9
-          if: ${{ matrix.python-version != '3.8' }}
           env:
             RAY_ENABLE_UV_RUN_RUNTIME_ENV: 0 # 
https://github.com/ray-project/ray/issues/53848
           run: |
@@ -127,8 +114,7 @@ jobs:
             uv run pytest plugin_tests/h_ray
 
         - name: Test pyspark
-          # Spark supports >= py3.9
-          if: ${{ matrix.python-version != '3.8' && runner.os == 'Linux' }}
+          if: ${{ runner.os == 'Linux' }}
           env:
             PYSPARK_SUBMIT_ARGS: "--conf spark.sql.ansi.enabled=false 
pyspark-shell"
           run: |
@@ -139,8 +125,7 @@ jobs:
             uv run pytest plugin_tests/h_spark
 
         - name: Test pyspark
-          # Spark supports >= py3.9
-          if: ${{ matrix.python-version != '3.8' && runner.os != 'Linux' }}
+          if: ${{ runner.os != 'Linux' }}
           env:
             PYSPARK_SUBMIT_ARGS: "--conf spark.sql.ansi.enabled=false 
pyspark-shell"
           run: |
@@ -151,7 +136,7 @@ jobs:
 
         - name: Test vaex
           # Vaex supports <= py3.10 and numpy<2
-          if: ${{ runner.os == 'Linux' && (matrix.python-version == '3.8' || 
matrix.python-version == '3.9' || matrix.python-version == '3.10') }}
+          if: ${{ runner.os == 'Linux' && matrix.python-version == '3.10' }}
           run: |
             sudo apt-get install --no-install-recommends --yes libpcre3-dev 
cargo
             uv sync --group test --extra vaex
@@ -160,7 +145,7 @@ jobs:
 
         - name: Test vaex
           # Vaex supports <= py3.10 and numpy<2
-          if: ${{ runner.os != 'Linux' && (matrix.python-version == '3.8' || 
matrix.python-version == '3.9' || matrix.python-version == '3.10') }}
+          if: ${{ runner.os != 'Linux' && matrix.python-version == '3.10' }}
           run: |
             uv sync --group test --extra vaex
             uv pip install "numpy<2"
diff --git a/.github/workflows/hamilton-ui-backend.yml 
b/.github/workflows/hamilton-ui-backend.yml
index 204fc48c..20942ce5 100644
--- a/.github/workflows/hamilton-ui-backend.yml
+++ b/.github/workflows/hamilton-ui-backend.yml
@@ -42,7 +42,7 @@ jobs:
       - name: Set up Python
         uses: actions/setup-python@v4
         with:
-          python-version: '3.9'
+          python-version: '3.10'
       - name: Install dependencies
         run: |
           cd ui/backend/server
diff --git a/contrib/setup.py b/contrib/setup.py
index f325f977..7662d65c 100644
--- a/contrib/setup.py
+++ b/contrib/setup.py
@@ -75,8 +75,6 @@ setup(
         "Natural Language :: English",
         "License :: OSI Approved :: Apache Software License",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.8",
-        "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.12",
@@ -84,7 +82,7 @@ setup(
     ],
     # Note that this feature requires pep8 >= v9 and a version of setup tools 
greater than the
     # default version installed with virtualenv. Make sure to update your 
tools!
-    python_requires=">=3.8, <4",
+    python_requires=">=3.10, <4",
     # adding this to slim the package down, since these dependencies are only 
used in certain contexts.
     extras_require={
         "visualization": ["sf-hamilton[visualization]"],
diff --git a/dev_tools/language_server/pyproject.toml 
b/dev_tools/language_server/pyproject.toml
index a0fe6b38..7ff50959 100644
--- a/dev_tools/language_server/pyproject.toml
+++ b/dev_tools/language_server/pyproject.toml
@@ -26,7 +26,7 @@ classifiers = [
     "Programming Language :: Python :: 3",
     "Programming Language :: Python :: 3 :: Only",
 ]
-requires-python = ">=3.8, <4"
+requires-python = ">=3.10, <4"
 dependencies = [
     "pygls>=1.3.1",
     "sf-hamilton[visualization]>=1.56",
diff --git a/docs/get-started/install.md b/docs/get-started/install.md
index 48810c90..04055a89 100644
--- a/docs/get-started/install.md
+++ b/docs/get-started/install.md
@@ -24,7 +24,7 @@ Installing hamilton is easy!
 
 Apache Hamilton is a lightweight framework with a variety of 
extensions/plugins. To get started, you'll need the following:
 
-- ``python >= 3.8``
+- ``python >= 3.10``
 - ``pip``
 
 For help with python/pip/managing virtual environments see the [python 
docs](https://docs.python.org/3/tutorial/venv.html/).
diff --git a/pyproject.toml b/pyproject.toml
index bfa3f85e..481c85b0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -93,10 +93,9 @@ dev = [
   "ruff==0.5.7", # this should match `.pre-commit-config.yaml`
 ]
 test = [
-  "connectorx<=0.3.2; python_version=='3.8'",
-  "connectorx; python_version!='3.8'",
+  "connectorx",
   "dask[complete]",
-  "dask-expr>=1.1.14; python_version >= '3.10'", # Bugfix only available after 
py3.10 https://github.com/dask/dask-expr/pull/1150
+  "dask-expr>=1.1.14",
   "datasets>=2.18.0", # huggingface datasets -- 
https://github.com/huggingface/datasets/issues/6737#issuecomment-2107336816
   "diskcache",
   "dlt",
@@ -117,15 +116,13 @@ test = [
   "polars",
   "pyarrow",
   "pydantic >=2.0",
-  "pyreadstat<1.2.8; python_version <= '3.9'", # for SPSS data loader
-  "pyreadstat; python_version > '3.9'", # for SPSS data loader
+  "pyreadstat", # for SPSS data loader
   "pytest",
   "pytest-asyncio",
   "pytest-cov",
   "PyYAML",
   "scikit-learn",
-  "sqlalchemy==1.4.49; python_version == '3.7.*'",
-  "sqlalchemy; python_version >= '3.8'",
+  "sqlalchemy",
   "typer",
   "xgboost",
   "xlsx2csv", # for excel data loader
@@ -135,7 +132,7 @@ docs = [
   {include-group = "dev"},
   "alabaster>=0.7,<0.8,!=0.7.5", # read the docs pins
   "commonmark==0.9.1", # read the docs pins
-  "dask-expr>=1.1.14; python_version >= '3.10'", # Bugfix only available after 
py3.10 https://github.com/dask/dask-expr/pull/1150
+  "dask-expr>=1.1.14",
   "dask[distributed]",
   "ddtrace<3.0",
   "diskcache",
@@ -200,7 +197,7 @@ slack = 
"https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8
 
 [tool.ruff]
 line-length = 100
-target-version = "py38"  # Must include only the earliest supported version
+target-version = "py310"  # Must include only the earliest supported version
 
 [tool.ruff.format]
 docstring-code-format = false
diff --git a/scripts/build_conda.sh b/scripts/build_conda.sh
index 2b7a58da..d56af699 100644
--- a/scripts/build_conda.sh
+++ b/scripts/build_conda.sh
@@ -22,7 +22,7 @@ CONDA_HOME=$HOME/anaconda3
 # conda activate && anaconda login
 pkg='sf-hamilton'
 # adjust the Python versions you would like to build
-array=(3.7 3.8 3.9 3.10 3.11 )
+array=(3.10 3.11 3.12 3.13)
 echo "Building conda package ..."
 cd ~
 # this will create a ~/sf-hamilton directory with metadata to build the 
package.
diff --git a/ui/backend/setup.py b/ui/backend/setup.py
index 92999067..60aed1a8 100644
--- a/ui/backend/setup.py
+++ b/ui/backend/setup.py
@@ -54,8 +54,6 @@ setup(
         "Natural Language :: English",
         "License :: OSI Approved :: Apache Software License",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.8",
-        "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.12",
@@ -63,7 +61,7 @@ setup(
     ],
     # Note that this feature requires pep8 >= v9 and a version of setup tools 
greater than the
     # default version installed with virtualenv. Make sure to update your 
tools!
-    python_requires=">=3.6, <4",
+    python_requires=">=3.10, <4",
     # adding this to slim the package down, since these dependencies are only 
used in certain contexts.
     # Relevant project URLs
     project_urls={  # Optional
diff --git a/ui/sdk/pyproject.toml b/ui/sdk/pyproject.toml
index 3b457d90..695aa83a 100644
--- a/ui/sdk/pyproject.toml
+++ b/ui/sdk/pyproject.toml
@@ -17,14 +17,12 @@ classifiers = [
     "Natural Language :: English",
     "License :: OSI Approved :: Apache Software License",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.8",
-    "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13"
 ]
-requires-python = ">=3.7, <4"
+requires-python = ">=3.10, <4"
 dynamic = ["dependencies", "optional-dependencies", "version"]
 
 [project.urls]
diff --git a/writeups/developer_setup.md b/writeups/developer_setup.md
index 0af38927..31c60f39 100644
--- a/writeups/developer_setup.md
+++ b/writeups/developer_setup.md
@@ -121,7 +121,7 @@ The following values for `TASK` are recognized:
 Choose a Python version and task.
 
 ```shell
-PYTHON_VERSION='3.8'
+PYTHON_VERSION='3.10'
 TASK=tests
 ```
 

Reply via email to