From 4971621203caca31133299e7bbaa60556fd9712a Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Mon, 19 Feb 2024 11:41:14 +0500 Subject: [PATCH 1/3] build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. chore: Updating Python Requirements (#396) build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. build: python 3.11 and 3.12 support. fix: include setuptools in quality requirements chore: quality fixes --- .github/workflows/ci.yml | 4 ++-- Makefile | 2 +- .../processors/xapi/tests/test_xapi.py | 6 +++--- requirements/base.in | 1 + requirements/base.txt | 7 +++---- requirements/constraints.txt | 2 ++ requirements/dev.txt | 6 +++--- requirements/doc.txt | 9 +++------ requirements/quality.in | 2 ++ requirements/quality.txt | 12 ++++++------ requirements/test.txt | 12 +++--------- setup.py | 3 ++- tox.ini | 3 +-- 13 files changed, 32 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b46deef..1ddeacb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,8 +15,8 @@ jobs: strategy: matrix: os: [ubuntu-20.04] - python-version: ['3.8'] - toxenv: [quality, docs, pii_check, django32, django42] + python-version: ['3.8', '3.11', '3.12'] + toxenv: [quality, docs, pii_check, django42] steps: - uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index 6655b8ad..77885d0d 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ upgrade: ## update the requirements/*.txt files with the latest packages satisfy $(PIP_COMPILE) -o requirements/base.txt requirements/base.in $(PIP_COMPILE) -o requirements/test.txt requirements/test.in $(PIP_COMPILE) -o requirements/doc.txt requirements/doc.in - $(PIP_COMPILE) -o requirements/quality.txt requirements/quality.in + $(PIP_COMPILE) --allow-unsafe -o requirements/quality.txt requirements/quality.in $(PIP_COMPILE) -o requirements/ci.txt requirements/ci.in $(PIP_COMPILE) -o requirements/dev.txt requirements/dev.in # Let tox control the Django version for tests diff --git a/event_routing_backends/processors/xapi/tests/test_xapi.py b/event_routing_backends/processors/xapi/tests/test_xapi.py index f612ef6c..d2c93549 100644 --- a/event_routing_backends/processors/xapi/tests/test_xapi.py +++ b/event_routing_backends/processors/xapi/tests/test_xapi.py @@ -61,13 +61,14 @@ def test_send_method_with_successfull_flow(self, mocked_logger, mocked_get_trans self.processor([self.sample_event]) - self.assertIn(call(transformed_event.to_json()), mocked_logger.mock_calls) + self.assertIn(call.info(transformed_event.to_json()), mocked_logger.mock_calls) @patch( 'event_routing_backends.processors.xapi.transformer_processor.XApiTransformersRegistry.get_transformer' ) @patch('event_routing_backends.processors.xapi.transformer_processor.xapi_logger') def test_send_method_with_event_list_successfull_flow(self, mocked_logger, mocked_get_transformer): + transformed_event = Statement() transformed_event.object = Activity(id=str(uuid.uuid4())) mocked_transformer = MagicMock() @@ -75,8 +76,7 @@ def test_send_method_with_event_list_successfull_flow(self, mocked_logger, mocke mocked_get_transformer.return_value = mocked_transformer self.processor([self.sample_event]) - - self.assertIn(call(transformed_event.to_json()), mocked_logger.mock_calls) + self.assertIn(call.info(transformed_event.to_json()), mocked_logger.mock_calls) @patch( 'event_routing_backends.processors.xapi.transformer_processor.XApiTransformersRegistry.get_transformer' diff --git a/requirements/base.in b/requirements/base.in index 96c2d8a3..f40cfed8 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -17,3 +17,4 @@ apache-libcloud # For bulk event log loading fasteners # Locking tools, required by apache-libcloud, but somehow not installed with it openedx-filters django-redis +setuptools # Python 3.12 requires setuptools package diff --git a/requirements/base.txt b/requirements/base.txt index e4e4124f..0744fd78 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -16,8 +16,9 @@ async-timeout==4.0.3 # via redis attrs==23.2.0 # via openedx-events -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # celery # django # djangorestframework @@ -72,7 +73,7 @@ django==4.2.11 # jsonfield # openedx-events # openedx-filters -django-config-models==2.6.0 +django-config-models==2.7.0 # via -r requirements/base.in django-crum==0.7.9 # via @@ -199,8 +200,6 @@ vine==5.1.0 # kombu wcwidth==0.2.13 # via prompt-toolkit -wheel==0.43.0 - # via django-config-models # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/constraints.txt b/requirements/constraints.txt index c99783f3..c072cd86 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -24,3 +24,5 @@ sphinx==4.2.0 docutils<0.18 doc8<1.0.0 event-tracking>=2.3.2 +# it is not availablein python3.9 +backports.zoneinfo;python_version<"3.9" diff --git a/requirements/dev.txt b/requirements/dev.txt index ac253012..9c5eea4f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -31,8 +31,9 @@ attrs==23.2.0 # via # -r requirements/quality.txt # openedx-events -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # -r requirements/quality.txt # celery # django @@ -151,7 +152,7 @@ django==4.2.11 # jsonfield # openedx-events # openedx-filters -django-config-models==2.6.0 +django-config-models==2.7.0 # via -r requirements/quality.txt django-crum==0.7.9 # via @@ -494,7 +495,6 @@ wheel==0.43.0 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt - # django-config-models # pip-tools zipp==3.18.1 # via diff --git a/requirements/doc.txt b/requirements/doc.txt index 88745503..81994fdc 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -34,8 +34,9 @@ babel==2.14.0 # via # pydata-sphinx-theme # sphinx -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # -r requirements/test.txt # celery # django @@ -121,7 +122,7 @@ django==4.2.11 # jsonfield # openedx-events # openedx-filters -django-config-models==2.6.0 +django-config-models==2.7.0 # via -r requirements/test.txt django-crum==0.7.9 # via @@ -451,10 +452,6 @@ wcwidth==0.2.13 # via # -r requirements/test.txt # prompt-toolkit -wheel==0.43.0 - # via - # -r requirements/test.txt - # django-config-models zipp==3.18.1 # via # importlib-metadata diff --git a/requirements/quality.in b/requirements/quality.in index 0bd84a64..eca6ed3f 100644 --- a/requirements/quality.in +++ b/requirements/quality.in @@ -7,3 +7,5 @@ edx-lint # edX pylint rules and plugins isort # to standardize order of imports pycodestyle # PEP 8 compliance validation pydocstyle # PEP 257 compliance validation +wheel +setuptools diff --git a/requirements/quality.txt b/requirements/quality.txt index 5a2087ef..d4af06b6 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -30,8 +30,9 @@ attrs==23.2.0 # via # -r requirements/test.txt # openedx-events -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # -r requirements/test.txt # celery # django @@ -119,7 +120,7 @@ django==4.2.11 # jsonfield # openedx-events # openedx-filters -django-config-models==2.6.0 +django-config-models==2.7.0 # via -r requirements/test.txt django-crum==0.7.9 # via @@ -376,9 +377,8 @@ wcwidth==0.2.13 # -r requirements/test.txt # prompt-toolkit wheel==0.43.0 - # via - # -r requirements/test.txt - # django-config-models + # via -r requirements/quality.in # The following packages are considered to be unsafe in a requirements file: -# setuptools +setuptools==69.2.0 + # via -r requirements/quality.in diff --git a/requirements/test.txt b/requirements/test.txt index 6364a6b9..51cd7237 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -26,8 +26,9 @@ attrs==23.2.0 # via # -r requirements/base.txt # openedx-events -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # -r requirements/base.txt # celery # django @@ -106,7 +107,7 @@ ddt==1.7.2 # jsonfield # openedx-events # openedx-filters -django-config-models==2.6.0 +django-config-models==2.7.0 # via -r requirements/base.txt django-crum==0.7.9 # via @@ -314,10 +315,3 @@ wcwidth==0.2.13 # via # -r requirements/base.txt # prompt-toolkit -wheel==0.43.0 - # via - # -r requirements/base.txt - # django-config-models - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/setup.py b/setup.py index 7109d6e9..b04c07bc 100644 --- a/setup.py +++ b/setup.py @@ -155,13 +155,14 @@ def is_requirement(line): classifiers=[ 'Development Status :: 3 - Alpha', 'Framework :: Django', - 'Framework :: Django :: 3.2', 'Framework :: Django :: 4.2', 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Natural Language :: English', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', ], entry_points={ "lms.djangoapp": [ diff --git a/tox.ini b/tox.ini index e017a3e0..73d3ff43 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,42}, quality, docs, pii_check +envlist = py{38}-django{42}, quality, docs, pii_check [doc8] ignore = D001 @@ -35,7 +35,6 @@ norecursedirs = .* docs requirements site-packages [testenv] deps = - django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt commands = From 6453cd800e0063ad0fb294e9e730f572da2442e9 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 17 May 2024 09:08:57 -0400 Subject: [PATCH 2/3] build: Bump the version so that we can release a new version. --- event_routing_backends/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/event_routing_backends/__init__.py b/event_routing_backends/__init__.py index f30251ac..84f7966f 100644 --- a/event_routing_backends/__init__.py +++ b/event_routing_backends/__init__.py @@ -2,4 +2,4 @@ Various backends for receiving edX LMS events.. """ -__version__ = '9.0.1' +__version__ = '9.1.0' From eb801db2716dc9a016edf22bc01026324f360fc2 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 17 May 2024 09:19:03 -0400 Subject: [PATCH 3/3] build: Add tox rules and update ci matrix. Tox did not have the other python versions so we couldn't test locally with those easily. Also, we don't need to run the `docs`, `quality` and `pii_check` on all versions. Running it on the latest version is sufficient. --- .github/workflows/ci.yml | 15 +++++++++++++-- tox.ini | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ddeacb0..f8d4d585 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,9 +14,20 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04] + os: [ 'ubuntu-20.04' ] python-version: ['3.8', '3.11', '3.12'] - toxenv: [quality, docs, pii_check, django42] + toxenv: [ 'django42' ] + # Only run these other workflows on the latest python version we support. + include: + - python-version: '3.12' + toxenv: 'quality' + os: 'ubuntu-20.04' + - python-version: '3.12' + toxenv: 'docs' + os: 'ubuntu-20.04' + - python-version: '3.12' + toxenv: 'pii_check' + os: 'ubuntu-20.04' steps: - uses: actions/checkout@v4 diff --git a/tox.ini b/tox.ini index 73d3ff43..40d90f26 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{38}-django{42}, quality, docs, pii_check +envlist = py{38,311,312}-django{42}, quality, docs, pii_check [doc8] ignore = D001