diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6196943c..39c68ddc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,18 +14,22 @@ jobs: max-parallel: 4 matrix: python-version: ['py38'] - django-version: ['django42'] - db-version: ['mysql80'] + django-version: ['django32', 'django42'] + db-version: ['mysql57', 'mysql80'] + # excluding mysql5.7 with Django 4.2 since Django 4.2 has + # dropped support for MySQL<8 + exclude: + - django-version: 'django42' + db-version: 'mysql57' steps: - uses: actions/checkout@v2 - name: Start container run: | docker-compose -f .travis/docker-compose-travis.yml up -d - - name: Install system packages + - name: Install Dependencies run: | - docker exec -e TOXENV=${{ matrix.python-version }}-${{ matrix.django-version }} --env DB_HOST=${{ matrix.db-version }} -u root edx_notes_api \ - /bin/bash -c "apt-get update && apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config" + pip install -r requirements/travis.txt - name: Run Tests run: | docker exec -e TOXENV=${{ matrix.python-version }}-${{ matrix.django-version }} --env DB_HOST=${{ matrix.db-version }} -u root edx_notes_api /edx/app/edx_notes_api/edx_notes_api/.travis/run_tests.sh diff --git a/.travis/docker-compose-travis.yml b/.travis/docker-compose-travis.yml index 2a043599..26eb6c5c 100644 --- a/.travis/docker-compose-travis.yml +++ b/.travis/docker-compose-travis.yml @@ -1,6 +1,16 @@ version: "2" services: + mysql57: + image: mysql:5.7 + container_name: mysql57 + command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci + environment: + MYSQL_ROOT_PASSWORD: "" + MYSQL_ALLOW_EMPTY_PASSWORD: "yes" + MYSQL_USER: "notes001" + MYSQL_PASSWORD: "secret" + MYSQL_DATABASE: "edx_notes_api" mysql80: image: mysql:8.0 container_name: mysql80 @@ -39,6 +49,7 @@ services: - ..:/edx/app/edx_notes_api/edx_notes_api command: tail -f /dev/null depends_on: + - "mysql57" - "mysql80" - "es" environment: diff --git a/Makefile b/Makefile index 98193f79..cd8500d9 100644 --- a/Makefile +++ b/Makefile @@ -65,21 +65,8 @@ develop: requirements test.requirements piptools: ## install pinned version of pip-compile and pip-sync pip install -r requirements/pip-tools.txt -define COMMON_CONSTRAINTS_TEMP_COMMENT -# This is a temporary solution to override the real common_constraints.txt\n# In edx-lint, until the pyjwt constraint in edx-lint has been removed.\n# See BOM-2721 for more details.\n# Below is the copied and edited version of common_constraints\n -endef -COMMON_CONSTRAINTS_TXT=requirements/common_constraints.txt -.PHONY: $(COMMON_CONSTRAINTS_TXT) -$(COMMON_CONSTRAINTS_TXT): - wget -O "$(@)" https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt || touch "$(@)" - echo "$(COMMON_CONSTRAINTS_TEMP_COMMENT)" | cat - $(@) > temp && mv temp $(@) - upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade -upgrade: piptools $(COMMON_CONSTRAINTS_TXT) ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in - # This is a temporary solution to override the real common_constraints.txt - # In edx-lint, until the pyjwt constraint in edx-lint has been removed. - # See BOM-271 for more details. - sed -i.'' 's/Django<4.0//g' requirements/common_constraints.txt +upgrade: piptools ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in # Make sure to compile files after any other files they include! pip-compile --upgrade -o requirements/travis.txt requirements/travis.in pip-compile --upgrade --rebuild --allow-unsafe -o requirements/pip.txt requirements/pip.in @@ -90,4 +77,4 @@ upgrade: piptools $(COMMON_CONSTRAINTS_TXT) ## update the requirements/*.txt fi pip-compile --upgrade -o requirements/test.txt requirements/test.in # Let tox control the Django version for tests grep -e "^django==" requirements/base.txt > requirements/django.txt - sed -i.'' '/^[dD]jango==/d' requirements/test.txt + sed -i '/^[dD]jango==/d' requirements/test.txt diff --git a/requirements/base.txt b/requirements/base.txt index 5afaa4ce..7c7a93aa 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,43 +4,46 @@ # # make upgrade # -asgiref==3.7.2 +asgiref==3.6.0 # via django -backports-zoneinfo==0.2.1 - # via django -certifi==2023.7.22 +certifi==2022.12.7 # via # elasticsearch # requests -cffi==1.16.0 +cffi==1.15.1 # via # cryptography # pynacl chardet==3.0.4 # via requests -click==8.1.7 +click==8.1.3 # via edx-django-utils -cryptography==41.0.4 +coreapi==2.3.3 + # via drf-yasg +coreschema==0.0.4 + # via + # coreapi + # drf-yasg +cryptography==40.0.1 # via pyjwt -django==4.2.6 +django==3.2.20 # via - # -c requirements/constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in # django-cors-headers # django-crum # django-nine - # django-waffle # djangorestframework # drf-jwt # drf-yasg # edx-django-release-util # edx-django-utils # edx-drf-extensions -django-cors-headers==4.2.0 +django-cors-headers==3.14.0 # via -r requirements/base.in django-crum==0.7.9 # via edx-django-utils -django-elasticsearch-dsl==7.4 +django-elasticsearch-dsl==7.3 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -49,7 +52,7 @@ django-elasticsearch-dsl-drf==0.22.5 # via -r requirements/base.in django-nine==0.2.7 # via django-elasticsearch-dsl-drf -django-waffle==4.0.0 +django-waffle==3.0.0 # via # edx-django-utils # edx-drf-extensions @@ -62,21 +65,21 @@ djangorestframework==3.14.0 # edx-drf-extensions drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.7 +drf-yasg==1.21.5 # via -r requirements/base.in -edx-django-release-util==1.3.0 +edx-django-release-util==1.2.0 # via -r requirements/base.in -edx-django-utils==5.7.0 +edx-django-utils==5.3.0 # via # -r requirements/base.in # edx-drf-extensions -edx-drf-extensions==8.10.0 +edx-drf-extensions==8.4.1 # via -r requirements/base.in -edx-opaque-keys==2.5.1 +edx-opaque-keys==2.3.0 # via edx-drf-extensions elasticsearch==7.13.4 # via - # -c requirements/common_constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/base.in # django-elasticsearch-dsl-drf @@ -87,35 +90,46 @@ elasticsearch-dsl==7.4.1 # -r requirements/base.in # django-elasticsearch-dsl # django-elasticsearch-dsl-drf -gunicorn==21.2.0 +future==0.18.3 + # via pyjwkest +gunicorn==20.1.0 # via -r requirements/base.in idna==2.10 # via requests inflection==0.5.1 # via drf-yasg -mysqlclient==2.2.0 +itypes==1.2.0 + # via coreapi +jinja2==3.1.2 + # via coreschema +markupsafe==2.1.2 + # via jinja2 +mysqlclient==2.1.1 # via -r requirements/base.in newrelic==4.8.0.110 # via # -c requirements/constraints.txt # -r requirements/base.in # edx-django-utils -packaging==23.2 +packaging==23.0 # via # django-nine # drf-yasg - # gunicorn path-py==9.1 # via # -c requirements/constraints.txt # -r requirements/base.in pbr==5.11.1 # via stevedore -psutil==5.9.5 +psutil==5.9.4 # via edx-django-utils pycparser==2.21 # via cffi -pyjwt[crypto]==2.8.0 +pycryptodomex==3.17 + # via pyjwkest +pyjwkest==1.4.2 + # via edx-drf-extensions +pyjwt[crypto]==2.6.0 # via # -r requirements/base.in # drf-jwt @@ -128,20 +142,26 @@ python-dateutil==2.4.0 # via # -c requirements/constraints.txt # -r requirements/base.in + # edx-drf-extensions # elasticsearch-dsl -pytz==2023.3.post1 +pytz==2023.3 # via + # django # djangorestframework # drf-yasg -pyyaml==6.0.1 - # via - # drf-yasg - # edx-django-release-util +pyyaml==6.0 + # via edx-django-release-util requests==2.25.0 # via # -c requirements/constraints.txt # -r requirements/base.in + # coreapi # edx-drf-extensions + # pyjwkest +ruamel-yaml==0.17.21 + # via drf-yasg +ruamel-yaml-clib==0.2.7 + # via ruamel-yaml semantic-version==2.10.0 # via edx-drf-extensions six==1.16.0 @@ -149,21 +169,24 @@ six==1.16.0 # django-elasticsearch-dsl # django-elasticsearch-dsl-drf # edx-django-release-util + # edx-drf-extensions # elasticsearch-dsl + # pyjwkest # python-dateutil -sqlparse==0.4.4 +sqlparse==0.4.3 # via django -stevedore==5.1.0 +stevedore==5.0.0 # via # edx-django-utils # edx-opaque-keys -typing-extensions==4.8.0 - # via - # asgiref - # edx-opaque-keys uritemplate==4.1.1 - # via drf-yasg -urllib3==1.26.17 + # via + # coreapi + # drf-yasg +urllib3==1.26.15 # via # elasticsearch # requests + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt deleted file mode 100644 index 0091b9ec..00000000 --- a/requirements/common_constraints.txt +++ /dev/null @@ -1,32 +0,0 @@ -# This is a temporary solution to override the real common_constraints.txt -# In edx-lint, until the pyjwt constraint in edx-lint has been removed. -# See BOM-2721 for more details. -# Below is the copied and edited version of common_constraints - -# A central location for most common version constraints -# (across edx repos) for pip-installation. -# -# Similar to other constraint files this file doesn't install any packages. -# It specifies version constraints that will be applied if a package is needed. -# When pinning something here, please provide an explanation of why it is a good -# idea to pin this package across all edx repos, Ideally, link to other information -# that will help people in the future to remove the pin when possible. -# Writing an issue against the offending project and linking to it here is good. -# -# Note: Changes to this file will automatically be used by other repos, referencing -# this file from Github directly. It does not require packaging in edx-lint. - - -# using LTS django version - - -# elasticsearch>=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 -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 - -# 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 diff --git a/requirements/constraints.txt b/requirements/constraints.txt index f56ccd19..74c0a461 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -1,4 +1,4 @@ -# Version constraints for pip-installation. +# Version constraints for pip installation. # # This file doesn't install any packages. It specifies version constraints # that will be applied if a package is needed. @@ -8,11 +8,8 @@ # pin when possible. Writing an issue against the offending project and # linking to it here is good. --c common_constraints.txt - -# Keeping Django to latest Django 4.2 LTS -# This constraint can be removed once the global constraint has been updated -Django<4.3 +# This file contains all common constraints for edx-repos +-c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt astroid==1.6.6 requests==2.25.0 diff --git a/requirements/django.txt b/requirements/django.txt index 7ac6d4fc..480c0782 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==4.2.6 +django==3.2.20 diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 50d35f22..baf1aa51 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,27 +4,20 @@ # # make upgrade # -build==1.0.3 +build==0.10.0 # via pip-tools -click==8.1.7 +click==8.1.3 # via pip-tools -importlib-metadata==6.8.0 +packaging==23.0 # via build -packaging==23.2 - # via build -pip-tools==7.3.0 +pip-tools==6.12.3 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via build tomli==2.0.1 - # via - # build - # pip-tools - # pyproject-hooks -wheel==0.41.2 + # via build +wheel==0.40.0 # via pip-tools -zipp==3.17.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/pip.txt b/requirements/pip.txt index 3e7d8f4a..896a85ce 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.41.2 +wheel==0.40.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==23.2.1 +pip==23.0.1 # via -r requirements/pip.in -setuptools==68.2.2 +setuptools==67.6.1 # via -r requirements/pip.in diff --git a/requirements/test.txt b/requirements/test.txt index 66081b2f..53033e81 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,7 +4,7 @@ # # make upgrade # -asgiref==3.7.2 +asgiref==3.6.0 # via # -r requirements/base.txt # django @@ -13,16 +13,14 @@ astroid==1.6.6 # -c requirements/constraints.txt # -r requirements/test.in # pylint -backports-zoneinfo==0.2.1 - # via - # -r requirements/base.txt - # django -certifi==2023.7.22 +attrs==22.2.0 + # via pytest +certifi==2022.12.7 # via # -r requirements/base.txt # elasticsearch # requests -cffi==1.16.0 +cffi==1.15.1 # via # -r requirements/base.txt # cryptography @@ -32,49 +30,57 @@ chardet==3.0.4 # -r requirements/base.txt # diff-cover # requests -click==8.1.7 +click==8.1.3 # via # -r requirements/base.txt # code-annotations # edx-django-utils -code-annotations==1.5.0 +code-annotations==1.3.0 # via -r requirements/test.in colorama==0.4.6 # via pylint -coverage[toml]==7.3.2 +coreapi==2.3.3 + # via + # -r requirements/base.txt + # drf-yasg +coreschema==0.0.4 + # via + # -r requirements/base.txt + # coreapi + # drf-yasg +coverage[toml]==7.2.2 # via # -r requirements/test.in # pytest-cov -cryptography==41.0.4 +cryptography==40.0.1 # via # -r requirements/base.txt # pyjwt ddt==1.6.0 # via -r requirements/test.in -diff-cover==7.7.0 +diff-cover==7.5.0 # via -r requirements/test.in -distlib==0.3.7 +distlib==0.3.6 # via virtualenv # via - # -c requirements/constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt # django-cors-headers # django-crum # django-nine - # django-waffle # djangorestframework # drf-jwt # drf-yasg # edx-django-release-util # edx-django-utils # edx-drf-extensions -django-cors-headers==4.2.0 +django-cors-headers==3.14.0 # via -r requirements/base.txt django-crum==0.7.9 # via # -r requirements/base.txt # edx-django-utils -django-elasticsearch-dsl==7.4 +django-elasticsearch-dsl==7.3 # via # -c requirements/constraints.txt # -r requirements/base.txt @@ -85,7 +91,7 @@ django-nine==0.2.7 # via # -r requirements/base.txt # django-elasticsearch-dsl-drf -django-waffle==4.0.0 +django-waffle==3.0.0 # via # -r requirements/base.txt # edx-django-utils @@ -101,23 +107,23 @@ drf-jwt==1.19.2 # via # -r requirements/base.txt # edx-drf-extensions -drf-yasg==1.21.7 +drf-yasg==1.21.5 # via -r requirements/base.txt -edx-django-release-util==1.3.0 +edx-django-release-util==1.2.0 # via -r requirements/base.txt -edx-django-utils==5.7.0 +edx-django-utils==5.3.0 # via # -r requirements/base.txt # edx-drf-extensions -edx-drf-extensions==8.10.0 +edx-drf-extensions==8.4.1 # via -r requirements/base.txt -edx-opaque-keys==2.5.1 +edx-opaque-keys==2.3.0 # via # -r requirements/base.txt # edx-drf-extensions elasticsearch==7.13.4 # via - # -c requirements/common_constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # -r requirements/base.txt # django-elasticsearch-dsl-drf @@ -128,17 +134,21 @@ elasticsearch-dsl==7.4.1 # -r requirements/base.txt # django-elasticsearch-dsl # django-elasticsearch-dsl-drf -exceptiongroup==1.1.3 +exceptiongroup==1.1.1 # via pytest -factory-boy==3.3.0 +factory-boy==3.2.1 # via -r requirements/test.in -faker==19.6.2 +faker==18.3.1 # via factory-boy -filelock==3.12.4 +filelock==3.10.7 # via # tox # virtualenv -gunicorn==21.2.0 +future==0.18.3 + # via + # -r requirements/base.txt + # pyjwkest +gunicorn==20.1.0 # via -r requirements/base.txt idna==2.10 # via @@ -150,31 +160,38 @@ inflection==0.5.1 # drf-yasg iniconfig==2.0.0 # via pytest +itypes==1.2.0 + # via + # -r requirements/base.txt + # coreapi jinja2==3.1.2 # via + # -r requirements/base.txt # code-annotations + # coreschema # diff-cover lazy-object-proxy==1.9.0 # via astroid -markupsafe==2.1.3 - # via jinja2 +markupsafe==2.1.2 + # via + # -r requirements/base.txt + # jinja2 more-itertools==5.0.0 # via # -c requirements/constraints.txt # -r requirements/test.in -mysqlclient==2.2.0 +mysqlclient==2.1.1 # via -r requirements/base.txt newrelic==4.8.0.110 # via # -c requirements/constraints.txt # -r requirements/base.txt # edx-django-utils -packaging==23.2 +packaging==23.0 # via # -r requirements/base.txt # django-nine # drf-yasg - # gunicorn # pytest # tox path-py==9.1 @@ -187,14 +204,14 @@ pbr==5.11.1 # stevedore pep8==1.7.1 # via -r requirements/test.in -platformdirs==3.11.0 +platformdirs==3.2.0 # via virtualenv -pluggy==1.3.0 +pluggy==1.0.0 # via # diff-cover # pytest # tox -psutil==5.9.5 +psutil==5.9.4 # via # -r requirements/base.txt # edx-django-utils @@ -204,9 +221,17 @@ pycparser==2.21 # via # -r requirements/base.txt # cffi -pygments==2.16.1 +pycryptodomex==3.17 + # via + # -r requirements/base.txt + # pyjwkest +pygments==2.14.0 # via diff-cover -pyjwt[crypto]==2.8.0 +pyjwkest==1.4.2 + # via + # -r requirements/base.txt + # edx-drf-extensions +pyjwt[crypto]==2.6.0 # via # -r requirements/base.txt # drf-jwt @@ -223,12 +248,12 @@ pynacl==1.5.0 # via # -r requirements/base.txt # edx-django-utils -pytest==7.4.2 +pytest==7.2.2 # via # -r requirements/test.in # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==4.0.0 # via -r requirements/test.in pytest-django==4.5.2 # via -r requirements/test.in @@ -236,26 +261,37 @@ python-dateutil==2.4.0 # via # -c requirements/constraints.txt # -r requirements/base.txt + # edx-drf-extensions # elasticsearch-dsl # faker python-slugify==8.0.1 # via code-annotations -pytz==2023.3.post1 +pytz==2023.3 # via # -r requirements/base.txt + # django # djangorestframework # drf-yasg -pyyaml==6.0.1 +pyyaml==6.0 # via # -r requirements/base.txt # code-annotations - # drf-yasg # edx-django-release-util requests==2.25.0 # via # -c requirements/constraints.txt # -r requirements/base.txt + # coreapi # edx-drf-extensions + # pyjwkest +ruamel-yaml==0.17.21 + # via + # -r requirements/base.txt + # drf-yasg +ruamel-yaml-clib==0.2.7 + # via + # -r requirements/base.txt + # ruamel-yaml semantic-version==2.10.0 # via # -r requirements/base.txt @@ -267,16 +303,18 @@ six==1.16.0 # django-elasticsearch-dsl # django-elasticsearch-dsl-drf # edx-django-release-util + # edx-drf-extensions # elasticsearch-dsl # more-itertools + # pyjwkest # pylint # python-dateutil # tox -sqlparse==0.4.4 +sqlparse==0.4.3 # via # -r requirements/base.txt # django -stevedore==5.1.0 +stevedore==5.0.0 # via # -r requirements/base.txt # code-annotations @@ -291,24 +329,22 @@ tomli==2.0.1 # tox tox==3.28.0 # via - # -c requirements/common_constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.in -typing-extensions==4.8.0 - # via - # -r requirements/base.txt - # asgiref - # edx-opaque-keys - # faker uritemplate==4.1.1 # via # -r requirements/base.txt + # coreapi # drf-yasg -urllib3==1.26.17 +urllib3==1.26.15 # via # -r requirements/base.txt # elasticsearch # requests -virtualenv==20.24.5 +virtualenv==20.21.0 # via tox wrapt==1.15.0 # via astroid + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/travis.txt b/requirements/travis.txt index 72399cd6..95c46152 100644 --- a/requirements/travis.txt +++ b/requirements/travis.txt @@ -4,30 +4,44 @@ # # make upgrade # -distlib==0.3.7 +certifi==2022.12.7 + # via requests +chardet==3.0.4 + # via requests +coverage==7.2.2 + # via codecov +distlib==0.3.6 # via virtualenv -filelock==3.12.4 +filelock==3.10.7 # via # tox # virtualenv -packaging==23.2 +idna==2.10 + # via requests +packaging==23.0 # via tox -platformdirs==3.11.0 +platformdirs==3.2.0 # via virtualenv -pluggy==1.3.0 +pluggy==1.0.0 # via tox py==1.11.0 # via tox +requests==2.25.0 + # via + # -c requirements/constraints.txt + # codecov six==1.16.0 # via tox tomli==2.0.1 # via tox tox==3.28.0 # via - # -c requirements/common_constraints.txt + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/travis.in # tox-battery -tox-battery==0.6.2 +tox-battery==0.6.1 # via -r requirements/travis.in -virtualenv==20.24.5 +urllib3==1.26.15 + # via requests +virtualenv==20.21.0 # via tox diff --git a/tox.ini b/tox.ini index 1809ae17..193a8372 100644 --- a/tox.ini +++ b/tox.ini @@ -1,9 +1,10 @@ [tox] -envlist = py38-django{42} +envlist = py38-django{32, 42} skipsdist = true [testenv] deps = + django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 -r {toxinidir}/requirements/test.txt passenv =