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

janhoy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-orbit.git


The following commit(s) were added to refs/heads/main by this push:
     new 63e1eb55 Require Python 3.12+ (#18)
63e1eb55 is described below

commit 63e1eb55f4aee151f447cf8ec93070e5cd2e9fb4
Author: Jan Høydahl <[email protected]>
AuthorDate: Sun May 24 01:38:03 2026 +0200

    Require Python 3.12+ (#18)
---
 .asf.yaml                                           |  5 +++--
 .ci/variables.json                                  |  4 +---
 .pylintrc                                           | 18 ++++++++++--------
 AGENTS.md                                           |  6 +++---
 DEVELOPER_GUIDE.md                                  |  2 +-
 Makefile                                            | 20 +++++++++-----------
 PYTHON_SUPPORT_GUIDE.md                             | 10 +++++-----
 docs/quickstart.md                                  |  2 +-
 docs/user-guide/install-and-configure/installing.md |  6 +++---
 osbenchmark/__init__.py                             |  4 ++--
 setup.py                                            |  5 ++---
 tests/builder/installers/docker_installer_test.py   |  4 ++--
 tox.ini                                             |  2 +-
 13 files changed, 43 insertions(+), 45 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
index fe663cd4..e308249d 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -30,8 +30,9 @@ github:
     # Auto-delete head branch after a PR is merged
     del_branch_on_merge: true
 
-  autolink_jira:
-    - SOLR
+  # Disabled autolinking of JIRA tickets since it messes up links to GH issues
+  #autolink_jira:
+  #  - SOLR
 
   # Branch protection ruleset
   rulesets:
diff --git a/.ci/variables.json b/.ci/variables.json
index 88e7e417..58040cf6 100644
--- a/.ci/variables.json
+++ b/.ci/variables.json
@@ -1,9 +1,7 @@
 {
   "python_versions": {
-    "PY310": "3.10.6",
-    "PY311": "3.11.1",
     "PY312": "3.12.11",
     "PY313": "3.13.7",
-    "MIN_PY_VER": "3.10.6"
+    "MIN_PY_VER": "3.12.11"
   }
 }
diff --git a/.pylintrc b/.pylintrc
index 02b24ee5..8b0df2b5 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -46,11 +46,6 @@ suggestion-mode=yes
 # active Python interpreter and may run arbitrary code.
 unsafe-load-any-extension=no
 
-# pylint-quotes
-string-quote=double
-triple-quote=double
-docstring-quote=double
-
 [MESSAGES CONTROL]
 
 # Only show warnings with the listed confidence levels. Leave empty to show
@@ -203,7 +198,14 @@ disable=print-statement,
         use-dict-literal,
         consider-using-generator,
         try-except-raise,
-        consider-iterating-dictionary
+        consider-iterating-dictionary,
+        # pylint 3.x checks not enforced in this codebase
+        too-many-positional-arguments,
+        cyclic-import,
+        possibly-used-before-assignment,
+        consider-using-min-builtin,
+        consider-using-max-builtin,
+        use-yield-from
 
 
 # Enable the message, report, category or checker with the given id(s). You can
@@ -636,5 +638,5 @@ min-public-methods=2
 
 # Exceptions that will emit a warning when being caught. Defaults to
 # "BaseException, Exception".
-overgeneral-exceptions=BaseException,
-                       Exception
+overgeneral-exceptions=builtins.BaseException,
+                       builtins.Exception
diff --git a/AGENTS.md b/AGENTS.md
index 53c95c39..adf34ca3 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -10,7 +10,7 @@ Optional: `pbzip2` (parallel bzip2 — install via `apt install 
pbzip2` or `brew
 Without it, `.bz2` corpus decompression falls back to Python stdlib (slower).
 
 ```bash
-make develop          # Install Python 3.10 via pyenv, create .venv, install 
all deps
+make develop          # Install Python 3.12 via pyenv, create .venv, install 
all deps
 source .venv/bin/activate  # Activate virtual environment
 ```
 
@@ -21,7 +21,7 @@ make lint             # Run pylint on osbenchmark/, 
benchmarks/, scripts/, tests
 make test             # Run unit tests (pytest tests/)
 pytest tests/path/to/test_file.py::TestClass::test_method  # Run a single test
 make it               # Run integration tests via tox (requires Java, Docker; 
~30 min)
-make it310            # Integration tests for Python 3.10 only
+make it312            # Integration tests for Python 3.12 only
 make benchmark        # Run performance benchmarks (pytest benchmarks/)
 make build            # Build distribution wheel
 make clean            # Remove build artifacts, caches, tox environments
@@ -111,6 +111,6 @@ or from a git workload repository (`--workload-repository`).
 
 ## Key Technologies
 
-- **Python 3.10+** with `pysolr` (data ops), `requests` (HTTP admin), `psutil` 
(I/O metrics), `thespian` (actor model), `pytest` (tests), `tabulate` (console 
output)
+- **Python 3.12+** with `pysolr` (data ops), `requests` (HTTP admin), `psutil` 
(I/O metrics), `thespian` (actor model), `pytest` (tests), `tabulate` (console 
output)
 - **Metrics store**: local filesystem — JSON/CSV result files at 
`~/.solr-orbit/`, SQLite test-runs store
 - **Docs**: Jekyll 4.x + just-the-docs gem in `docs/`; deployed to GitHub 
Pages via `.github/workflows/docs.yml`
diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md
index 6b56eded..27ce6ab3 100644
--- a/DEVELOPER_GUIDE.md
+++ b/DEVELOPER_GUIDE.md
@@ -15,7 +15,7 @@ Apache Solr Orbit.
 
 ## Prerequisites
 
-- **Python 3.9+**: Use [pyenv](https://github.com/pyenv/pyenv) to manage
+- **Python 3.12+**: Use [pyenv](https://github.com/pyenv/pyenv) to manage
   Python versions.
 
   Debian/Ubuntu:
diff --git a/Makefile b/Makefile
index 1c139a28..e6c75fa7 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ SHELL = /bin/bash
 PYTHON = python3
 PIP = pip3
 VERSIONS = $(shell jq -r '.python_versions | .[]' .ci/variables.json | sed 
'$$d')
-VERSION310 = $(shell jq -r '.python_versions | .[]' .ci/variables.json | sed 
'$$d' | grep 3\.10)
+VERSION312 = $(shell jq -r '.python_versions | .[]' .ci/variables.json | sed 
'$$d' | grep 3\.12)
 PYENV_ERROR = "\033[0;31mIMPORTANT\033[0m: Please install pyenv and run 
\033[0;31meval \"\$$(pyenv init -)\"\033[0m.\n"
 
 all: develop
@@ -29,14 +29,14 @@ pyinst:
        @for i in $(VERSIONS); do pyenv install --skip-existing $$i; done
        pyenv local $(VERSIONS)
 
-pyinst310:
+pyinst312:
        @which pyenv > /dev/null 2>&1 || { printf $(PYENV_ERROR); exit 1; }
-       pyenv install --skip-existing $(VERSION310)
-       pyenv local $(VERSION310)
+       pyenv install --skip-existing $(VERSION312)
+       pyenv local $(VERSION312)
 
 check-pip:
        # Install pyenv if the Python environment is externally managed.
-       @if ! $(PIP) > /dev/null 2>&1 || ! $(PIP) install pip > /dev/null 2>&1; 
then make pyinst310; fi
+       @if ! $(PIP) > /dev/null 2>&1 || ! $(PIP) install pip > /dev/null 2>&1; 
then make pyinst312; fi
 
 check-java:
        @if ! test "$(JAVA21_HOME)" || ! java --version > /dev/null 2>&1 || ! 
javadoc --help > /dev/null 2>&1; then \
@@ -50,9 +50,7 @@ check-java:
 install-deps: check-pip
        $(PIP) install --upgrade pip setuptools wheel
 
-# pylint does not work with Python versions >3.8:
-#   Value 'Optional' is unsubscriptable (unsubscriptable-object)
-develop: pyinst310 install-deps
+develop: pyinst312 install-deps
        PIP_ONLY_BINARY=h5py $(PIP) install -e .[develop]
 
 build: install-deps
@@ -79,7 +77,7 @@ tox-env-clean:
        rm -rf .tox
 
 lint:
-       @find osbenchmark benchmarks scripts tests it -name "*.py" -exec pylint 
-j0 -rn --load-plugins pylint_quotes --rcfile=$(CURDIR)/.pylintrc \{\} +
+       @find osbenchmark benchmarks scripts tests it -name "*.py" -exec pylint 
-j0 -rn --rcfile=$(CURDIR)/.pylintrc \{\} +
 
 test: develop
        pytest tests/
@@ -88,7 +86,7 @@ it: pyinst check-java python-caches-clean tox-env-clean
        @which tox || $(PIP) install tox
        tox
 
-it310 it311 it312 it313: pyinst check-java python-caches-clean tox-env-clean
+it312 it313: pyinst check-java python-caches-clean tox-env-clean
        @which tox || $(PIP) install tox
        tox -e $(@:it%=py%)
 
@@ -106,4 +104,4 @@ release-checks:
 release: release-checks clean it
        ./release.sh $(release_version) $(next_version)
 
-.PHONY: install clean python-caches-clean tox-env-clean test it it310 
benchmark coverage release release-checks pyinst
+.PHONY: install clean python-caches-clean tox-env-clean test it it312 
benchmark coverage release release-checks pyinst
diff --git a/PYTHON_SUPPORT_GUIDE.md b/PYTHON_SUPPORT_GUIDE.md
index 11ed97ed..e7a5f5cf 100644
--- a/PYTHON_SUPPORT_GUIDE.md
+++ b/PYTHON_SUPPORT_GUIDE.md
@@ -19,14 +19,14 @@ Make changes to the following files and open a PR titled
   `pyinst<MIN_VERSION>` target and `check-pip`:
 
   ```makefile
-  VERSION310 = $(shell jq -r '.python_versions | .[]' .ci/variables.json | sed 
'$$d' | grep 3\.10)
+  VERSION312 = $(shell jq -r '.python_versions | .[]' .ci/variables.json | sed 
'$$d' | grep 3\.12)
 
-  pyinst310:
-      pyenv install --skip-existing $(VERSION310)
-      pyenv local $(VERSION310)
+  pyinst312:
+      pyenv install --skip-existing $(VERSION312)
+      pyenv local $(VERSION312)
 
   check-pip:
-      @if ! $(PIP) > /dev/null 2>&1 || ! $(PIP) install pip > /dev/null 2>&1; 
then make pyinst310; fi
+      @if ! $(PIP) > /dev/null 2>&1 || ! $(PIP) install pip > /dev/null 2>&1; 
then make pyinst312; fi
   ```
 
 * `osbenchmark/__init__.py`: Update the minimum version in the error message:
diff --git a/docs/quickstart.md b/docs/quickstart.md
index 8c6b9f7d..247d47e4 100644
--- a/docs/quickstart.md
+++ b/docs/quickstart.md
@@ -12,7 +12,7 @@ This page outlines how to quickly install Apache Solr Orbit 
and run your first b
 To perform the quickstart steps, you'll need the following:
 
 - Git 2.3 or later
-- Python 3.10 or later
+- Python 3.12 or later
 - An active Apache Solr cluster, **or** Docker (to let Solr Orbit start one 
for you)
 
 ## Set up a Solr cluster
diff --git a/docs/user-guide/install-and-configure/installing.md 
b/docs/user-guide/install-and-configure/installing.md
index 54fe2d0c..9f684333 100644
--- a/docs/user-guide/install-and-configure/installing.md
+++ b/docs/user-guide/install-and-configure/installing.md
@@ -39,7 +39,7 @@ drives introduce performance bottlenecks that make benchmark 
results unreliable.
 
 Before installing Solr Orbit, ensure the following software is available on 
your host:
 
-- **Python 3.10 or later** — required for all pipelines.
+- **Python 3.12 or later** — required for all pipelines.
 - **pip** — Python package manager.
 - **Git 2.3 or later** — required to fetch workloads from a remote repository.
 - **Docker** — required for the `--pipeline=docker` pipeline, which starts a 
Solr cluster
@@ -53,10 +53,10 @@ Before installing Solr Orbit, ensure the following software 
is available on your
 ### Checking software dependencies
 
 Use [pyenv](https://github.com/pyenv/pyenv) to manage multiple versions of 
Python on your host.
-This is especially useful if your system Python is older than 3.10.
+This is especially useful if your system Python is older than 3.12.
 {: .tip}
 
-- Check that Python 3.10 or later is installed:
+- Check that Python 3.12 or later is installed:
 
   ```bash
   python3 --version
diff --git a/osbenchmark/__init__.py b/osbenchmark/__init__.py
index f4c3a4b1..2faaa094 100644
--- a/osbenchmark/__init__.py
+++ b/osbenchmark/__init__.py
@@ -83,8 +83,8 @@ $$$$$$$$$$""""           ""$$$$$$$$$$$"
 
 
 def check_python_version():
-    if sys.version_info < (3, 10):
-        raise RuntimeError("solr-orbit requires at least Python 3.10 but you 
are using:\n\nPython %s" % str(sys.version))
+    if sys.version_info < (3, 12):
+        raise RuntimeError("Solr Orbit requires at least Python 3.12 but you 
are using:\n\nPython %s" % str(sys.version))
 
 
 def doc_link(path=None):
diff --git a/setup.py b/setup.py
index 039dd1f2..bd332d69 100644
--- a/setup.py
+++ b/setup.py
@@ -47,7 +47,7 @@ __versionstr__ = raw_version
 long_description = str_from_file("README.md")
 
 # tuples of (major, minor) of supported Python versions ordered from lowest to 
highest
-supported_python_versions = [(3, 10), (3, 11), (3, 13)]
+supported_python_versions = [(3, 12), (3, 13)]
 
 
################################################################################################
 #
@@ -149,8 +149,7 @@ develop_require = [
     "twine==6.0.1",
     "wheel>=0.38.4",
     "github3.py==1.3.0",
-    "pylint==2.9.0",
-    "pylint-quotes==0.2.1"
+    "pylint==3.3.9"
 ]
 
 python_version_classifiers = ["Programming Language :: Python :: 
{}.{}".format(major, minor)
diff --git a/tests/builder/installers/docker_installer_test.py 
b/tests/builder/installers/docker_installer_test.py
index f8d36540..b62035d4 100644
--- a/tests/builder/installers/docker_installer_test.py
+++ b/tests/builder/installers/docker_installer_test.py
@@ -108,7 +108,7 @@ services:
     networks:
       - solr-net
     healthcheck:
-          test: curl -f http://localhost:8983/solr/admin/ping
+          test: curl -f http://localhost:8983/solr/admin/info/system
           interval: 5s
           timeout: 2s
           retries: 10
@@ -159,7 +159,7 @@ services:
     networks:
       - solr-net
     healthcheck:
-          test: curl -f http://localhost:8983/solr/admin/ping
+          test: curl -f http://localhost:8983/solr/admin/info/system
           interval: 5s
           timeout: 2s
           retries: 10
diff --git a/tox.ini b/tox.ini
index 3ddf1057..5a35ca92 100644
--- a/tox.ini
+++ b/tox.ini
@@ -7,7 +7,7 @@
 ###############################################################################
 [tox]
 envlist =
-    py310,py311,py312,py313
+    py312,py313
 platform =
     linux|darwin
 

Reply via email to