diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d7624f60..b1ffd0527 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,10 +13,11 @@ jobs: name: tests runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [ubuntu-latest] # Add macos-latest later? - python-version: ['3.8'] - toxenv: ["py38-django32", "py38-django42", "package", "quality"] + python-version: ['3.8','3.12'] + toxenv: ["django42", "package", "quality"] # We're only testing against MySQL 8 right now because 5.7 is # incompatible with Djagno 4.2. We'd have to make the tox.ini file more # complicated than it's worth given the short expected shelf-life of diff --git a/Makefile b/Makefile index 34eadfc08..379aff15d 100644 --- a/Makefile +++ b/Makefile @@ -35,8 +35,11 @@ PIP_COMPILE = pip-compile --rebuild $(PIP_COMPILE_OPTS) compile-requirements: export CUSTOM_COMPILE_COMMAND=make upgrade compile-requirements: ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in pip install -qr requirements/pip-tools.txt - # Make sure to compile files after any other files they include! + # Make sure to compile files after any other files they include! + $(PIP_COMPILE) --allow-unsafe -o requirements/pip.txt requirements/pip.in $(PIP_COMPILE) -o requirements/pip-tools.txt requirements/pip-tools.in + pip install -qr requirements/pip.txt + pip install -qr requirements/pip-tools.txt $(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 diff --git a/openedx_learning/__init__.py b/openedx_learning/__init__.py index e718aa232..0226308bb 100644 --- a/openedx_learning/__init__.py +++ b/openedx_learning/__init__.py @@ -1,4 +1,4 @@ """ Open edX Learning ("Learning Core"). """ -__version__ = "0.6.3" +__version__ = "0.7.0" diff --git a/requirements/base.txt b/requirements/base.txt index 75b3d2c56..0855dd222 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -10,9 +10,11 @@ asgiref==3.7.2 # via django attrs==23.2.0 # via -r requirements/base.in -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9" # via + # -c requirements/constraints.txt # celery + # django # kombu billiard==4.2.0 # via celery @@ -41,9 +43,8 @@ click-repl==0.3.0 # via celery cryptography==42.0.5 # via pyjwt -django==3.2.24 +django==4.2.10 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/base.in # django-crum @@ -96,9 +97,7 @@ pynacl==1.5.0 python-dateutil==2.9.0.post0 # via celery pytz==2024.1 - # via - # django - # djangorestframework + # via djangorestframework requests==2.31.0 # via edx-drf-extensions rules==3.3 diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 99f31ef08..f62f78d0b 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -9,11 +9,11 @@ # linking to it here is good. # Common constraints for edx repos --c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt +# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # tox>4.0.0 isn't yet compatible with many tox plugins, causing CI failures in almost all repos. # Details can be found in this discussion: https://github.com/tox-dev/tox/discussions/1810 tox<4.0.0 -# Develop primarily on Django 3.2, but we'll want to start testing against 4.2 -Django<4.0 +Django<5.0 +backports-zoneinfo[tzdata]; python_version < '3.9' diff --git a/requirements/dev.txt b/requirements/dev.txt index 6be88dccd..c88ed4290 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -19,10 +19,12 @@ astroid==3.1.0 # pylint-celery attrs==23.2.0 # via -r requirements/quality.txt -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 # kombu billiard==4.2.0 # via @@ -105,9 +107,8 @@ distlib==0.3.8 # via # -r requirements/ci.txt # virtualenv -django==3.2.24 +django==4.2.10 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/quality.txt # django-crum @@ -215,11 +216,6 @@ jaraco-classes==3.3.1 # via # -r requirements/quality.txt # keyring -jeepney==0.8.0 - # via - # -r requirements/quality.txt - # keyring - # secretstorage jinja2==3.1.3 # via # -r requirements/quality.txt @@ -392,7 +388,6 @@ python-slugify==8.0.4 pytz==2024.1 # via # -r requirements/quality.txt - # django # djangorestframework pyyaml==6.0.1 # via @@ -424,10 +419,6 @@ rich==13.7.1 # twine rules==3.3 # via -r requirements/quality.txt -secretstorage==3.3.3 - # via - # -r requirements/quality.txt - # keyring semantic-version==2.10.0 # via # -r requirements/quality.txt diff --git a/requirements/doc.txt b/requirements/doc.txt index 8e84dffa1..de4a217bd 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -22,10 +22,12 @@ 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 # kombu beautifulsoup4==4.12.3 # via pydata-sphinx-theme @@ -82,9 +84,8 @@ cryptography==42.0.5 # pyjwt ddt==1.7.2 # via -r requirements/test.txt -django==3.2.24 +django==4.2.10 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/test.txt # django-crum @@ -268,7 +269,6 @@ pytz==2024.1 # via # -r requirements/test.txt # babel - # django # djangorestframework pyyaml==6.0.1 # via diff --git a/requirements/pip.txt b/requirements/pip.txt index 884d847ef..66656035b 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,14 +1,14 @@ # -# This file is autogenerated by pip-compile -# To update, run: +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: # # make upgrade # -wheel==0.36.2 +wheel==0.42.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==20.3.3 +pip==24.0 # via -r requirements/pip.in -setuptools==51.3.3 +setuptools==69.1.1 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index d4a4d7643..da5d0418e 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -18,10 +18,12 @@ astroid==3.1.0 # pylint-celery attrs==23.2.0 # via -r requirements/test.txt -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 # kombu billiard==4.2.0 # via @@ -85,9 +87,8 @@ ddt==1.7.2 # via -r requirements/test.txt dill==0.3.8 # via pylint -django==3.2.24 +django==4.2.10 # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/test.txt # django-crum @@ -173,10 +174,6 @@ isort==5.13.2 # pylint jaraco-classes==3.3.1 # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage jinja2==3.1.3 # via # -r requirements/test.txt @@ -298,7 +295,6 @@ python-slugify==8.0.4 pytz==2024.1 # via # -r requirements/test.txt - # django # djangorestframework pyyaml==6.0.1 # via @@ -321,8 +317,6 @@ rich==13.7.1 # via twine rules==3.3 # via -r requirements/test.txt -secretstorage==3.3.3 - # via keyring semantic-version==2.10.0 # via # -r requirements/test.txt diff --git a/requirements/test.txt b/requirements/test.txt index 5d4ab4804..fd144189d 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -14,10 +14,12 @@ asgiref==3.7.2 # django attrs==23.2.0 # via -r requirements/base.txt -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 # kombu billiard==4.2.0 # via @@ -73,7 +75,6 @@ cryptography==42.0.5 ddt==1.7.2 # via -r requirements/test.in # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/base.txt # django-crum @@ -206,7 +207,6 @@ python-slugify==8.0.4 pytz==2024.1 # via # -r requirements/base.txt - # django # djangorestframework pyyaml==6.0.1 # via code-annotations diff --git a/setup.py b/setup.py index ab642620a..cf0959535 100755 --- a/setup.py +++ b/setup.py @@ -91,5 +91,6 @@ def is_requirement(line): 'Natural Language :: English', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.12', ], ) diff --git a/tests/openedx_learning/core/publishing/test_api.py b/tests/openedx_learning/core/publishing/test_api.py index 56c914662..cdcfd459c 100644 --- a/tests/openedx_learning/core/publishing/test_api.py +++ b/tests/openedx_learning/core/publishing/test_api.py @@ -72,7 +72,7 @@ def test_auto_datetime(self) -> None: # Auto-generated datetime checking... assert isinstance(package.created, datetime) assert package.created == package.updated - assert package.created.tzinfo == timezone.utc + assert package.created.tzinfo == timezone.utc # pylint: disable=no-member # Should be auto-generated assert isinstance(package.uuid, UUID) diff --git a/tox.ini b/tox.ini index 4f57a8574..7e6dda94a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,42}, quality, docs, pii_check, lint-imports +envlist = py{38,312}-django{42}, quality, docs, pii_check, lint-imports [doc8] ; D001 = Line too long @@ -36,7 +36,7 @@ norecursedirs = .* docs requirements site-packages [testenv] deps = - django32: Django>=3.2,<3.3 + setuptools django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt setenv = @@ -71,6 +71,7 @@ allowlist_externals = rm touch deps = + setuptools -r{toxinidir}/requirements/quality.txt commands = pylint openedx_learning openedx_tagging tests test_utils manage.py setup.py