diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c0553fd..c76a960 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,15 +12,15 @@ jobs: name: Tests runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [ubuntu-20.04] - python-version: ["3.8"] + python-version: ["3.8", "3.12"] toxenv: [ quality, docs, pii_check, - django32-celery53, django42-celery53, ] diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d593962..f8dda6d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -11,8 +11,10 @@ Change Log .. There should always be an "Unreleased" section for changes pending release. -Unreleased +[1.1.0] - Unreleased +~~~~~~~~~~~~~~~~~~~~ +* Added support for python 3.12. [1.0.2] - 2023-06-14 diff --git a/bulk_grades/__init__.py b/bulk_grades/__init__.py index 86de805..91eea5c 100644 --- a/bulk_grades/__init__.py +++ b/bulk_grades/__init__.py @@ -2,6 +2,6 @@ Support for bulk scoring and grading. """ -__version__ = '1.0.2' +__version__ = '1.1.0' default_app_config = 'bulk_grades.apps.BulkGradesConfig' # pylint: disable=invalid-name diff --git a/bulk_grades/views.py b/bulk_grades/views.py index 0165b01..5fe5bdc 100644 --- a/bulk_grades/views.py +++ b/bulk_grades/views.py @@ -69,7 +69,7 @@ def get(self, request, course_id, *args, **kwargs): filename = self.get_export_filename(course_id) response = StreamingHttpResponse(iterator, content_type='text/csv') - response['Content-Disposition'] = f'attachment; filename="{filename}"' + response['Content-Disposition'] = f'attachment; filename="{filename}"' # noqa log.info('Exporting %s CSV for %s', course_id, self.__class__) return response diff --git a/requirements/base.txt b/requirements/base.txt index e04172b..5cb88d8 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,7 +8,7 @@ amqp==5.1.1 # via kombu asgiref==3.7.2 # via django -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # celery # kombu diff --git a/requirements/dev.txt b/requirements/dev.txt index 6d5c5ab..d6b0852 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -17,7 +17,7 @@ astroid==2.15.6 # -r requirements/quality.txt # pylint # pylint-celery -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # -r requirements/quality.txt # backports-zoneinfo diff --git a/requirements/doc.txt b/requirements/doc.txt index 4273c71..beeea2c 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -20,7 +20,7 @@ babel==2.12.1 # via # pydata-sphinx-theme # sphinx -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # -r requirements/test.txt # backports-zoneinfo diff --git a/requirements/pii_check.txt b/requirements/pii_check.txt index 97b51c4..c999b20 100644 --- a/requirements/pii_check.txt +++ b/requirements/pii_check.txt @@ -12,7 +12,7 @@ asgiref==3.7.2 # via # -r requirements/base.txt # django -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # -r requirements/base.txt # backports-zoneinfo diff --git a/requirements/pip.txt b/requirements/pip.txt index b91b2fe..71954cc 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # 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==21.2.1 +pip==24.0 # via -r requirements/pip.in -setuptools==57.4.0 +setuptools==69.1.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index 8a49766..11c99dc 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -16,7 +16,7 @@ astroid==2.15.6 # via # pylint # pylint-celery -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # -r requirements/test.txt # backports-zoneinfo diff --git a/requirements/test.txt b/requirements/test.txt index c4455d2..ebc5458 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -11,7 +11,7 @@ asgiref==3.7.2 # via # -r requirements/base.txt # django -backports-zoneinfo[tzdata]==0.2.1 +backports-zoneinfo[tzdata]==0.2.1; python_version < '3.9' # via # -r requirements/base.txt # backports-zoneinfo diff --git a/setup.py b/setup.py index aa1e01a..d44873c 100644 --- a/setup.py +++ b/setup.py @@ -83,15 +83,13 @@ def is_requirement(line): classifiers=[ 'Development Status :: 3 - Alpha', 'Framework :: Django', - 'Framework :: Django :: 3.2', - 'Framework :: Django :: 4.0', - 'Framework :: Django :: 4.1', '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.12', ], entry_points={ 'lms.djangoapp': [ diff --git a/tox.ini b/tox.ini index 9f66ee1..770a62c 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,42}-celery{53},quality,docs,pii_check +envlist = py{38,312}-django{42}-celery{53},quality,docs,pii_check [pytest] DJANGO_SETTINGS_MODULE = test_settings @@ -10,8 +10,8 @@ norecursedirs = .* docs requirements site-packages setenv = PYTHONPATH = {toxinidir}/mock_apps/ deps = + setuptools -r{toxinidir}/requirements/test.txt - django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 celery53: -r{toxinidir}/requirements/celery53.txt commands = @@ -25,6 +25,8 @@ allowlist_externals = make rm deps = + setuptools + wheel -r{toxinidir}/requirements/doc.txt commands = doc8 --ignore-path docs/_build README.rst docs @@ -44,6 +46,8 @@ allowlist_externals = rm touch deps = + setuptools + wheel -r{toxinidir}/requirements/quality.txt commands = touch tests/__init__.py @@ -58,6 +62,7 @@ setenv = DJANGO_SETTINGS_MODULE = test_settings PYTHONPATH = {toxinidir}/mock_apps/ deps = + setuptools -r{toxinidir}/requirements/pii_check.txt commands = code_annotations django_find_annotations --config_file .pii_annotations.yml --lint --report --coverage