diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5927eb9..47f5e2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,10 +2,10 @@ name: Python CI on: push: - branches: [ master ] + branches: [master] pull_request: branches: - - '**' + - '**' workflow_dispatch: concurrency: @@ -18,27 +18,27 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-20.04 ] - python-version: [3.8] - toxenv: [django32, django42, quality, package] + os: [ubuntu-20.04] + python-version: ['3.8', '3.11', '3.12'] + toxenv: [django42, quality, package] steps: - - name: Install translations dependencies - run: sudo apt-get install -y gettext + - name: Install translations dependencies + run: sudo apt-get install -y gettext - - name: checkout repo - uses: actions/checkout@v3 - with: - submodules: recursive + - name: checkout repo + uses: actions/checkout@v3 + with: + submodules: recursive - - name: setup python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} + - name: setup python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} - - name: Install Dependencies - run: pip install -r requirements/ci.txt + - name: Install Dependencies + run: pip install -r requirements/ci.txt - - name: Run Tests - env: - TOXENV: ${{ matrix.toxenv }} - run: tox + - name: Run Tests + env: + TOXENV: ${{ matrix.toxenv }} + run: tox diff --git a/google_drive/__init__.py b/google_drive/__init__.py index 6010928..f34f9cf 100644 --- a/google_drive/__init__.py +++ b/google_drive/__init__.py @@ -4,4 +4,4 @@ from .google_docs import GoogleDocumentBlock from .google_calendar import GoogleCalendarBlock -__version__ = '0.6.1' +__version__ = '0.7.0' diff --git a/google_drive/google_docs.py b/google_drive/google_docs.py index 9381f61..9cb2bbc 100644 --- a/google_drive/google_docs.py +++ b/google_drive/google_docs.py @@ -142,7 +142,7 @@ def studio_submit(self, submissions, suffix=''): # pylint: disable=unused-argum # suffix argument is specified for xblocks, but we are not using herein @XBlock.json_handler - def check_url(self, data, suffix=''): # pylint: disable=unused-argument,no-self-use + def check_url(self, data, suffix=''): # pylint: disable=unused-argument """ Checks that the given document url is accessible, and therefore assumed to be valid """ @@ -155,7 +155,7 @@ def check_url(self, data, suffix=''): # pylint: disable=unused-argument,no-self } try: - url_response = requests.head(test_url) + url_response = requests.head(test_url) # pylint: disable=missing-timeout # Catch wide range of request exceptions except requests.exceptions.RequestException as ex: LOG.debug("Unable to connect to %s - %s", test_url, six.text_type(ex)) diff --git a/google_drive/tests/unit/test_calendar.py b/google_drive/tests/unit/test_calendar.py index e48c688..13df2a7 100644 --- a/google_drive/tests/unit/test_calendar.py +++ b/google_drive/tests/unit/test_calendar.py @@ -11,7 +11,6 @@ from django.utils.html import escape from django.utils.translation import override as override_language from mock import Mock -from nose.tools import assert_equal, assert_in from workbench.runtime import WorkbenchRuntime from xblock.runtime import DictKeyValueStore, KvsFieldData @@ -85,7 +84,7 @@ def make_calendar_block(cls): ids = generate_scope_ids(runtime, 'google_calendar') return GoogleCalendarBlock(runtime, db_model, scope_ids=ids) - def _render_calendar_block(self): # pylint: disable=no-self-use + def _render_calendar_block(self): block = TestGoogleCalendarBlock.make_calendar_block() block.usage_id = Mock() student_fragment = block.render('student_view', Mock()) @@ -106,43 +105,43 @@ def test_calendar_template_content(self, override, activate_lang, expected_lang) src_url = (f'https://www.google.com/calendar/embed?mode=Month&src' f'={DEFAULT_CALENDAR_ID}&showCalendars=0&hl={expected_lang}') - assert_in('
', student_fragment.content) - assert_in(escape(src_url), student_fragment.content) - assert_in('Google Calendar', student_fragment.content) + assert '
' in student_fragment.content + assert escape(src_url) in student_fragment.content + assert 'Google Calendar' in student_fragment.content - assert_in(STUDIO_EDIT_WRAPPER, studio_fragment.content) - assert_in(VALIDATION_WRAPPER, studio_fragment.content) - assert_in(USER_INPUTS_WRAPPER, studio_fragment.content) - assert_in(BUTTONS_WRAPPER, studio_fragment.content) + assert STUDIO_EDIT_WRAPPER in studio_fragment.content + assert VALIDATION_WRAPPER in studio_fragment.content + assert USER_INPUTS_WRAPPER in studio_fragment.content + assert BUTTONS_WRAPPER in studio_fragment.content - def test_calendar_document_submit(self): # pylint: disable=no-self-use + def test_calendar_document_submit(self): """ Test studio submission of GoogleCalendarBlock """ block = TestGoogleCalendarBlock.make_calendar_block() body = json.dumps(TEST_SUBMIT_DATA) res = block.handle('studio_submit', make_request(body)) # pylint: disable=no-value-for-parameter - assert_equal(json.loads(res.body.decode('utf8')), RESULT_SUCCESS) + assert json.loads(res.body.decode('utf8')) == RESULT_SUCCESS - assert_equal(block.display_name, TEST_SUBMIT_DATA['display_name']) - assert_equal(block.calendar_id, TEST_SUBMIT_DATA['calendar_id']) - assert_equal(block.default_view, TEST_SUBMIT_DATA['default_view']) + assert block.display_name == TEST_SUBMIT_DATA['display_name'] + assert block.calendar_id == TEST_SUBMIT_DATA['calendar_id'] + assert block.default_view == TEST_SUBMIT_DATA['default_view'] body = json.dumps('') res = block.handle('studio_submit', make_request(body)) # pylint: disable=no-value-for-parameter - assert_equal(json.loads(res.body.decode('utf8')), RESULT_ERROR) + assert json.loads(res.body.decode('utf8')) == RESULT_ERROR - def test_calendar_publish_event(self): # pylint: disable=no-self-use + def test_calendar_publish_event(self): """ Test event publishing in GoogleCalendarBlock""" block = TestGoogleCalendarBlock.make_calendar_block() body = json.dumps(TEST_COMPLETE_PUBLISH_DATA) res = block.handle('publish_event', make_request(body)) # pylint: disable=no-value-for-parameter - assert_equal(json.loads(res.body.decode('utf8')), RESULT_SUCCESS) + assert json.loads(res.body.decode('utf8')) == RESULT_SUCCESS body = json.dumps(TEST_INCOMPLETE_PUBLISH_DATA) res = block.handle('publish_event', make_request(body)) - assert_equal(json.loads(res.body.decode('utf8')), RESULT_MISSING_EVENT_TYPE) + assert json.loads(res.body.decode('utf8')) == RESULT_MISSING_EVENT_TYPE diff --git a/google_drive/tests/unit/test_docs.py b/google_drive/tests/unit/test_docs.py index ef51890..62f205c 100644 --- a/google_drive/tests/unit/test_docs.py +++ b/google_drive/tests/unit/test_docs.py @@ -8,7 +8,6 @@ import unittest from mock import Mock -from nose.tools import assert_equal, assert_in from workbench.runtime import WorkbenchRuntime from xblock.runtime import DictKeyValueStore, KvsFieldData @@ -76,79 +75,79 @@ def make_document_block(cls): ids = generate_scope_ids(runtime, 'google_document') return GoogleDocumentBlock(runtime, db_model, scope_ids=ids) - def test_document_template_content(self): # pylint: disable=no-self-use + def test_document_template_content(self): """ Test content of GoogleDocumentBlock's rendered views """ block = TestGoogleDocumentBlock.make_document_block() block.usage_id = Mock() student_fragment = block.render('student_view', Mock()) # pylint: disable=no-value-for-parameter - assert_in('
=7.14.0 includes breaking changes in it which caused issues in discovery upgrade process. # elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html @@ -21,3 +21,12 @@ elasticsearch<7.14.0 # django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected django-simple-history==3.0.0 + +# opentelemetry requires version 6.x at the moment: +# https://github.com/open-telemetry/opentelemetry-python/issues/3570 +# Normally this could be added as a constraint in edx-django-utils, where we're +# adding the opentelemetry dependency. However, when we compile pip-tools.txt, +# that uses version 7.x, and then there's no undoing that when compiling base.txt. +# So we need to pin it globally, for now. +# Ticket for unpinning: https://github.com/openedx/edx-lint/issues/407 +importlib-metadata<7 diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 528e12d..810e8f0 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -10,5 +10,5 @@ -c common_constraints.txt -# TODO: Many pinned dependencies should be unpinned and/or moved to this constraints file. -pylint==2.12.2 +# Temporary to Support the python 3.11 Upgrade +backports.zoneinfo;python_version<"3.9" # Newer versions have zoneinfo available in the standard library diff --git a/requirements/dev.txt b/requirements/dev.txt index e969f65..fac9c6c 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,23 +8,27 @@ appdirs==1.4.4 # via fs arrow==1.3.0 # via cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 # via django -astroid==2.9.3 +astroid==3.1.0 # via # pylint # pylint-celery backports-functools-lru-cache==2.0.0 # via caniusepython3 +backports-zoneinfo==0.2.1 ; python_version < "3.9" + # via + # -c requirements/constraints.txt + # django binaryornot==0.4.4 # via cookiecutter -boto3==1.34.49 +boto3==1.34.85 # via fs-s3fs -botocore==1.34.49 +botocore==1.34.85 # via # boto3 # s3transfer -build==1.0.3 +build==1.2.1 # via pip-tools caniusepython3==7.3.0 # via -r requirements/quality.in @@ -45,26 +49,28 @@ click==8.1.7 # pip-tools click-log==0.4.0 # via edx-lint -code-annotations==1.6.0 +code-annotations==1.8.0 # via edx-lint cookiecutter==2.6.0 # via xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.4.4 # via pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.in -diff-cover==8.0.3 +diff-cover==9.0.0 # via -r requirements/dev.in +dill==0.3.8 + # via pylint distlib==0.3.8 # via caniusepython3 -django==3.2.24 +django==4.2.11 # via # -c requirements/common_constraints.txt # -r requirements/base.in # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -edx-i18n-tools==1.3.0 +edx-i18n-tools==1.5.0 # via -r requirements/test.in edx-lint==5.3.6 # via -r requirements/quality.in @@ -79,10 +85,12 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.7 # via requests -importlib-metadata==7.0.2 - # via build +importlib-metadata==6.11.0 + # via + # -c requirements/common_constraints.txt + # build iniconfig==2.0.0 # via pytest isort==5.13.2 @@ -100,14 +108,12 @@ jmespath==1.0.1 # botocore lazy==1.6 # via xblock -lazy-object-proxy==1.10.0 - # via astroid -lxml==5.1.0 +lxml==4.9.4 # via # edx-i18n-tools # xblock # xblock-sdk -mako==1.3.2 +mako==1.3.3 # via xblock markdown-it-py==3.0.0 # via rich @@ -116,26 +122,24 @@ markupsafe==2.1.5 # jinja2 # mako # xblock -mccabe==0.6.1 +mccabe==0.7.0 # via pylint mdurl==0.1.2 # via markdown-it-py mock==5.1.0 # via -r requirements/test.in -nose==1.3.7 - # via -r requirements/test.in -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.6.0 # via xblock -packaging==23.2 +packaging==24.0 # via # build # caniusepython3 # pytest -path==16.10.0 +path==16.14.0 # via edx-i18n-tools pbr==6.0.0 # via stevedore -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/dev.in platformdirs==4.2.0 # via pylint @@ -153,9 +157,8 @@ pygments==2.17.2 # via # diff-cover # rich -pylint==2.12.2 +pylint==3.1.0 # via - # -c requirements/constraints.txt # edx-lint # pylint-celery # pylint-django @@ -176,28 +179,26 @@ pyproject-hooks==1.0.0 # via # build # pip-tools -pytest==8.0.2 +pytest==8.1.1 # via # -r requirements/test.in # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in pytest-django==4.8.0 # via -r requirements/test.in -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # arrow # botocore # xblock -python-slugify==4.0.1 +python-slugify==8.0.4 # via # code-annotations # cookiecutter pytz==2024.1 - # via - # django - # xblock + # via xblock pyyaml==6.0.1 # via # code-annotations @@ -210,9 +211,9 @@ requests==2.31.0 # caniusepython3 # cookiecutter # xblock-sdk -rich==13.7.0 +rich==13.7.1 # via cookiecutter -s3transfer==0.10.0 +s3transfer==0.10.1 # via boto3 simplejson==3.19.2 # via @@ -226,24 +227,25 @@ six==1.16.0 # python-dateutil snowballstemmer==2.2.0 # via pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.0 # via django stevedore==5.2.0 # via code-annotations text-unidecode==1.3 # via python-slugify -toml==0.10.2 - # via pylint tomli==2.0.1 # via # build # coverage # pip-tools + # pylint # pyproject-hooks # pytest -types-python-dateutil==2.8.19.20240106 +tomlkit==0.12.4 + # via pylint +types-python-dateutil==2.9.0.20240316 # via arrow -typing-extensions==4.10.0 +typing-extensions==4.11.0 # via # asgiref # astroid @@ -253,7 +255,7 @@ urllib3==1.26.18 # via # botocore # requests -web-fragments==2.1.0 +web-fragments==2.2.0 # via # xblock # xblock-sdk @@ -261,19 +263,17 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -wrapt==1.13.3 - # via astroid -xblock[django]==1.10.0 +xblock[django]==3.1.0 # via # -r requirements/base.in # xblock-sdk -xblock-sdk==0.7.0 +xblock-sdk==0.10.0 # via # -r requirements/dev.in # -r requirements/test.in -zipp==3.17.0 +zipp==3.18.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/django.txt b/requirements/django.txt index ddab664..db03776 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==3.2.25 +django==4.2.11 diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 1c6a4b5..6401f54 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,15 +4,17 @@ # # make upgrade # -build==1.0.3 +build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==7.0.2 - # via build -packaging==23.2 +importlib-metadata==6.11.0 + # via + # -c requirements/common_constraints.txt + # build +packaging==24.0 # via build -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via @@ -23,9 +25,9 @@ tomli==2.0.1 # build # pip-tools # pyproject-hooks -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -zipp==3.17.0 +zipp==3.18.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index 6665603..e3ffcc7 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.42.0 +wheel==0.43.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: pip==24.0 # via -r requirements/pip.in -setuptools==69.1.1 +setuptools==69.5.1 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index e969f65..fac9c6c 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -8,23 +8,27 @@ appdirs==1.4.4 # via fs arrow==1.3.0 # via cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 # via django -astroid==2.9.3 +astroid==3.1.0 # via # pylint # pylint-celery backports-functools-lru-cache==2.0.0 # via caniusepython3 +backports-zoneinfo==0.2.1 ; python_version < "3.9" + # via + # -c requirements/constraints.txt + # django binaryornot==0.4.4 # via cookiecutter -boto3==1.34.49 +boto3==1.34.85 # via fs-s3fs -botocore==1.34.49 +botocore==1.34.85 # via # boto3 # s3transfer -build==1.0.3 +build==1.2.1 # via pip-tools caniusepython3==7.3.0 # via -r requirements/quality.in @@ -45,26 +49,28 @@ click==8.1.7 # pip-tools click-log==0.4.0 # via edx-lint -code-annotations==1.6.0 +code-annotations==1.8.0 # via edx-lint cookiecutter==2.6.0 # via xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.4.4 # via pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.in -diff-cover==8.0.3 +diff-cover==9.0.0 # via -r requirements/dev.in +dill==0.3.8 + # via pylint distlib==0.3.8 # via caniusepython3 -django==3.2.24 +django==4.2.11 # via # -c requirements/common_constraints.txt # -r requirements/base.in # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -edx-i18n-tools==1.3.0 +edx-i18n-tools==1.5.0 # via -r requirements/test.in edx-lint==5.3.6 # via -r requirements/quality.in @@ -79,10 +85,12 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.7 # via requests -importlib-metadata==7.0.2 - # via build +importlib-metadata==6.11.0 + # via + # -c requirements/common_constraints.txt + # build iniconfig==2.0.0 # via pytest isort==5.13.2 @@ -100,14 +108,12 @@ jmespath==1.0.1 # botocore lazy==1.6 # via xblock -lazy-object-proxy==1.10.0 - # via astroid -lxml==5.1.0 +lxml==4.9.4 # via # edx-i18n-tools # xblock # xblock-sdk -mako==1.3.2 +mako==1.3.3 # via xblock markdown-it-py==3.0.0 # via rich @@ -116,26 +122,24 @@ markupsafe==2.1.5 # jinja2 # mako # xblock -mccabe==0.6.1 +mccabe==0.7.0 # via pylint mdurl==0.1.2 # via markdown-it-py mock==5.1.0 # via -r requirements/test.in -nose==1.3.7 - # via -r requirements/test.in -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.6.0 # via xblock -packaging==23.2 +packaging==24.0 # via # build # caniusepython3 # pytest -path==16.10.0 +path==16.14.0 # via edx-i18n-tools pbr==6.0.0 # via stevedore -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/dev.in platformdirs==4.2.0 # via pylint @@ -153,9 +157,8 @@ pygments==2.17.2 # via # diff-cover # rich -pylint==2.12.2 +pylint==3.1.0 # via - # -c requirements/constraints.txt # edx-lint # pylint-celery # pylint-django @@ -176,28 +179,26 @@ pyproject-hooks==1.0.0 # via # build # pip-tools -pytest==8.0.2 +pytest==8.1.1 # via # -r requirements/test.in # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in pytest-django==4.8.0 # via -r requirements/test.in -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # arrow # botocore # xblock -python-slugify==4.0.1 +python-slugify==8.0.4 # via # code-annotations # cookiecutter pytz==2024.1 - # via - # django - # xblock + # via xblock pyyaml==6.0.1 # via # code-annotations @@ -210,9 +211,9 @@ requests==2.31.0 # caniusepython3 # cookiecutter # xblock-sdk -rich==13.7.0 +rich==13.7.1 # via cookiecutter -s3transfer==0.10.0 +s3transfer==0.10.1 # via boto3 simplejson==3.19.2 # via @@ -226,24 +227,25 @@ six==1.16.0 # python-dateutil snowballstemmer==2.2.0 # via pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.0 # via django stevedore==5.2.0 # via code-annotations text-unidecode==1.3 # via python-slugify -toml==0.10.2 - # via pylint tomli==2.0.1 # via # build # coverage # pip-tools + # pylint # pyproject-hooks # pytest -types-python-dateutil==2.8.19.20240106 +tomlkit==0.12.4 + # via pylint +types-python-dateutil==2.9.0.20240316 # via arrow -typing-extensions==4.10.0 +typing-extensions==4.11.0 # via # asgiref # astroid @@ -253,7 +255,7 @@ urllib3==1.26.18 # via # botocore # requests -web-fragments==2.1.0 +web-fragments==2.2.0 # via # xblock # xblock-sdk @@ -261,19 +263,17 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -wrapt==1.13.3 - # via astroid -xblock[django]==1.10.0 +xblock[django]==3.1.0 # via # -r requirements/base.in # xblock-sdk -xblock-sdk==0.7.0 +xblock-sdk==0.10.0 # via # -r requirements/dev.in # -r requirements/test.in -zipp==3.17.0 +zipp==3.18.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/test.in b/requirements/test.in index 740a0c2..b8040a6 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -5,7 +5,6 @@ ddt mock -nose pytest pytest-cov pytest-django diff --git a/requirements/test.txt b/requirements/test.txt index 93b6ceb..377346b 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -8,17 +8,21 @@ appdirs==1.4.4 # via fs arrow==1.3.0 # via cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 # via django +backports-zoneinfo==0.2.1 ; python_version < "3.9" + # via + # -c requirements/constraints.txt + # django binaryornot==0.4.4 # via cookiecutter -boto3==1.34.49 +boto3==1.34.85 # via fs-s3fs -botocore==1.34.49 +botocore==1.34.85 # via # boto3 # s3transfer -build==1.0.3 +build==1.2.1 # via pip-tools certifi==2024.2.2 # via requests @@ -34,11 +38,11 @@ click==8.1.7 # pip-tools cookiecutter==2.6.0 # via xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.4.4 # via pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.in -diff-cover==8.0.3 +diff-cover==9.0.0 # via -r requirements/dev.in # via # -c requirements/common_constraints.txt @@ -46,7 +50,7 @@ diff-cover==8.0.3 # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -edx-i18n-tools==1.3.0 +edx-i18n-tools==1.5.0 # via -r requirements/test.in exceptiongroup==1.2.0 # via pytest @@ -59,10 +63,12 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.7 # via requests -importlib-metadata==7.0.2 - # via build +importlib-metadata==6.11.0 + # via + # -c requirements/common_constraints.txt + # build iniconfig==2.0.0 # via pytest jinja2==3.1.3 @@ -75,12 +81,12 @@ jmespath==1.0.1 # botocore lazy==1.6 # via xblock -lxml==5.1.0 +lxml==4.9.4 # via # edx-i18n-tools # xblock # xblock-sdk -mako==1.3.2 +mako==1.3.3 # via xblock markdown-it-py==3.0.0 # via rich @@ -93,17 +99,15 @@ mdurl==0.1.2 # via markdown-it-py mock==5.1.0 # via -r requirements/test.in -nose==1.3.7 - # via -r requirements/test.in -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.6.0 # via xblock -packaging==23.2 +packaging==24.0 # via # build # pytest -path==16.10.0 +path==16.14.0 # via edx-i18n-tools -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/dev.in pluggy==1.4.0 # via @@ -123,26 +127,24 @@ pyproject-hooks==1.0.0 # via # build # pip-tools -pytest==8.0.2 +pytest==8.1.1 # via # -r requirements/test.in # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in pytest-django==4.8.0 # via -r requirements/test.in -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # arrow # botocore # xblock -python-slugify==4.0.1 +python-slugify==8.0.4 # via cookiecutter pytz==2024.1 - # via - # django - # xblock + # via xblock pyyaml==6.0.1 # via # cookiecutter @@ -153,9 +155,9 @@ requests==2.31.0 # -r requirements/base.in # cookiecutter # xblock-sdk -rich==13.7.0 +rich==13.7.1 # via cookiecutter -s3transfer==0.10.0 +s3transfer==0.10.1 # via boto3 simplejson==3.19.2 # via @@ -166,7 +168,7 @@ six==1.16.0 # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.0 # via django text-unidecode==1.3 # via python-slugify @@ -177,9 +179,9 @@ tomli==2.0.1 # pip-tools # pyproject-hooks # pytest -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20240316 # via arrow -typing-extensions==4.10.0 +typing-extensions==4.11.0 # via # asgiref # rich @@ -187,7 +189,7 @@ urllib3==1.26.18 # via # botocore # requests -web-fragments==2.1.0 +web-fragments==2.2.0 # via # xblock # xblock-sdk @@ -195,17 +197,17 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -xblock[django]==1.10.0 +xblock[django]==3.1.0 # via # -r requirements/base.in # xblock-sdk -xblock-sdk==0.7.0 +xblock-sdk==0.10.0 # via # -r requirements/dev.in # -r requirements/test.in -zipp==3.17.0 +zipp==3.18.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/setup.py b/setup.py index 0aca009..3ef3bd5 100644 --- a/setup.py +++ b/setup.py @@ -115,8 +115,9 @@ def package_data(pkg, root_list): classifiers=[ 'Programming Language :: Python', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', 'Framework :: Django', - 'Framework :: Django :: 3.2', 'Framework :: Django :: 4.2', ], url='https://github.com/openedx/xblock-google-drive', diff --git a/tox.ini b/tox.ini index 4a59232..03e1978 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,42},quality,package +envlist = py{38,311,312}-django{42},quality,package [pycodestyle] exclude = .git,.tox @@ -19,7 +19,6 @@ allowlist_externals = mkdir rm deps = - django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt setenv =