Skip to content

Update Python#3004

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/python-3.x
Open

Update Python#3004
renovate[bot] wants to merge 1 commit intomainfrom
renovate/python-3.x

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 9, 2025

This PR contains the following updates:

Package Type Update Change
python (source) requires-python minor ~=3.11.0~=3.14.3
python uses-with minor 3.113.14
python stage minor 3.11-slim3.14-slim

Release Notes

python/cpython (python)

v3.14.3

Compare Source

v3.14.2

Compare Source

v3.14.1

Compare Source

v3.14.0

Compare Source

v3.13.12

Compare Source

v3.13.11

Compare Source

v3.13.10

Compare Source

v3.13.9

Compare Source

v3.13.8

Compare Source

v3.13.7

Compare Source

v3.13.6

Compare Source

v3.13.5

Compare Source

v3.13.4

Compare Source

v3.13.3

Compare Source

v3.13.2

Compare Source

v3.13.1

Compare Source

v3.13.0

Compare Source

v3.12.13

Compare Source

v3.12.12

Compare Source

v3.12.11

Compare Source

v3.12.10

Compare Source

v3.12.9

Compare Source

v3.12.8

Compare Source

v3.12.7

Compare Source

v3.12.6

Compare Source

v3.12.5

Compare Source

v3.12.4

Compare Source

v3.12.3

Compare Source

v3.12.2

Compare Source

v3.12.1

Compare Source

v3.12.0

Compare Source

actions/python-versions (python)

v3.14.3: 3.14.3

Compare Source

Python 3.14.3

v3.14.2: 3.14.2

Compare Source

Python 3.14.2

v3.14.1: 3.14.1

Compare Source

Python 3.14.1

v3.14.0: 3.14.0

Compare Source

Python 3.14.0

v3.13.12: 3.13.12

Compare Source

Python 3.13.12

v3.13.11: 3.13.11

Compare Source

Python 3.13.11

v3.13.10: 3.13.10

Compare Source

Python 3.13.10

v3.13.9: 3.13.9

Compare Source

Python 3.13.9

v3.13.8: 3.13.8

Compare Source

Python 3.13.8

v3.13.7: 3.13.7

Compare Source

Python 3.13.7

v3.13.6: 3.13.6

Compare Source

Python 3.13.6

v3.13.5: 3.13.5

Compare Source

Python 3.13.5

v3.13.4: 3.13.4

Compare Source

Python 3.13.4

v3.13.3: 3.13.3

Compare Source

Python 3.13.3

v3.13.2: 3.13.2

Compare Source

Python 3.13.2

v3.13.1: 3.13.1

Compare Source

Python 3.13.1

v3.13.0: 3.13.0

Compare Source

Python 3.13.0

v3.12.13: 3.12.13

Compare Source

Python 3.12.13

v3.12.12: 3.12.12

Compare Source

Python 3.12.12

v3.12.11: 3.12.11

Compare Source

Python 3.12.11

v3.12.10: 3.12.10

Compare Source

Python 3.12.10

v3.12.9: 3.12.9

Compare Source

Python 3.12.9

v3.12.8: 3.12.8

Compare Source

Python 3.12.8

v3.12.7: 3.12.7

Compare Source

Python 3.12.7

v3.12.6: 3.12.6

Compare Source

Python 3.12.6

v3.12.5: 3.12.5

Compare Source

Python 3.12.5

v3.12.4: 3.12.4

Compare Source

Python 3.12.4

v3.12.3: 3.12.3

Compare Source

Python 3.12.3

v3.12.2: 3.12.2

Compare Source

Python 3.12.2

v3.12.1: 3.12.1

Compare Source

Python 3.12.1

v3.12.0: 3.12.0

Compare Source

Python 3.12.0


Configuration

📅 Schedule: Branch creation - "every weekend" in timezone US/Eastern, Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/python-3.x branch 12 times, most recently from c647045 to 0b540d1 Compare October 16, 2025 20:46
@renovate renovate bot force-pushed the renovate/python-3.x branch 16 times, most recently from 2155e9d to 341a922 Compare October 23, 2025 18:54
@renovate renovate bot force-pushed the renovate/python-3.x branch from 341a922 to 25696b8 Compare October 23, 2025 19:53
@renovate renovate bot force-pushed the renovate/python-3.x branch 10 times, most recently from fe945d0 to c03d77b Compare November 5, 2025 20:11
@github-actions
Copy link

github-actions bot commented Nov 5, 2025

OpenAPI Changes

Show/hide ## Changes for v0.yaml:
## Changes for v0.yaml:


## Changes for v1.yaml:


## Changes for v2.yaml:


Unexpected changes? Ensure your branch is up-to-date with main (consider rebasing).

@renovate renovate bot force-pushed the renovate/python-3.x branch 9 times, most recently from c0d9c6a to 774963c Compare November 12, 2025 16:51
@jkachel
Copy link
Contributor

jkachel commented Jan 14, 2026

Blocked - work is ongoing in this separate issue: https://github.com/mitodl/hq/issues/8954

requires-python = "~=3.14.3"
readme = "README.md"
license = { text = "BSD-3" }
dependencies = [
Copy link

Choose a reason for hiding this comment

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

Bug: The pyproject.toml requires Python ~=3.14.3 but pins Django to 5.1.15, which is not compatible with Python 3.14, causing an application startup failure.
Severity: CRITICAL

Suggested Fix

To resolve the incompatibility, upgrade Django to a version that supports Python 3.14, such as 5.2.8 or later. Alternatively, if Python 3.14 is not a strict requirement, revert the requires-python setting to be compatible with Django 5.1.15. Ensure the CI workflow is updated to test against the target Python version.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: pyproject.toml#L9

Potential issue: The project configuration in `pyproject.toml` has been updated to
require Python `~=3.14.3`, but it continues to pin the Django dependency to version
`5.1.15`. According to Django's documentation, support for Python 3.14 was introduced in
Django 5.2. Attempting to run the application with Python 3.14 will result in an
immediate crash on startup, as Django 5.1.15 is incompatible and will fail to import.
This issue is not caught by CI because the workflow still tests against Python 3.11.

description = "MITx Online"
authors = [{ name = "MIT ODL" }]
requires-python = "~=3.11.0"
requires-python = "~=3.14.3"
Copy link

Choose a reason for hiding this comment

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

Bug: The code imports distutils.util.strtobool, which was removed in Python 3.12. This will cause a ModuleNotFoundError and crash the application when running on the target Python 3.14.
Severity: CRITICAL

Suggested Fix

Update the CI workflow in .github/workflows/ci.yml to use the same Python version as production (3.14). Replace the usage of distutils.util.strtobool with a compatible alternative, as it is no longer available in Python 3.12+.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: pyproject.toml#L6

Potential issue: The project is being updated to require Python 3.14, but the codebase
includes an import of `distutils.util.strtobool` in
`./ecommerce/views/legacy/__init__.py`. The `distutils` module was removed in Python
3.12 and is not available in Python 3.14. This incompatibility will cause a
`ModuleNotFoundError` when the application starts in the production environment, which
uses Python 3.14. The issue is not caught by CI because the workflow is configured to
test against Python 3.11, where `distutils` is still available, creating a critical gap
between testing and production environments.

description = "MITx Online"
authors = [{ name = "MIT ODL" }]
requires-python = "~=3.11.0"
requires-python = "~=3.14.3"
Copy link

Choose a reason for hiding this comment

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

Bug: The import of strtobool from distutils.util is incompatible with Python 3.14, as distutils was removed in Python 3.12. This will cause an ImportError.
Severity: CRITICAL

Suggested Fix

Replace the deprecated distutils.util.strtobool import. A common replacement is to use strtobool from setuptools.util if setuptools is already a dependency. Alternatively, implement a simple equivalent function to handle boolean string conversion to avoid adding a new dependency.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: pyproject.toml#L6

Potential issue: The file `ecommerce/views/legacy/__init__.py` contains an import `from
distutils.util import strtobool`. The `distutils` module was removed in Python 3.12.
Since this pull request upgrades the required Python version to `~=3.14.3`, this import
statement will cause an `ImportError` when the application attempts to load this module.
This will likely prevent the application from starting or cause a crash when this part
of the code is accessed. Although the import is marked with `# noqa: F401`, the import
itself will fail in the new Python environment.

description = "MITx Online"
authors = [{ name = "MIT ODL" }]
requires-python = "~=3.11.0"
requires-python = "~=3.14.3"
Copy link

Choose a reason for hiding this comment

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

Bug: The pyproject.toml requires Python ~=3.14.3, but the main CI workflow in .github/workflows/ci.yml still installs Python 3.11, which will cause the build to fail.
Severity: CRITICAL

Suggested Fix

Update the Python installation step in the main CI workflow file, .github/workflows/ci.yml, to use a version compatible with the ~=3.14.3 constraint, such as 3.14. Specifically, change the line run: uv python install 3.11 to run: uv python install 3.14.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: pyproject.toml#L6

Potential issue: The `pyproject.toml` file was updated to require Python version
`~=3.14.3`, which translates to `>=3.14.3, <3.15`. However, the main CI workflow defined
in `.github/workflows/ci.yml` was not updated and continues to install Python 3.11. When
the CI job runs the `uv sync` command, it will fail immediately because the active
Python version (3.11) is incompatible with the project's dependency lock file, which was
generated with the stricter Python 3.14 requirement. This will block all tests from
running and break the build for all subsequent commits.

@@ -1,4 +1,4 @@
FROM python:3.11-slim AS base
FROM python:3.14-slim AS base
Copy link

Choose a reason for hiding this comment

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

Bug: The import of strtobool from distutils.util will cause a ModuleNotFoundError on startup because the module is removed in Python 3.12+ and the project is upgrading to 3.14.
Severity: CRITICAL

Suggested Fix

Replace the usage of distutils.util.strtobool with a compatible alternative, as it was removed in Python 3.12. Additionally, update the CI workflow in .github/workflows/ci.yml to use the same Python version (3.14) as the production environment to ensure CI can catch version-specific issues.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: Dockerfile#L1

Potential issue: The project is being upgraded to Python 3.14. The code imports
`strtobool` from `distutils.util` in `ecommerce/views/legacy/__init__.py`. This module
was removed in Python 3.12 and will cause a `ModuleNotFoundError` when the application
starts. The CI workflow is not updated to use Python 3.14 and will continue to run tests
against Python 3.11, where the module still exists. As a result, CI tests will pass, but
the application will fail to start in the production environment, which uses the Python
3.14 Docker image specified in the `Dockerfile`.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant