[GRASS-git] [OSGeo/grass] 3dd71f: packaging: Update min Python version to 3.10 (#6477)

Vaclav Petras noreply at github.com
Sat Oct 11 01:39:02 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/OSGeo/grass
  Commit: 3dd71f5fab83b72a2db2da959fe075c5b3b52200
      https://github.com/OSGeo/grass/commit/3dd71f5fab83b72a2db2da959fe075c5b3b52200
  Author: Vaclav Petras <wenzeslaus at gmail.com>
  Date:   2025-10-11 (Sat, 11 Oct 2025)

  Changed paths:
    M .github/workflows/pytest.yml
    M .github/workflows/python-code-quality.yml
    M REQUIREMENTS.md
    M gui/wxpython/animation/controller.py
    M gui/wxpython/animation/data.py
    M gui/wxpython/animation/dialogs.py
    M gui/wxpython/animation/nviztask.py
    M gui/wxpython/animation/provider.py
    M gui/wxpython/animation/temporal_manager.py
    M gui/wxpython/animation/utils.py
    M gui/wxpython/gui_core/simplelmgr.py
    M gui/wxpython/iclass/toolbars.py
    M gui/wxpython/iscatt/controllers.py
    M gui/wxpython/iscatt/plots.py
    M gui/wxpython/mapswipe/toolbars.py
    M gui/wxpython/nviz/mapwindow.py
    M gui/wxpython/nviz/tools.py
    M gui/wxpython/psmap/dialogs.py
    M gui/wxpython/psmap/instructions.py
    M gui/wxpython/timeline/frame.py
    M gui/wxpython/tplot/frame.py
    M imagery/i.albedo/testsuite/test_i_albedo.py
    M imagery/i.cluster/testsuite/test_i_cluster.py
    M lib/init/grass.py
    M pyproject.toml
    M python/grass/benchmark/app.py
    M python/grass/benchmark/results.py
    M python/grass/benchmark/testsuite/test_benchmark_cli.py
    M python/grass/experimental/tests/grass_script_mapset_session_test.py
    M python/grass/gunittest/multirunner.py
    M python/grass/gunittest/reporters.py
    M python/grass/imaging/images2gif.py
    M python/grass/jupyter/baseseriesmap.py
    M python/grass/jupyter/tests/conftest.py
    M python/grass/jupyter/testsuite/interactivemap_test.py
    M python/grass/jupyter/testsuite/map3d_test.py
    M python/grass/jupyter/testsuite/map_test.py
    M python/grass/jupyter/timeseriesmap.py
    M python/grass/pygrass/modules/interface/module.py
    M python/grass/pygrass/vector/geometry.py
    M python/grass/pygrass/vector/table.py
    M python/grass/pygrass/vector/testsuite/test_geometry.py
    M python/grass/pygrass/vector/testsuite/test_table.py
    M python/grass/pygrass/vector/testsuite/test_vector3d.py
    M python/grass/script/utils.py
    M python/grass/temporal/list_stds.py
    M raster/r.category/tests/r_category_test.py
    M raster/r.distance/testsuite/test_distance.py
    M raster/r.regression.multi/testsuite/test_rregression_multi.py
    M raster/r.stats.quantile/testsuite/test_r_stats_quantile.py
    M raster/r.volume/testsuite/test_r_volume.py
    M raster3d/r3.to.rast/testsuite/test_a_b_coeff.py
    M raster3d/r3.to.rast/testsuite/test_integer_rounding.py
    M raster3d/r3.to.rast/testsuite/test_nulls.py
    M raster3d/r3.to.rast/testsuite/test_small_data.py
    M scripts/g.extension/g.extension.py
    M scripts/i.image.mosaic/i.image.mosaic.py
    M scripts/i.oif/i.oif.py
    M scripts/v.db.univar/tests/conftest.py
    M scripts/v.dissolve/tests/conftest.py
    M scripts/v.dissolve/tests/v_dissolve_aggregate_test.py
    M scripts/v.dissolve/tests/v_dissolve_layers_test.py
    M scripts/v.dissolve/v.dissolve.py
    M scripts/v.report/v.report.py
    M temporal/t.connect/testsuite/test_distr_tgis_db_raster.py
    M temporal/t.connect/testsuite/test_distr_tgis_db_raster3d.py
    M temporal/t.connect/testsuite/test_distr_tgis_db_vector.py
    M temporal/t.rast.list/tests/conftest.py
    M temporal/t.rast.univar/testsuite/test_t_rast_univar.py
    M temporal/t.rast3d.univar/testsuite/test_t_rast3d_univar.py
    M temporal/t.vect.observe.strds/t.vect.observe.strds.py
    M vector/v.class/tests/test_v_class.py
    M vector/v.distance/testsuite/test_v_distance.py
    M vector/v.vect.stats/testsuite/test_vect_stats.py
    M vector/v.what/testsuite/test_v_what_output.py

  Log Message:
  -----------
  packaging: Update min Python version to 3.10 (#6477)

* packaging: Update min Python version to 3.10

Increases min supported Python version from 3.9 to 3.10 in CI and REQUIREMENTS.md (where it was 3.8).

Update places in code which refer to old versions or add code for the old versions.

* Update in pyproject.toml

* Use strict zip when lists are literals, in tests, and when they need to match for expected output like columns and their types. Use zip with strict=False when lists come from parsed text, are input parameters, or the context does not clearly show the origin of the lists, especially when GUI, rather than output is constructed. Apply suggested typing updates around imports.

* Use pipe for union of types, not typing.Union

* Remove multiplication of SQL column type list in v.dissolve. The assignment (matching) of column names and methods is already done in the match_columns_and_methods function. The aggregate functions requires same list lenghts, and there is no more to do except supply the types. Since the first set of types was based on the methods and then all other sets were just repeated, the items from column type list in the non-strict zip were the correct one, so there should be no change in behavior (SQL types are also tested in the tests). The code has a good coverage, so this fix included in the overall update (tests is how this was discovered in the first place).



To unsubscribe from these emails, change your notification settings at https://github.com/OSGeo/grass/settings/notifications


More information about the grass-commit mailing list