Skip to content

Py3.14 support#14049

Closed
nucleogenesis wants to merge 3 commits intolearningequality:release-v0.19.xfrom
nucleogenesis:py3.14-support
Closed

Py3.14 support#14049
nucleogenesis wants to merge 3 commits intolearningequality:release-v0.19.xfrom
nucleogenesis:py3.14-support

Conversation

@nucleogenesis
Copy link
Copy Markdown
Member

Summary

Changes performed by Claude, reviewed & guided by me.

  • Bumps Kolibri's support matrix et al to support Python 3.14
  • Eagerly updates deprecated datetime uses (this is unnecessary now)

⚠️ Remaining issues to hash out

Claude noted that Python 3.14 requires new versions of two dependencies django-filter and pytest where the major version we use currently is incompatible with 3.14.

Claude's solution was to make multiple entries for these where it indicated which Python version should install which library version -- however, this would result in our needing to maintain code in a way that jives with all Python versions.

I've not included a couple of commits that performed some monkey patches while making the two-line dependencies.

TODO

  • Create a PR

References

#13823

Reviewer guidance

Draft for now - will return to this in Planned Patch 2!

nucleogenesis and others added 2 commits January 8, 2026 11:34
- Update python_requires to allow Python 3.14 (<3.15)
- Add Python 3.14 classifier to setup.py
- Add py3.14 to tox envlist and basepython mapping
- Add Python 3.14 to GitHub Actions test matrix

Refs: learningequality#13823

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These methods are deprecated in Python 3.12+ and will be removed in
a future version. Replace with timezone-aware alternatives:

- datetime.utcnow() -> datetime.now(tz=timezone.utc)
- datetime.utcfromtimestamp() -> datetime.fromtimestamp(ts, tz=timezone.utc)

For database operations that require naive datetimes, use
.replace(tzinfo=None) to strip the timezone after getting the
current UTC time.

Files modified:
- kolibri/utils/version.py
- kolibri/core/tasks/storage.py
- kolibri/core/tasks/test/taskrunner/test_scheduler.py
- kolibri/core/auth/api.py
- kolibri/plugins/facility/views.py

Refs: learningequality#13823

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions github-actions Bot added DEV: dev-ops Continuous integration & deployment DEV: backend Python, databases, networking, filesystem... APP: Facility Re: Facility App (user/class management, facility settings, csv import/export, etc.) SIZE: small labels Jan 8, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jan 8, 2026

@nucleogenesis
Copy link
Copy Markdown
Member Author

Moved to Patch 3 - need to work out how to monkey-patch things rather than splitting up the req deps based on Python version.

@nucleogenesis
Copy link
Copy Markdown
Member Author

Superseded by #14324

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

Labels

APP: Facility Re: Facility App (user/class management, facility settings, csv import/export, etc.) DEV: backend Python, databases, networking, filesystem... DEV: dev-ops Continuous integration & deployment SIZE: small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant