Skip to content

Update supported Python and package versions.#14

Draft
tbreckle wants to merge 1 commit intoeclipse-score:mainfrom
etas-contrib:feature/update-python-versions
Draft

Update supported Python and package versions.#14
tbreckle wants to merge 1 commit intoeclipse-score:mainfrom
etas-contrib:feature/update-python-versions

Conversation

@tbreckle
Copy link

  • [Python] Remove EOL versions

    Remove versions that are end of life (3.8 and 3.9).

  • [Python] Add new stable versions

    Add new stable versions (3.13 and 3.14).

  • [pip] Update dependencies

    Updated dependencies for tools, partly to support new versions , to have new features available, fix pip-audit findings or to be in sync with other S-CORE repos.

@github-actions
Copy link

github-actions bot commented Jan 20, 2026

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
2026/02/03 14:24:57 Downloading https://releases.bazel.build/7.5.0/release/bazel-7.5.0-linux-x86_64...
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
INFO: Invocation ID: 90abbc83-ab5b-4cc9-bc3c-a2e1be656a92
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
WARNING: For repository 'aspect_rules_lint', the root module requires module version aspect_rules_lint@1.4.4, but got aspect_rules_lint@1.5.3 in the resolved dependency graph.
Loading: 
Loading: 2 packages loaded
Loading: 2 packages loaded
    currently loading: 
Loading: 2 packages loaded
    currently loading: 
Loading: 2 packages loaded
    currently loading: 
Analyzing: target //:license-check (3 packages loaded, 0 targets configured)
Analyzing: target //:license-check (3 packages loaded, 0 targets configured)

Analyzing: target //:license-check (23 packages loaded, 10 targets configured)

Analyzing: target //:license-check (68 packages loaded, 10 targets configured)

Analyzing: target //:license-check (112 packages loaded, 1119 targets configured)

Analyzing: target //:license-check (125 packages loaded, 3615 targets configured)

Analyzing: target //:license-check (133 packages loaded, 3684 targets configured)

Analyzing: target //:license-check (133 packages loaded, 3684 targets configured)

Analyzing: target //:license-check (135 packages loaded, 5537 targets configured)

INFO: Analyzed target //:license-check (137 packages loaded, 5784 targets configured).
[9 / 13] [Prepa] JavaToolchainCompileClasses external/rules_java~/toolchains/platformclasspath_classes
[10 / 13] [Prepa] Generating Dash formatted dependency file ...
[11 / 13] checking cached actions
[11 / 13] [Prepa] JavaToolchainCompileBootClasspath external/rules_java~/toolchains/platformclasspath.jar
[12 / 13] [Prepa] Building license.check.license_check.jar ()
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 26.460s, Critical Path: 2.74s
INFO: 13 processes: 9 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 13 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt -review -project automotive.score -repo https://github.com/eclipse-score/bazel-tools-python -token
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@tbreckle tbreckle force-pushed the feature/update-python-versions branch from 40e06c1 to 4d68282 Compare January 27, 2026 11:54
@tbreckle tbreckle marked this pull request as draft February 2, 2026 10:09
* [Python] Add mechanism to support EOL (legacy) Python versions

  Versions that are end of life (currently 3.8 and 3.9) are
  marked as legacy versions and have a separated requirements
  file to split dependencies and support both, legacy and
  stable versions.

* [Python] Add new stable versions

  Add new stable versions (3.13 and 3.14).

* [pip] Update dependencies

  Updated dependencies for tools, partly to support new versions
  , to have new features available, fix pip-audit findings or to
  be in sync with other S-CORE repos.
@tbreckle tbreckle force-pushed the feature/update-python-versions branch from 4d68282 to 28973f6 Compare February 3, 2026 14:24
- bazel_skylib >= 1.7.1
- rules_python >= 1.4.1
- bazel_skylib >= 1.9.0
- rules_python >= 1.7.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- rules_python >= 1.7.0
- rules_python >= 1.6.3

according to MODULES.bazel

for version in PYTHON_VERSIONS
]

[
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to issue the warning only if the selected python version is a legacy one?


This will try to read the requirements.in file as well as
requirements.in_stable and requirements.in_legacy. In case one of those files
do not exist it will be simply skipped.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
do not exist it will be simply skipped.
does not exist it will be simply skipped.

if not requirements:
fail("No direct dependencies found in any requirements file. The created pip hub will be empty.")

return list(requirements.keys())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we anyhow return a list, would be possible to skip the dictionary step and just add the lists returned by _read_and_parse_requirements?

[
python_tool_common.Finding(
path=pathlib.Path("file.py"),
path=pathlib.Path(" file.py"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wa sthis change made on purpose?

run_command "test/run_all_tests.sh" "tests (in test workspace)"
fi

if [ "${workspace}" == "all" -o "${workspace}" == "test_single_version" ];then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I would not have another test workspace, since it doesn't cover anything in addition to the already existing one. I guess test_single_version would be a good template for someone that just wants to use bazel-tools-python, but for that use-case I would rather update the documentation, if it is not good enough.

Anyhow, that's just my opinion and I asked a colleague of mine, what we want to do.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My colleague agree, we should stick to one test workspace.

build --config=python_3_8
build:python_3_13 --python=3.13
build:python_3_14 --python=3.14
build --config=python_3_12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it required to switch to 3.12 or is that a leftover from when you removed 3.8 entirely? If possible I'd keep 3.8 until we can really remove it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here my colleague also agreed. We have to test against 3.8 by default, to ensure no-one introduces anything that doesn't work with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants