Skip to content

Conversation

@Gerrrr
Copy link
Contributor

@Gerrrr Gerrrr commented Dec 6, 2025

This PR drops support for Python 3.8, 3.9 and adds support for 3.11, 3.12, 3.13, 3.14. It also updates all dependencies to latest versions supporting all officially supported Python versions.

@Gerrrr Gerrrr changed the title WIP Change supported Python versions to 3.10-3.14 Dec 6, 2025
@Gerrrr Gerrrr marked this pull request as ready for review December 6, 2025 22:30
@Gerrrr Gerrrr marked this pull request as draft December 6, 2025 22:32
@Gerrrr Gerrrr marked this pull request as ready for review December 7, 2025 00:44
[project]
name = "apache-otava"
version = "0.7.0"
version = "1.0.0"
Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, probably about time.

"expandvars>=0.12.0",

# For Python 3.10: last series that supports it
"scipy>=1.15,<1.16; python_version < '3.11'",
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need to support all of these python versions? I would be more aggressive in jumping to the newest and dropping older versions.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think it is a solid default to support all officially supported Python versions.

Reasons:

  1. It seems reasonable to me for an infrastructure library to be biased towards being conservative. Stability or lack of maintenance may be as important of a feature as new shiny features for this kind of software. For example, all Otava installations I care about at the moment have been running with 0 maintenance for years, which I am proud of.
  2. It does not cost us that much extra effort - Scipy has been the only library that caused an issue and we only use 1 simple method out of it -

    otava/otava/analysis.py

    Lines 123 to 126 in 3154520

    if len(left) + len(right) > 2:
    (_, p) = ttest_ind_from_stats(
    mean_l, std_l, len(left), mean_r, std_r, len(right), alternative="two-sided"
    )
    . I would not even mind extracting that method and dropping that dependency.

WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok lets try it

As for multithreading and such, we could implement it in a way so that the default is 1 thread and it can only have some other value if python version is 3.14.

@Gerrrr Gerrrr merged commit 2d8bd02 into master Dec 9, 2025
6 checks passed
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