Skip to content

Conversation

@jignaciopm
Copy link
Contributor

@jignaciopm jignaciopm commented Oct 8, 2025

🧩 Summary

This PR updates the project dependencies by running make upgrade, aligning them with the latest compatible versions under Python 3.12.
It also updates the Django version constraint to support Django 5.2 while maintaining compatibility with Python ≥3.11 (lower versions are no longer supported).

🛠️ Changes

  • Updated dependency constraints to:
    Django<6.0
    Python>=3.11,<3.12
  • Executed make upgrade using Python 3.12 to regenerate dependency lock files (requirements/*.txt).
  • Verified compatibility across all plugins within the eox-plugins project.

✅ Rationale

  • This upgrade ensures that the project:
  • Remains compatible with modern Python runtimes (3.11 and 3.12).
  • Adopts Django 5.2 improvements and security updates.
  • Aligns dependency versions across all eox-related plugins.
  • Deprecates support for Python versions older than 3.11.

🔍 Verification

  • Ran make test-python under Python 3.12 — all tests passing.
  • Confirmed plugin compatibility with Django 5.2.
  • Validated that no legacy dependencies required Python <3.11.

@jignaciopm jignaciopm requested a review from a team as a code owner October 8, 2025 21:33
@magajh
Copy link
Contributor

magajh commented Oct 9, 2025

@jignaciopm we need to review and merge or close all dependabot PRs (like this one #249) for all plugins and xblock. Also let's make sure that all requirements in the workflows are updated to the latest compatible major version

@magajh magajh self-requested a review October 9, 2025 18:14
@jignaciopm jignaciopm force-pushed the jipm/support-py312 branch 2 times, most recently from 514fd77 to 3b2f600 Compare October 9, 2025 20:14
@jignaciopm
Copy link
Contributor Author

@jignaciopm we need to review and merge or close all dependabot PRs (like this one #249) for all plugins and xblock. Also let's make sure that all requirements in the workflows are updated to the latest compatible major version

I already checked, and all the workflows are updated to the last major version.

@jignaciopm jignaciopm force-pushed the jipm/support-py312 branch 2 times, most recently from a08b075 to 2cc7a23 Compare October 9, 2025 22:22
@magajh
Copy link
Contributor

magajh commented Oct 10, 2025

@jignaciopm we need to review and merge or close all dependabot PRs (like this one #249) for all plugins and xblock. Also let's make sure that all requirements in the workflows are updated to the latest compatible major version

I already checked, and all the workflows are updated to the last major version.

@jignaciopm awesome, did we check this as well for the rest of the plugins/blocks? Let's please make sure we let the comment in the rest of the PRs, thanks

Copy link
Contributor

@magajh magajh left a comment

Choose a reason for hiding this comment

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

Calling out a few remaining items for this PR (and things to keep in mind for the other PRs):


We’re skipping manual test cases execution and remote plugin installation for now because we don’t have ulmo.master yet: https://internal.docs.edunext.co/en/latest/internal/BusinessDivisions/Hosting/hd-teams/heimdell/Descontrol/Internal_processes/support_guide_for_eox_plugins_in_new_openedx_releases.html#ejecucion-de-casos-de-prueba


@jignaciopm please let me know once you’ve fixed this, or confirm we’re applying the same change across the other PRs so I can review those as well. thanks

@jignaciopm jignaciopm changed the title chore: add support for python 3.12 chore: add support for Python 3.12 and Django 5.2 Oct 13, 2025
@jignaciopm jignaciopm force-pushed the jipm/support-py312 branch 2 times, most recently from 8a8f3d2 to e287563 Compare October 13, 2025 13:00
Comment on lines +20 to +24
# NOTE: Pylint 4.x introduces changes in how the "ignore" and "ignore-patterns" options
# are parsed from setup.cfg and other configuration files. This causes Django migration
# modules (e.g., eox_tenant/migrations) to be linted even when explicitly ignored.
# Until we find a stable fix or plugin-based workaround, we keep Pylint pinned below 4.
pylint<4
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 need to add this constraint because yesterday it was release pylint==4.0.0, and we have an issue with that:

$ make quality 
find . -name '__pycache__' -exec rm -rf {} +
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
pycodestyle ./eox_tenant
pylint ./eox_tenant --rcfile=./setup.cfg
************* Module eox_tenant.migrations.0005_auto_20191226_1225
eox_tenant/migrations/0005_auto_20191226_1225.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0005_auto_20191226_1225.py:1:0: C0103: Module name "0005_auto_20191226_1225" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0005_auto_20191226_1225.py:9:0: C0115: Missing class docstring (missing-class-docstring)
************* Module eox_tenant.migrations.0006_tenantorganization
eox_tenant/migrations/0006_tenantorganization.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0006_tenantorganization.py:1:0: C0103: Module name "0006_tenantorganization" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0006_tenantorganization.py:6:0: C0115: Missing class docstring (missing-class-docstring)
************* Module eox_tenant.migrations.0001_initial
eox_tenant/migrations/0001_initial.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0001_initial.py:1:0: C0103: Module name "0001_initial" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0001_initial.py:9:0: C0115: Missing class docstring (missing-class-docstring)
************* Module eox_tenant.migrations.0003_auto_20190620_1704
eox_tenant/migrations/0003_auto_20190620_1704.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0003_auto_20190620_1704.py:1:0: C0103: Module name "0003_auto_20190620_1704" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0003_auto_20190620_1704.py:10:0: C0115: Missing class docstring (missing-class-docstring)
************* Module eox_tenant.migrations.0008_synchronize_tenants
eox_tenant/migrations/0008_synchronize_tenants.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0008_synchronize_tenants.py:1:0: C0103: Module name "0008_synchronize_tenants" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0008_synchronize_tenants.py:9:0: C0116: Missing function or method docstring (missing-function-docstring)
eox_tenant/migrations/0008_synchronize_tenants.py:9:24: W0613: Unused argument 'apps' (unused-argument)
eox_tenant/migrations/0008_synchronize_tenants.py:9:30: W0613: Unused argument 'schema_editor' (unused-argument)
eox_tenant/migrations/0008_synchronize_tenants.py:13:0: C0115: Missing class docstring (missing-class-docstring)
************* Module eox_tenant.migrations.0007_auto_20200922_1421
eox_tenant/migrations/0007_auto_20200922_1421.py:30:0: C0301: Line too long (207/120) (line-too-long)
eox_tenant/migrations/0007_auto_20200922_1421.py:35:0: C0301: Line too long (207/120) (line-too-long)
eox_tenant/migrations/0007_auto_20200922_1421.py:40:0: C0301: Line too long (207/120) (line-too-long)
eox_tenant/migrations/0007_auto_20200922_1421.py:45:0: C0301: Line too long (207/120) (line-too-long)
eox_tenant/migrations/0007_auto_20200922_1421.py:50:0: C0301: Line too long (207/120) (line-too-long)
eox_tenant/migrations/0007_auto_20200922_1421.py:1:0: C0114: Missing module docstring (missing-module-docstring)
eox_tenant/migrations/0007_auto_20200922_1421.py:1:0: C0103: Module name "0007_auto_20200922_1421" doesn't conform to snake_case naming style (invalid-name)
eox_tenant/migrations/0007_auto_20200922_1421.py:10:0: C0115: Missing class docstring (missing-class-docstring)

------------------------------------------------------------------
Your code has been rated at 9.90/10 (previous run: 9.90/10, +0.00)

make: *** [Makefile:50: quality] Error 20

I had a conversation with ChatGPT, but I didn't manage to resolve it.

Copy link
Contributor

Choose a reason for hiding this comment

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

@jignaciopm understood. I’d suggest we first try adjusting the config so pylint ignores this file in the new version. If due to a bug in the new version it still won’t ignore it, let’s not spend more time on it and keep this constraint as is

@jignaciopm jignaciopm requested a review from magajh October 13, 2025 13:05
@jignaciopm jignaciopm force-pushed the jipm/support-py312 branch 2 times, most recently from 83008f1 to d814990 Compare October 13, 2025 13:14
Copy link
Contributor

@magajh magajh left a comment

Choose a reason for hiding this comment

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

Thank you @jignaciopm. Just a couple of minor comments left.
Please remember to leave the comment here once we have tested the installation in tutor main

@jignaciopm jignaciopm force-pushed the jipm/support-py312 branch 2 times, most recently from 13f46d5 to a6633e6 Compare October 13, 2025 23:50
@jignaciopm jignaciopm requested a review from magajh October 13, 2025 23:54
Copy link
Contributor

@magajh magajh left a comment

Choose a reason for hiding this comment

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

LGTM!

@Asespinel could you please confirm that this plugin was installed in tutor main without a problem?

@Asespinel
Copy link
Contributor

Yes everything was installed succesfully in my tutor main env:

Screenshot from 2025-10-13 21-54-32 Screenshot from 2025-10-13 21-57-43

i'll apporve this PR

@jignaciopm jignaciopm merged commit c5a4243 into master Oct 14, 2025
7 of 11 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.

4 participants