Conversation
c647045 to
0b540d1
Compare
2155e9d to
341a922
Compare
341a922 to
25696b8
Compare
fe945d0 to
c03d77b
Compare
OpenAPI ChangesShow/hide ## Changes for v0.yaml:Unexpected changes? Ensure your branch is up-to-date with |
c0d9c6a to
774963c
Compare
|
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 = [ |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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 | |||
There was a problem hiding this comment.
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`.
This PR contains the following updates:
~=3.11.0→~=3.14.33.11→3.143.11-slim→3.14-slimRelease Notes
python/cpython (python)
v3.14.3Compare Source
v3.14.2Compare Source
v3.14.1Compare Source
v3.14.0Compare Source
v3.13.12Compare Source
v3.13.11Compare Source
v3.13.10Compare Source
v3.13.9Compare Source
v3.13.8Compare Source
v3.13.7Compare Source
v3.13.6Compare Source
v3.13.5Compare Source
v3.13.4Compare Source
v3.13.3Compare Source
v3.13.2Compare Source
v3.13.1Compare Source
v3.13.0Compare Source
v3.12.13Compare Source
v3.12.12Compare Source
v3.12.11Compare Source
v3.12.10Compare Source
v3.12.9Compare Source
v3.12.8Compare Source
v3.12.7Compare Source
v3.12.6Compare Source
v3.12.5Compare Source
v3.12.4Compare Source
v3.12.3Compare Source
v3.12.2Compare Source
v3.12.1Compare Source
v3.12.0Compare Source
actions/python-versions (python)
v3.14.3: 3.14.3Compare Source
Python 3.14.3
v3.14.2: 3.14.2Compare Source
Python 3.14.2
v3.14.1: 3.14.1Compare Source
Python 3.14.1
v3.14.0: 3.14.0Compare Source
Python 3.14.0
v3.13.12: 3.13.12Compare Source
Python 3.13.12
v3.13.11: 3.13.11Compare Source
Python 3.13.11
v3.13.10: 3.13.10Compare Source
Python 3.13.10
v3.13.9: 3.13.9Compare Source
Python 3.13.9
v3.13.8: 3.13.8Compare Source
Python 3.13.8
v3.13.7: 3.13.7Compare Source
Python 3.13.7
v3.13.6: 3.13.6Compare Source
Python 3.13.6
v3.13.5: 3.13.5Compare Source
Python 3.13.5
v3.13.4: 3.13.4Compare Source
Python 3.13.4
v3.13.3: 3.13.3Compare Source
Python 3.13.3
v3.13.2: 3.13.2Compare Source
Python 3.13.2
v3.13.1: 3.13.1Compare Source
Python 3.13.1
v3.13.0: 3.13.0Compare Source
Python 3.13.0
v3.12.13: 3.12.13Compare Source
Python 3.12.13
v3.12.12: 3.12.12Compare Source
Python 3.12.12
v3.12.11: 3.12.11Compare Source
Python 3.12.11
v3.12.10: 3.12.10Compare Source
Python 3.12.10
v3.12.9: 3.12.9Compare Source
Python 3.12.9
v3.12.8: 3.12.8Compare Source
Python 3.12.8
v3.12.7: 3.12.7Compare Source
Python 3.12.7
v3.12.6: 3.12.6Compare Source
Python 3.12.6
v3.12.5: 3.12.5Compare Source
Python 3.12.5
v3.12.4: 3.12.4Compare Source
Python 3.12.4
v3.12.3: 3.12.3Compare Source
Python 3.12.3
v3.12.2: 3.12.2Compare Source
Python 3.12.2
v3.12.1: 3.12.1Compare Source
Python 3.12.1
v3.12.0: 3.12.0Compare 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.
This PR was generated by Mend Renovate. View the repository job log.