Skip to content

Commit 8328a10

Browse files
author
Feanil Patel
authored
Merge pull request #404 from openedx/cag/python-support
build: python 3.11 and 3.12 support
2 parents a09e875 + eb801db commit 8328a10

File tree

14 files changed

+45
-39
lines changed

14 files changed

+45
-39
lines changed

.github/workflows/ci.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,20 @@ jobs:
1414
runs-on: ${{ matrix.os }}
1515
strategy:
1616
matrix:
17-
os: [ubuntu-20.04]
18-
python-version: ['3.8']
19-
toxenv: [quality, docs, pii_check, django32, django42]
17+
os: [ 'ubuntu-20.04' ]
18+
python-version: ['3.8', '3.11', '3.12']
19+
toxenv: [ 'django42' ]
20+
# Only run these other workflows on the latest python version we support.
21+
include:
22+
- python-version: '3.12'
23+
toxenv: 'quality'
24+
os: 'ubuntu-20.04'
25+
- python-version: '3.12'
26+
toxenv: 'docs'
27+
os: 'ubuntu-20.04'
28+
- python-version: '3.12'
29+
toxenv: 'pii_check'
30+
os: 'ubuntu-20.04'
2031

2132
steps:
2233
- uses: actions/checkout@v4

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ upgrade: ## update the requirements/*.txt files with the latest packages satisfy
4444
$(PIP_COMPILE) -o requirements/base.txt requirements/base.in
4545
$(PIP_COMPILE) -o requirements/test.txt requirements/test.in
4646
$(PIP_COMPILE) -o requirements/doc.txt requirements/doc.in
47-
$(PIP_COMPILE) -o requirements/quality.txt requirements/quality.in
47+
$(PIP_COMPILE) --allow-unsafe -o requirements/quality.txt requirements/quality.in
4848
$(PIP_COMPILE) -o requirements/ci.txt requirements/ci.in
4949
$(PIP_COMPILE) -o requirements/dev.txt requirements/dev.in
5050
# Let tox control the Django version for tests

event_routing_backends/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
Various backends for receiving edX LMS events..
33
"""
44

5-
__version__ = '9.0.1'
5+
__version__ = '9.1.0'

event_routing_backends/processors/xapi/tests/test_xapi.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,22 @@ def test_send_method_with_successfull_flow(self, mocked_logger, mocked_get_trans
6161

6262
self.processor([self.sample_event])
6363

64-
self.assertIn(call(transformed_event.to_json()), mocked_logger.mock_calls)
64+
self.assertIn(call.info(transformed_event.to_json()), mocked_logger.mock_calls)
6565

6666
@patch(
6767
'event_routing_backends.processors.xapi.transformer_processor.XApiTransformersRegistry.get_transformer'
6868
)
6969
@patch('event_routing_backends.processors.xapi.transformer_processor.xapi_logger')
7070
def test_send_method_with_event_list_successfull_flow(self, mocked_logger, mocked_get_transformer):
71+
7172
transformed_event = Statement()
7273
transformed_event.object = Activity(id=str(uuid.uuid4()))
7374
mocked_transformer = MagicMock()
7475
mocked_transformer.transform.return_value = [transformed_event]
7576
mocked_get_transformer.return_value = mocked_transformer
7677

7778
self.processor([self.sample_event])
78-
79-
self.assertIn(call(transformed_event.to_json()), mocked_logger.mock_calls)
79+
self.assertIn(call.info(transformed_event.to_json()), mocked_logger.mock_calls)
8080

8181
@patch(
8282
'event_routing_backends.processors.xapi.transformer_processor.XApiTransformersRegistry.get_transformer'

requirements/base.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ apache-libcloud # For bulk event log loading
1717
fasteners # Locking tools, required by apache-libcloud, but somehow not installed with it
1818
openedx-filters
1919
django-redis
20+
setuptools # Python 3.12 requires setuptools package

requirements/base.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ async-timeout==4.0.3
1616
# via redis
1717
attrs==23.2.0
1818
# via openedx-events
19-
backports-zoneinfo[tzdata]==0.2.1
19+
backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
2020
# via
21+
# -c requirements/constraints.txt
2122
# celery
2223
# django
2324
# djangorestframework
@@ -72,7 +73,7 @@ django==4.2.11
7273
# jsonfield
7374
# openedx-events
7475
# openedx-filters
75-
django-config-models==2.6.0
76+
django-config-models==2.7.0
7677
# via -r requirements/base.in
7778
django-crum==0.7.9
7879
# via
@@ -199,8 +200,6 @@ vine==5.1.0
199200
# kombu
200201
wcwidth==0.2.13
201202
# via prompt-toolkit
202-
wheel==0.43.0
203-
# via django-config-models
204203

205204
# The following packages are considered to be unsafe in a requirements file:
206205
# setuptools

requirements/constraints.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,5 @@ sphinx==4.2.0
2424
docutils<0.18
2525
doc8<1.0.0
2626
event-tracking>=2.3.2
27+
# it is not availablein python3.9
28+
backports.zoneinfo;python_version<"3.9"

requirements/dev.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ attrs==23.2.0
3131
# via
3232
# -r requirements/quality.txt
3333
# openedx-events
34-
backports-zoneinfo[tzdata]==0.2.1
34+
backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
3535
# via
36+
# -c requirements/constraints.txt
3637
# -r requirements/quality.txt
3738
# celery
3839
# django
@@ -151,7 +152,7 @@ django==4.2.11
151152
# jsonfield
152153
# openedx-events
153154
# openedx-filters
154-
django-config-models==2.6.0
155+
django-config-models==2.7.0
155156
# via -r requirements/quality.txt
156157
django-crum==0.7.9
157158
# via
@@ -494,7 +495,6 @@ wheel==0.43.0
494495
# via
495496
# -r requirements/pip-tools.txt
496497
# -r requirements/quality.txt
497-
# django-config-models
498498
# pip-tools
499499
zipp==3.18.1
500500
# via

requirements/doc.txt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ babel==2.14.0
3434
# via
3535
# pydata-sphinx-theme
3636
# sphinx
37-
backports-zoneinfo[tzdata]==0.2.1
37+
backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
3838
# via
39+
# -c requirements/constraints.txt
3940
# -r requirements/test.txt
4041
# celery
4142
# django
@@ -121,7 +122,7 @@ django==4.2.11
121122
# jsonfield
122123
# openedx-events
123124
# openedx-filters
124-
django-config-models==2.6.0
125+
django-config-models==2.7.0
125126
# via -r requirements/test.txt
126127
django-crum==0.7.9
127128
# via
@@ -451,10 +452,6 @@ wcwidth==0.2.13
451452
# via
452453
# -r requirements/test.txt
453454
# prompt-toolkit
454-
wheel==0.43.0
455-
# via
456-
# -r requirements/test.txt
457-
# django-config-models
458455
zipp==3.18.1
459456
# via
460457
# importlib-metadata

requirements/quality.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ edx-lint # edX pylint rules and plugins
77
isort # to standardize order of imports
88
pycodestyle # PEP 8 compliance validation
99
pydocstyle # PEP 257 compliance validation
10+
wheel
11+
setuptools

requirements/quality.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ attrs==23.2.0
3030
# via
3131
# -r requirements/test.txt
3232
# openedx-events
33-
backports-zoneinfo[tzdata]==0.2.1
33+
backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
3434
# via
35+
# -c requirements/constraints.txt
3536
# -r requirements/test.txt
3637
# celery
3738
# django
@@ -119,7 +120,7 @@ django==4.2.11
119120
# jsonfield
120121
# openedx-events
121122
# openedx-filters
122-
django-config-models==2.6.0
123+
django-config-models==2.7.0
123124
# via -r requirements/test.txt
124125
django-crum==0.7.9
125126
# via
@@ -376,9 +377,8 @@ wcwidth==0.2.13
376377
# -r requirements/test.txt
377378
# prompt-toolkit
378379
wheel==0.43.0
379-
# via
380-
# -r requirements/test.txt
381-
# django-config-models
380+
# via -r requirements/quality.in
382381

383382
# The following packages are considered to be unsafe in a requirements file:
384-
# setuptools
383+
setuptools==69.2.0
384+
# via -r requirements/quality.in

requirements/test.txt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ attrs==23.2.0
2626
# via
2727
# -r requirements/base.txt
2828
# openedx-events
29-
backports-zoneinfo[tzdata]==0.2.1
29+
backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
3030
# via
31+
# -c requirements/constraints.txt
3132
# -r requirements/base.txt
3233
# celery
3334
# django
@@ -106,7 +107,7 @@ ddt==1.7.2
106107
# jsonfield
107108
# openedx-events
108109
# openedx-filters
109-
django-config-models==2.6.0
110+
django-config-models==2.7.0
110111
# via -r requirements/base.txt
111112
django-crum==0.7.9
112113
# via
@@ -314,10 +315,3 @@ wcwidth==0.2.13
314315
# via
315316
# -r requirements/base.txt
316317
# prompt-toolkit
317-
wheel==0.43.0
318-
# via
319-
# -r requirements/base.txt
320-
# django-config-models
321-
322-
# The following packages are considered to be unsafe in a requirements file:
323-
# setuptools

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,14 @@ def is_requirement(line):
155155
classifiers=[
156156
'Development Status :: 3 - Alpha',
157157
'Framework :: Django',
158-
'Framework :: Django :: 3.2',
159158
'Framework :: Django :: 4.2',
160159
'Intended Audience :: Developers',
161160
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
162161
'Natural Language :: English',
163162
'Programming Language :: Python :: 3',
164163
'Programming Language :: Python :: 3.8',
164+
'Programming Language :: Python :: 3.11',
165+
'Programming Language :: Python :: 3.12',
165166
],
166167
entry_points={
167168
"lms.djangoapp": [

tox.ini

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tox]
2-
envlist = py38-django{32,42}, quality, docs, pii_check
2+
envlist = py{38,311,312}-django{42}, quality, docs, pii_check
33

44
[doc8]
55
ignore = D001
@@ -35,7 +35,6 @@ norecursedirs = .* docs requirements site-packages
3535

3636
[testenv]
3737
deps =
38-
django32: Django>=3.2,<4.0
3938
django42: Django>=4.2,<4.3
4039
-r{toxinidir}/requirements/test.txt
4140
commands =

0 commit comments

Comments
 (0)