diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..5967fe523 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,38 @@ +name: Python CI + +on: + push: + branches: [ main ] + pull_request: + branches: + - '**' + + +jobs: + run_tests: + name: tests + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python-version: ['3.8', '3.9', '3.10', '3.11'] +# django-version: ['3.2', '4.0', '4.1', '4.2'] +# toxenv: ["py38", "quality", "docs", "pii_check"] + + steps: + - uses: actions/checkout@v3 + - name: setup python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install pip + run: pip install -r requirements/pip.txt + + - name: Install Dependencies + run: pip install -r requirements/ci.txt + + - name: Run Tests + env: + TOXENV: ${{ matrix.toxenv }} + run: pytest tests diff --git a/requirements/base.txt b/requirements/base.txt index 7c80551d3..8b0378a3f 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ # asgiref==3.6.0 # via django -django==3.2.18 +django==3.2.19 # via # -r requirements/base.in # djangorestframework @@ -16,5 +16,5 @@ pytz==2023.3 # via # django # djangorestframework -sqlparse==0.4.3 +sqlparse==0.4.4 # via django diff --git a/requirements/ci.in b/requirements/ci.in index 8776af102..1cbfe5524 100644 --- a/requirements/ci.in +++ b/requirements/ci.in @@ -1,6 +1,13 @@ # Requirements for running tests on CI -c constraints.txt +-r base.txt # Core dependencies for this package + coverage # Code coverage reporting tox # Virtualenv management for tests import-linter # Track our internal dependencies +pytest # Testing + +# pytest-cov # pytest extension for code coverage statistics +# pytest-django # pytest extension for better Django support +# code-annotations # provides commands used by the pii_check make target. diff --git a/requirements/ci.txt b/requirements/ci.txt index e6ca7b96a..b7e60add1 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,6 +4,10 @@ # # make upgrade # +asgiref==3.6.0 + # via + # -r requirements/base.txt + # django cachetools==5.3.0 # via tox chardet==5.1.0 @@ -12,40 +16,65 @@ click==8.1.3 # via import-linter colorama==0.4.6 # via tox -coverage==7.2.3 +coverage==7.2.5 # via -r requirements/ci.in distlib==0.3.6 # via virtualenv -filelock==3.11.0 +django==3.2.19 + # via + # -r requirements/base.txt + # djangorestframework +djangorestframework==3.14.0 + # via -r requirements/base.txt +exceptiongroup==1.1.1 + # via pytest +filelock==3.12.0 # via # tox # virtualenv -grimp==2.3 +grimp==2.4 # via import-linter import-linter==1.8.0 # via -r requirements/ci.in +iniconfig==2.0.0 + # via pytest packaging==23.1 # via # pyproject-api + # pytest # tox -platformdirs==3.2.0 +platformdirs==3.5.1 # via # tox # virtualenv pluggy==1.0.0 - # via tox + # via + # pytest + # tox pyproject-api==1.5.1 # via tox +pytest==7.3.1 + # via -r requirements/ci.in +pytz==2023.3 + # via + # -r requirements/base.txt + # django + # djangorestframework +sqlparse==0.4.4 + # via + # -r requirements/base.txt + # django tomli==2.0.1 # via # import-linter # pyproject-api + # pytest # tox -tox==4.4.12 +tox==4.5.1 # via -r requirements/ci.in typing-extensions==4.5.0 # via # grimp # import-linter -virtualenv==20.21.0 +virtualenv==20.23.0 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 2fbb634cf..d15c2573a 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -6,9 +6,10 @@ # asgiref==3.6.0 # via + # -r requirements/ci.txt # -r requirements/quality.txt # django -astroid==2.15.2 +astroid==2.15.4 # via # -r requirements/quality.txt # pylint @@ -24,14 +25,16 @@ build==0.10.0 cachetools==5.3.0 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox -certifi==2022.12.7 +certifi==2023.5.7 # via # -r requirements/quality.txt # requests chardet==5.1.0 # via # -r requirements/ci.txt + # -r requirements/quality.txt # diff-cover # tox charset-normalizer==3.1.0 @@ -59,8 +62,9 @@ code-annotations==1.3.0 colorama==0.4.6 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox -coverage[toml]==7.2.3 +coverage[toml]==7.2.5 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -74,15 +78,19 @@ dill==0.3.6 distlib==0.3.6 # via # -r requirements/ci.txt + # -r requirements/quality.txt # virtualenv -django==3.2.18 +django==3.2.19 # via + # -r requirements/ci.txt # -r requirements/quality.txt # djangorestframework # edx-i18n-tools djangorestframework==3.14.0 - # via -r requirements/quality.txt -docutils==0.19 + # via + # -r requirements/ci.txt + # -r requirements/quality.txt +docutils==0.20 # via # -r requirements/quality.txt # readme-renderer @@ -92,24 +100,29 @@ edx-lint==5.3.4 # via -r requirements/quality.txt exceptiongroup==1.1.1 # via + # -r requirements/ci.txt # -r requirements/quality.txt # pytest -filelock==3.11.0 +filelock==3.12.0 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox # virtualenv -grimp==2.3 +grimp==2.4 # via # -r requirements/ci.txt + # -r requirements/quality.txt # import-linter idna==3.4 # via # -r requirements/quality.txt # requests import-linter==1.8.0 - # via -r requirements/ci.txt -importlib-metadata==6.3.0 + # via + # -r requirements/ci.txt + # -r requirements/quality.txt +importlib-metadata==6.6.0 # via # -r requirements/quality.txt # keyring @@ -120,6 +133,7 @@ importlib-resources==5.12.0 # keyring iniconfig==2.0.0 # via + # -r requirements/ci.txt # -r requirements/quality.txt # pytest isort==5.12.0 @@ -184,7 +198,7 @@ pkginfo==1.9.6 # via # -r requirements/quality.txt # twine -platformdirs==3.2.0 +platformdirs==3.5.1 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -204,13 +218,13 @@ pycodestyle==2.10.0 # via -r requirements/quality.txt pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.15.0 +pygments==2.15.1 # via # -r requirements/quality.txt # diff-cover # readme-renderer # rich -pylint==2.17.2 +pylint==2.17.4 # via # -r requirements/quality.txt # edx-lint @@ -233,13 +247,15 @@ pylint-plugin-utils==0.7 pyproject-api==1.5.1 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox pyproject-hooks==1.0.0 # via # -r requirements/pip-tools.txt # build -pytest==7.3.0 +pytest==7.3.1 # via + # -r requirements/ci.txt # -r requirements/quality.txt # pytest-cov # pytest-django @@ -253,6 +269,7 @@ python-slugify==8.0.1 # code-annotations pytz==2023.3 # via + # -r requirements/ci.txt # -r requirements/quality.txt # django # djangorestframework @@ -265,12 +282,12 @@ readme-renderer==37.3 # via # -r requirements/quality.txt # twine -requests==2.28.2 +requests==2.30.0 # via # -r requirements/quality.txt # requests-toolbelt # twine -requests-toolbelt==0.10.1 +requests-toolbelt==1.0.0 # via # -r requirements/quality.txt # twine @@ -278,7 +295,7 @@ rfc3986==2.0.0 # via # -r requirements/quality.txt # twine -rich==13.3.4 +rich==13.3.5 # via # -r requirements/quality.txt # twine @@ -291,8 +308,9 @@ snowballstemmer==2.2.0 # via # -r requirements/quality.txt # pydocstyle -sqlparse==0.4.3 +sqlparse==0.4.4 # via + # -r requirements/ci.txt # -r requirements/quality.txt # django stevedore==5.0.0 @@ -316,13 +334,14 @@ tomli==2.0.1 # pyproject-hooks # pytest # tox -tomlkit==0.11.7 +tomlkit==0.11.8 # via # -r requirements/quality.txt # pylint -tox==4.4.12 +tox==4.5.1 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox-battery tox-battery==0.6.1 # via -r requirements/dev.in @@ -337,14 +356,15 @@ typing-extensions==4.5.0 # import-linter # pylint # rich -urllib3==1.26.15 +urllib3==2.0.2 # via # -r requirements/quality.txt # requests # twine -virtualenv==20.21.0 +virtualenv==20.23.0 # via # -r requirements/ci.txt + # -r requirements/quality.txt # tox webencodings==0.5.1 # via diff --git a/requirements/doc.txt b/requirements/doc.txt index bd988df39..9fc95184f 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -6,43 +6,52 @@ # accessible-pygments==0.0.4 # via pydata-sphinx-theme -alabaster==0.7.12 +alabaster==0.7.13 # via sphinx asgiref==3.6.0 # via # -r requirements/test.txt # django -attrs==22.1.0 - # via - # -r requirements/test.txt - # pytest -babel==2.10.3 +babel==2.12.1 # via # pydata-sphinx-theme # sphinx -backports-zoneinfo==0.2.1 - # via - # -r requirements/test.txt - # django beautifulsoup4==4.12.2 # via pydata-sphinx-theme -bleach==5.0.1 +bleach==6.0.0 # via readme-renderer -certifi==2022.12.7 +cachetools==5.3.0 + # via + # -r requirements/test.txt + # tox +certifi==2023.5.7 # via requests +chardet==5.1.0 + # via + # -r requirements/test.txt + # tox charset-normalizer==3.1.0 # via requests click==8.1.3 # via # -r requirements/test.txt # code-annotations + # import-linter code-annotations==1.3.0 # via -r requirements/test.txt -coverage[toml]==7.2.3 +colorama==0.4.6 + # via + # -r requirements/test.txt + # tox +coverage[toml]==7.2.5 # via # -r requirements/test.txt # pytest-cov -django==3.2.18 +distlib==0.3.6 + # via + # -r requirements/test.txt + # virtualenv +django==3.2.19 # via # -r requirements/test.txt # djangorestframework @@ -58,11 +67,26 @@ docutils==0.19 # readme-renderer # restructuredtext-lint # sphinx -idna==3.3 +exceptiongroup==1.1.1 + # via + # -r requirements/test.txt + # pytest +filelock==3.12.0 + # via + # -r requirements/test.txt + # tox + # virtualenv +grimp==2.4 + # via + # -r requirements/test.txt + # import-linter +idna==3.4 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==6.3.0 +import-linter==1.8.0 + # via -r requirements/test.txt +importlib-metadata==6.6.0 # via sphinx iniconfig==2.0.0 # via @@ -81,30 +105,40 @@ packaging==23.1 # via # -r requirements/test.txt # pydata-sphinx-theme + # pyproject-api # pytest # sphinx + # tox pbr==5.11.1 # via # -r requirements/test.txt # stevedore -pluggy==1.0.0 +platformdirs==3.5.1 # via # -r requirements/test.txt - # pytest -py==1.11.0 + # tox + # virtualenv +pluggy==1.0.0 # via # -r requirements/test.txt # pytest + # tox +pprintpp==0.4.0 + # via sphinxcontrib-django pydata-sphinx-theme==0.13.3 # via sphinx-book-theme -pygments==2.13.0 +pygments==2.15.1 # via # accessible-pygments # doc8 # pydata-sphinx-theme # readme-renderer # sphinx -pytest==7.3.0 +pyproject-api==1.5.1 + # via + # -r requirements/test.txt + # tox +pytest==7.3.1 # via # -r requirements/test.txt # pytest-cov @@ -129,7 +163,7 @@ pyyaml==6.0 # code-annotations readme-renderer==37.3 # via -r requirements/doc.in -requests==2.28.2 +requests==2.30.0 # via sphinx restructuredtext-lint==1.4.0 # via doc8 @@ -139,14 +173,15 @@ snowballstemmer==2.2.0 # via sphinx soupsieve==2.4.1 # via beautifulsoup4 -sphinx==5.1.1 +sphinx==6.2.1 # via # -r requirements/doc.in # pydata-sphinx-theme # sphinx-book-theme + # sphinxcontrib-django sphinx-book-theme==1.0.1 # via -r requirements/doc.in -sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-applehelp==1.0.4 # via sphinx sphinxcontrib-devhelp==1.0.2 # via sphinx @@ -160,7 +195,7 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -sqlparse==0.4.3 +sqlparse==0.4.4 # via # -r requirements/test.txt # django @@ -178,11 +213,24 @@ tomli==2.0.1 # -r requirements/test.txt # coverage # doc8 + # import-linter + # pyproject-api # pytest + # tox +tox==4.5.1 + # via -r requirements/test.txt typing-extensions==4.5.0 - # via pydata-sphinx-theme -urllib3==1.26.12 + # via + # -r requirements/test.txt + # grimp + # import-linter + # pydata-sphinx-theme +urllib3==2.0.2 # via requests +virtualenv==20.23.0 + # via + # -r requirements/test.txt + # tox webencodings==0.5.1 # via bleach zipp==3.15.0 diff --git a/requirements/quality.txt b/requirements/quality.txt index 134d429a1..c3da621a8 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -8,14 +8,22 @@ asgiref==3.6.0 # via # -r requirements/test.txt # django -astroid==2.15.2 +astroid==2.15.4 # via # pylint # pylint-celery bleach==6.0.0 # via readme-renderer -certifi==2022.12.7 +cachetools==5.3.0 + # via + # -r requirements/test.txt + # tox +certifi==2023.5.7 # via requests +chardet==5.1.0 + # via + # -r requirements/test.txt + # tox charset-normalizer==3.1.0 # via requests click==8.1.3 @@ -24,25 +32,34 @@ click==8.1.3 # click-log # code-annotations # edx-lint + # import-linter click-log==0.4.0 # via edx-lint code-annotations==1.3.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.2.3 +colorama==0.4.6 + # via + # -r requirements/test.txt + # tox +coverage[toml]==7.2.5 # via # -r requirements/test.txt # pytest-cov dill==0.3.6 # via pylint -django==3.2.18 +distlib==0.3.6 + # via + # -r requirements/test.txt + # virtualenv +django==3.2.19 # via # -r requirements/test.txt # djangorestframework djangorestframework==3.14.0 # via -r requirements/test.txt -docutils==0.19 +docutils==0.20 # via readme-renderer edx-lint==5.3.4 # via -r requirements/quality.in @@ -50,9 +67,20 @@ exceptiongroup==1.1.1 # via # -r requirements/test.txt # pytest +filelock==3.12.0 + # via + # -r requirements/test.txt + # tox + # virtualenv +grimp==2.4 + # via + # -r requirements/test.txt + # import-linter idna==3.4 # via requests -importlib-metadata==6.3.0 +import-linter==1.8.0 + # via -r requirements/test.txt +importlib-metadata==6.6.0 # via # keyring # twine @@ -91,28 +119,35 @@ more-itertools==9.1.0 packaging==23.1 # via # -r requirements/test.txt + # pyproject-api # pytest + # tox pbr==5.11.1 # via # -r requirements/test.txt # stevedore pkginfo==1.9.6 # via twine -platformdirs==3.2.0 - # via pylint +platformdirs==3.5.1 + # via + # -r requirements/test.txt + # pylint + # tox + # virtualenv pluggy==1.0.0 # via # -r requirements/test.txt # pytest + # tox pycodestyle==2.10.0 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.15.0 +pygments==2.15.1 # via # readme-renderer # rich -pylint==2.17.2 +pylint==2.17.4 # via # edx-lint # pylint-celery @@ -126,7 +161,11 @@ pylint-plugin-utils==0.7 # via # pylint-celery # pylint-django -pytest==7.3.0 +pyproject-api==1.5.1 + # via + # -r requirements/test.txt + # tox +pytest==7.3.1 # via # -r requirements/test.txt # pytest-cov @@ -150,15 +189,15 @@ pyyaml==6.0 # code-annotations readme-renderer==37.3 # via twine -requests==2.28.2 +requests==2.30.0 # via # requests-toolbelt # twine -requests-toolbelt==0.10.1 +requests-toolbelt==1.0.0 # via twine rfc3986==2.0.0 # via twine -rich==13.3.4 +rich==13.3.5 # via twine six==1.16.0 # via @@ -166,7 +205,7 @@ six==1.16.0 # edx-lint snowballstemmer==2.2.0 # via pydocstyle -sqlparse==0.4.3 +sqlparse==0.4.4 # via # -r requirements/test.txt # django @@ -182,21 +221,33 @@ tomli==2.0.1 # via # -r requirements/test.txt # coverage + # import-linter # pylint + # pyproject-api # pytest -tomlkit==0.11.7 + # tox +tomlkit==0.11.8 # via pylint +tox==4.5.1 + # via -r requirements/test.txt twine==4.0.2 # via -r requirements/quality.in typing-extensions==4.5.0 # via + # -r requirements/test.txt # astroid + # grimp + # import-linter # pylint # rich -urllib3==1.26.15 +urllib3==2.0.2 # via # requests # twine +virtualenv==20.23.0 + # via + # -r requirements/test.txt + # tox webencodings==0.5.1 # via bleach wrapt==1.15.0 diff --git a/requirements/test.in b/requirements/test.in index 6797160bf..a8fe084c2 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -3,6 +3,4 @@ -r base.txt # Core dependencies for this package -pytest-cov # pytest extension for code coverage statistics -pytest-django # pytest extension for better Django support -code-annotations # provides commands used by the pii_check make target. +-r ci.txt diff --git a/requirements/test.txt b/requirements/test.txt index 9410f3893..a3f6f2477 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -7,58 +7,146 @@ asgiref==3.6.0 # via # -r requirements/base.txt + # -r requirements/ci.txt # django +cachetools==5.3.0 + # via + # -r requirements/ci.txt + # tox +chardet==5.1.0 + # via + # -r requirements/ci.txt + # tox click==8.1.3 - # via code-annotations + # via + # -r requirements/ci.txt + # code-annotations + # import-linter code-annotations==1.3.0 - # via -r requirements/test.in -coverage[toml]==7.2.3 - # via pytest-cov + # via -r requirements/ci.txt +colorama==0.4.6 + # via + # -r requirements/ci.txt + # tox +coverage[toml]==7.2.5 + # via + # -r requirements/ci.txt + # pytest-cov +distlib==0.3.6 + # via + # -r requirements/ci.txt + # virtualenv # via # -r requirements/base.txt + # -r requirements/ci.txt # djangorestframework djangorestframework==3.14.0 - # via -r requirements/base.txt + # via + # -r requirements/base.txt + # -r requirements/ci.txt exceptiongroup==1.1.1 - # via pytest + # via + # -r requirements/ci.txt + # pytest +filelock==3.12.0 + # via + # -r requirements/ci.txt + # tox + # virtualenv +grimp==2.4 + # via + # -r requirements/ci.txt + # import-linter +import-linter==1.8.0 + # via -r requirements/ci.txt iniconfig==2.0.0 - # via pytest + # via + # -r requirements/ci.txt + # pytest jinja2==3.1.2 - # via code-annotations + # via + # -r requirements/ci.txt + # code-annotations markupsafe==2.1.2 - # via jinja2 + # via + # -r requirements/ci.txt + # jinja2 packaging==23.1 - # via pytest + # via + # -r requirements/ci.txt + # pyproject-api + # pytest + # tox pbr==5.11.1 - # via stevedore + # via + # -r requirements/ci.txt + # stevedore +platformdirs==3.5.1 + # via + # -r requirements/ci.txt + # tox + # virtualenv pluggy==1.0.0 - # via pytest -pytest==7.3.0 # via + # -r requirements/ci.txt + # pytest + # tox +pyproject-api==1.5.1 + # via + # -r requirements/ci.txt + # tox +pytest==7.3.1 + # via + # -r requirements/ci.txt # pytest-cov # pytest-django pytest-cov==4.0.0 - # via -r requirements/test.in + # via -r requirements/ci.txt pytest-django==4.5.2 - # via -r requirements/test.in + # via -r requirements/ci.txt python-slugify==8.0.1 - # via code-annotations + # via + # -r requirements/ci.txt + # code-annotations pytz==2023.3 # via # -r requirements/base.txt + # -r requirements/ci.txt # django # djangorestframework pyyaml==6.0 - # via code-annotations -sqlparse==0.4.3 + # via + # -r requirements/ci.txt + # code-annotations +sqlparse==0.4.4 # via # -r requirements/base.txt + # -r requirements/ci.txt # django stevedore==5.0.0 - # via code-annotations + # via + # -r requirements/ci.txt + # code-annotations text-unidecode==1.3 - # via python-slugify + # via + # -r requirements/ci.txt + # python-slugify tomli==2.0.1 # via + # -r requirements/ci.txt # coverage + # import-linter + # pyproject-api # pytest + # tox +tox==4.5.1 + # via -r requirements/ci.txt +typing-extensions==4.5.0 + # via + # -r requirements/ci.txt + # grimp + # import-linter +virtualenv==20.23.0 + # via + # -r requirements/ci.txt + # tox