diff --git a/.gitea/workflows/publish-python.yml b/.gitea/workflows/publish-python.yml index b728699..6c8bee8 100644 --- a/.gitea/workflows/publish-python.yml +++ b/.gitea/workflows/publish-python.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.14' - name: Install dependencies run: | diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 857f851..f0ba760 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -6,7 +6,7 @@ jobs: runs-on: nvidia-cuda strategy: matrix: - python-version: ["3.8", "3.10", "3.12"] + python-version: ["3.8", "3.10", "3.12", "3.14"] steps: - name: Checkout repository diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3352ce9..269200c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,7 +81,7 @@ You can replicate our CI environment exactly to minimize "it works on my machine * **CUDA Toolkit:** 12.5.1 * **Base Docker Image:** `nvidia/cuda:12.5.1-devel-ubuntu24.04` * **Node.js Version:** 20.x -* **Python Versions Tested:** 3.8, 3.10, 3.12 +* **Python Versions Tested:** 3.8, 3.10, 3.12, 3.14 * **CI Docker Image:** You can pull the exact image used by our runners from Docker Hub: ```bash diff --git a/pyproject.toml b/pyproject.toml index 11a2088..75353b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,8 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Mathematics", ] diff --git a/tests/test_polysolve.py b/tests/test_polysolve.py index 32803a4..fb54642 100644 --- a/tests/test_polysolve.py +++ b/tests/test_polysolve.py @@ -139,7 +139,7 @@ def test_get_real_roots_numpy(quadratic_func): Tests that the NumPy-based genetic algorithm approximates the roots correctly. """ # Using more generations for higher accuracy in testing - ga_opts = GA_Options(num_of_generations=50, data_size=200000, selection_percentile=0.66, root_precision=3) + ga_opts = GA_Options(num_of_generations=100, data_size=500000, selection_percentile=0.66, root_precision=2) roots = quadratic_func.get_real_roots(ga_opts, use_cuda=False) @@ -158,7 +158,7 @@ def test_get_real_roots_cuda(quadratic_func): It will be skipped automatically if CuPy is not available. """ - ga_opts = GA_Options(num_of_generations=50, data_size=200000, selection_percentile=0.66, root_precision=3) + ga_opts = GA_Options(num_of_generations=100, data_size=500000, selection_percentile=0.66, root_precision=2) roots = quadratic_func.get_real_roots(ga_opts, use_cuda=True) @@ -172,7 +172,7 @@ def test_get_roots_numpy(complex_func): Tests that the NumPy-based genetic algorithm approximates the roots correctly. """ # Using more generations for higher accuracy in testing - ga_opts = GA_Options(num_of_generations=50, data_size=200000, selection_percentile=0.66, root_precision=3) + ga_opts = GA_Options(num_of_generations=100, data_size=500000, selection_percentile=0.66, root_precision=2) roots = complex_func.get_roots(ga_opts, use_cuda=False) @@ -191,7 +191,7 @@ def test_get_roots_cuda(complex_func): It will be skipped automatically if CuPy is not available. """ - ga_opts = GA_Options(num_of_generations=50, data_size=200000, selection_percentile=0.66, root_precision=3) + ga_opts = GA_Options(num_of_generations=100, data_size=500000, selection_percentile=0.66, root_precision=2) roots = complex_func.get_roots(ga_opts, use_cuda=True)