diff --git a/.github/workflows/deploy-branch-preview.yml b/.github/workflows/deploy-branch-preview.yml
index 872aff71..e56d9c27 100644
--- a/.github/workflows/deploy-branch-preview.yml
+++ b/.github/workflows/deploy-branch-preview.yml
@@ -14,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Install dependencies
diff --git a/.github/workflows/deploy-latest.yml b/.github/workflows/deploy-latest.yml
index f235b442..10cdac01 100644
--- a/.github/workflows/deploy-latest.yml
+++ b/.github/workflows/deploy-latest.yml
@@ -16,10 +16,10 @@ jobs:
- name: Check out datasette
uses: actions/checkout@v3
- name: Set up Python
- uses: actions/setup-python@v4
- # gcloud commmand breaks on higher Python versions, so stick with 3.9:
+ uses: actions/setup-python@v6
+ # Using Python 3.10 for gcloud compatibility:
with:
- python-version: "3.9"
+ python-version: "3.10"
- uses: actions/cache@v4
name: Configure pip caching
with:
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index bf67a115..5acb4899 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
@@ -37,7 +37,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: '3.13'
cache: pip
@@ -58,9 +58,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
- python-version: '3.9'
+ python-version: '3.10'
cache: pip
cache-dependency-path: setup.py
- name: Install dependencies
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
index 907104b8..8a47fd2d 100644
--- a/.github/workflows/spellcheck.yml
+++ b/.github/workflows/spellcheck.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v6
with:
python-version: '3.11'
cache: 'pip'
diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml
index 32654a93..22a69150 100644
--- a/.github/workflows/test-coverage.yml
+++ b/.github/workflows/test-coverage.yml
@@ -17,7 +17,7 @@ jobs:
- name: Check out datasette
uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: 'pip'
diff --git a/.github/workflows/test-pyodide.yml b/.github/workflows/test-pyodide.yml
index abfa9b90..7357b30c 100644
--- a/.github/workflows/test-pyodide.yml
+++ b/.github/workflows/test-pyodide.yml
@@ -14,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: "3.10"
cache: 'pip'
diff --git a/.github/workflows/test-sqlite-support.yml b/.github/workflows/test-sqlite-support.yml
index 1deef282..698aec8a 100644
--- a/.github/workflows/test-sqlite-support.yml
+++ b/.github/workflows/test-sqlite-support.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
platform: [ubuntu-latest]
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
sqlite-version: [
#"3", # latest version
"3.46",
@@ -27,7 +27,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 773876d3..901c4905 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,11 +10,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
@@ -33,16 +33,13 @@ jobs:
pytest -m "serial"
# And the test that exceeds a localhost HTTPS server
tests/test_datasette_https_server.sh
- - name: Install docs dependencies on Python 3.9+
- if: matrix.python-version != '3.8'
+ - name: Install docs dependencies
run: |
pip install -e '.[docs]'
- name: Check if cog needs to be run
- if: matrix.python-version != '3.8'
run: |
cog --check docs/*.rst
- name: Check if blacken-docs needs to be run
- if: matrix.python-version != '3.8'
run: |
# This fails on syntax errors, or a diff was applied
blacken-docs -l 60 docs/*.rst
diff --git a/docs/installation.rst b/docs/installation.rst
index e272241b..33d3d6a1 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -54,7 +54,7 @@ If the latest packaged release of Datasette has not yet been made available thro
Using pip
---------
-Datasette requires Python 3.8 or higher. The `Python.org Python For Beginners `__ page has instructions for getting started.
+Datasette requires Python 3.10 or higher. The `Python.org Python For Beginners `__ page has instructions for getting started.
You can install Datasette and its dependencies using ``pip``::
diff --git a/setup.py b/setup.py
index 48b32692..f68e621e 100644
--- a/setup.py
+++ b/setup.py
@@ -40,7 +40,7 @@ setup(
packages=find_packages(exclude=("tests",)),
package_data={"datasette": ["templates/*.html"]},
include_package_data=True,
- python_requires=">=3.8",
+ python_requires=">=3.10",
install_requires=[
"asgiref>=3.2.10",
"click>=7.1.1",
@@ -48,7 +48,6 @@ setup(
"Jinja2>=2.10.3",
"hupper>=1.9",
"httpx>=0.20",
- 'importlib_resources>=1.3.1; python_version < "3.9"',
'importlib_metadata>=4.6; python_version < "3.10"',
"pluggy>=1.0",
"uvicorn>=0.11",
@@ -99,9 +98,10 @@ setup(
"Intended Audience :: End Users/Desktop",
"Topic :: Database",
"License :: OSI Approved :: Apache Software License",
+ "Programming Language :: Python :: 3.14",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.8",
],
)