diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 729336bac..33eb810a0 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -11,7 +11,6 @@ steps: matrix: setup: python: - - "3.9" - "3.10" - "3.11" - "3.12" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 20663c601..da7797f91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] nox-session: [""] runs-on: ["ubuntu-latest"] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4d83ec97c..512ba2a7d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ found at `.buildkite/run-elasticsearch.sh`. There are several environment variables that control integration tests: -- `PYTHON_VERSION`: Version of Python to use, defaults to `3.9` +- `PYTHON_VERSION`: Version of Python to use, defaults to `3.14` - `PYTHON_CONNECTION_CLASS`: Connection class to use, defaults to `Urllib3HttpConnection` - `STACK_VERSION`: Version of Elasticsearch to use. These should be the same as tags of `docker.elastic.co/elasticsearch/elasticsearch` diff --git a/docs/reference/getting-started.md b/docs/reference/getting-started.md index 7a5d82c16..151cb95fb 100644 --- a/docs/reference/getting-started.md +++ b/docs/reference/getting-started.md @@ -11,7 +11,7 @@ This page guides you through the installation process of the Python client, show ### Requirements [_requirements] -* [Python](https://www.python.org/) 3.9 or newer +* [Python](https://www.python.org/) 3.10 or newer * [`pip`](https://pip.pypa.io/en/stable/), installed by default alongside Python diff --git a/examples/fastapi-apm/dockerfiles/Dockerfile.app b/examples/fastapi-apm/dockerfiles/Dockerfile.app index 40809ceba..c4c9fe38f 100644 --- a/examples/fastapi-apm/dockerfiles/Dockerfile.app +++ b/examples/fastapi-apm/dockerfiles/Dockerfile.app @@ -1,4 +1,4 @@ -FROM python:3.9 +FROM python:3.10 EXPOSE 9292 WORKDIR / diff --git a/examples/fastapi-apm/dockerfiles/Dockerfile.ping b/examples/fastapi-apm/dockerfiles/Dockerfile.ping index 97e24af2d..6525cbea4 100644 --- a/examples/fastapi-apm/dockerfiles/Dockerfile.ping +++ b/examples/fastapi-apm/dockerfiles/Dockerfile.ping @@ -1,4 +1,4 @@ -FROM python:3.9 +FROM python:3.10 WORKDIR / RUN python -m pip install \ --no-cache \ diff --git a/noxfile.py b/noxfile.py index 01de5e4b4..73f3df3d5 100644 --- a/noxfile.py +++ b/noxfile.py @@ -44,7 +44,7 @@ def pytest_argv(): ] -@nox.session(python=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]) +@nox.session(python=["3.10", "3.11", "3.12", "3.13", "3.14"]) def test(session): session.install("-e", ".[dev]", env=INSTALL_ENV, silent=False) diff --git a/pyproject.toml b/pyproject.toml index 6b4915106..e2453c8ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "elasticsearch" description = "Python client for Elasticsearch" readme = "README.md" license = "Apache-2.0" -requires-python = ">=3.9" +requires-python = ">=3.10" authors = [ { name = "Elastic Client Library Maintainers", email = "client-libs@elastic.co" }, ] @@ -21,7 +21,6 @@ classifiers = [ "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", diff --git a/utils/generate-examples.py b/utils/generate-examples.py index 39fdc0973..20c5c3424 100644 --- a/utils/generate-examples.py +++ b/utils/generate-examples.py @@ -198,7 +198,7 @@ def blacken(filename): runner = CliRunner() result = runner.invoke( - black.main, [str(filename), "--line-length=75", "--target-version=py37"] + black.main, [str(filename), "--line-length=75", "--target-version=py310"] ) assert result.exit_code == 0, result.output diff --git a/utils/run-unasync-dsl.py b/utils/run-unasync-dsl.py index b74c748fa..f9035de76 100644 --- a/utils/run-unasync-dsl.py +++ b/utils/run-unasync-dsl.py @@ -101,7 +101,7 @@ def main(check=False): output_dirs = [] for dir in source_dirs: output_dirs.append(f"{dir[0]}_sync_check/" if check else dir[1]) - subprocess.check_call(["black", "--target-version=py38", *output_dirs]) + subprocess.check_call(["black", "--target-version=py310", *output_dirs]) subprocess.check_call(["isort", *output_dirs]) for dir, output_dir in zip(source_dirs, output_dirs): for file in glob("*.py", root_dir=dir[0]):