diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c41531c..9d6df3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,8 +41,8 @@ jobs: - name: Run coverage if: matrix.python-version == '3.12' && matrix.toxenv == 'django42' uses: codecov/codecov-action@v4 - working-directory: "./backend" with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests fail_ci_if_error: true + working-directory: "./backend" diff --git a/backend/manage.py b/backend/manage.py index 4afa5aa..c4c1f40 100644 --- a/backend/manage.py +++ b/backend/manage.py @@ -18,7 +18,7 @@ # issue is really that Django is missing to avoid masking other # exceptions on Python 2. try: - import django # pylint: disable=unused-import, wrong-import-position + import django # pylint: disable=unused-import except ImportError as import_error: raise ImportError( "Couldn't import Django. Are you sure it's installed and " diff --git a/backend/requirements/base.txt b/backend/requirements/base.txt new file mode 100644 index 0000000..055b87f --- /dev/null +++ b/backend/requirements/base.txt @@ -0,0 +1,16 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/base.txt requirements/base.in +# +asgiref==3.8.1 + # via django +django==4.2.20 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/base.in +openedx-atlas==0.7.0 + # via -r requirements/base.in +sqlparse==0.5.3 + # via django diff --git a/backend/requirements/ci.txt b/backend/requirements/ci.txt new file mode 100644 index 0000000..72bf120 --- /dev/null +++ b/backend/requirements/ci.txt @@ -0,0 +1,34 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/ci.txt requirements/ci.in +# +cachetools==5.5.2 + # via tox +chardet==5.2.0 + # via tox +colorama==0.4.6 + # via tox +distlib==0.3.9 + # via virtualenv +filelock==3.18.0 + # via + # tox + # virtualenv +packaging==24.2 + # via + # pyproject-api + # tox +platformdirs==4.3.7 + # via + # tox + # virtualenv +pluggy==1.5.0 + # via tox +pyproject-api==1.9.0 + # via tox +tox==4.25.0 + # via -r requirements/ci.in +virtualenv==20.30.0 + # via tox diff --git a/backend/requirements/dev.txt b/backend/requirements/dev.txt new file mode 100644 index 0000000..94b0222 --- /dev/null +++ b/backend/requirements/dev.txt @@ -0,0 +1,229 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/dev.txt requirements/dev.in +# +asgiref==3.8.1 + # via + # -r requirements/quality.txt + # django +astroid==3.3.9 + # via + # -r requirements/quality.txt + # pylint + # pylint-celery +build==1.2.2.post1 + # via + # -r requirements/pip-tools.txt + # pip-tools +cachetools==5.5.2 + # via + # -r requirements/ci.txt + # tox +chardet==5.2.0 + # via + # -r requirements/ci.txt + # diff-cover + # tox +click==8.1.8 + # via + # -r requirements/pip-tools.txt + # -r requirements/quality.txt + # click-log + # code-annotations + # edx-lint + # pip-tools +click-log==0.4.0 + # via + # -r requirements/quality.txt + # edx-lint +code-annotations==2.3.0 + # via + # -r requirements/quality.txt + # edx-lint +colorama==0.4.6 + # via + # -r requirements/ci.txt + # tox +coverage[toml]==7.8.0 + # via + # -r requirements/quality.txt + # pytest-cov +diff-cover==9.2.4 + # via -r requirements/dev.in +dill==0.3.9 + # via + # -r requirements/quality.txt + # pylint +distlib==0.3.9 + # via + # -r requirements/ci.txt + # virtualenv +django==4.2.20 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/quality.txt + # edx-i18n-tools +edx-i18n-tools==1.7.0 + # via -r requirements/dev.in +edx-lint==5.6.0 + # via -r requirements/quality.txt +filelock==3.18.0 + # via + # -r requirements/ci.txt + # tox + # virtualenv +iniconfig==2.1.0 + # via + # -r requirements/quality.txt + # pytest +isort==6.0.1 + # via + # -r requirements/quality.txt + # pylint +jinja2==3.1.6 + # via + # -r requirements/quality.txt + # code-annotations + # diff-cover +lxml[html-clean,html_clean]==5.3.2 + # via + # edx-i18n-tools + # lxml-html-clean +lxml-html-clean==0.4.2 + # via lxml +markupsafe==3.0.2 + # via + # -r requirements/quality.txt + # jinja2 +mccabe==0.7.0 + # via + # -r requirements/quality.txt + # pylint +openedx-atlas==0.7.0 + # via -r requirements/quality.txt +packaging==24.2 + # via + # -r requirements/ci.txt + # -r requirements/pip-tools.txt + # -r requirements/quality.txt + # build + # pyproject-api + # pytest + # tox +path==16.16.0 + # via edx-i18n-tools +pbr==6.1.1 + # via + # -r requirements/quality.txt + # stevedore +pip-tools==7.4.1 + # via -r requirements/pip-tools.txt +platformdirs==4.3.7 + # via + # -r requirements/ci.txt + # -r requirements/quality.txt + # pylint + # tox + # virtualenv +pluggy==1.5.0 + # via + # -r requirements/ci.txt + # -r requirements/quality.txt + # diff-cover + # pytest + # tox +polib==1.2.0 + # via edx-i18n-tools +pycodestyle==2.13.0 + # via -r requirements/quality.txt +pydocstyle==6.3.0 + # via -r requirements/quality.txt +pygments==2.19.1 + # via diff-cover +pylint==3.3.6 + # via + # -r requirements/quality.txt + # edx-lint + # pylint-celery + # pylint-django + # pylint-plugin-utils +pylint-celery==0.3 + # via + # -r requirements/quality.txt + # edx-lint +pylint-django==2.6.1 + # via + # -r requirements/quality.txt + # edx-lint +pylint-plugin-utils==0.8.2 + # via + # -r requirements/quality.txt + # pylint-celery + # pylint-django +pyproject-api==1.9.0 + # via + # -r requirements/ci.txt + # tox +pyproject-hooks==1.2.0 + # via + # -r requirements/pip-tools.txt + # build + # pip-tools +pytest==8.3.5 + # via + # -r requirements/quality.txt + # pytest-cov + # pytest-django +pytest-cov==6.1.1 + # via -r requirements/quality.txt +pytest-django==4.11.1 + # via -r requirements/quality.txt +python-slugify==8.0.4 + # via + # -r requirements/quality.txt + # code-annotations +pyyaml==6.0.2 + # via + # -r requirements/quality.txt + # code-annotations + # edx-i18n-tools +six==1.17.0 + # via + # -r requirements/quality.txt + # edx-lint +snowballstemmer==2.2.0 + # via + # -r requirements/quality.txt + # pydocstyle +sqlparse==0.5.3 + # via + # -r requirements/quality.txt + # django +stevedore==5.4.1 + # via + # -r requirements/quality.txt + # code-annotations +text-unidecode==1.3 + # via + # -r requirements/quality.txt + # python-slugify +tomlkit==0.13.2 + # via + # -r requirements/quality.txt + # pylint +tox==4.25.0 + # via -r requirements/ci.txt +virtualenv==20.30.0 + # via + # -r requirements/ci.txt + # tox +wheel==0.45.1 + # via + # -r requirements/pip-tools.txt + # pip-tools + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/backend/requirements/doc.txt b/backend/requirements/doc.txt new file mode 100644 index 0000000..66b2d64 --- /dev/null +++ b/backend/requirements/doc.txt @@ -0,0 +1,213 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/doc.txt requirements/doc.in +# +accessible-pygments==0.0.5 + # via pydata-sphinx-theme +alabaster==1.0.0 + # via sphinx +asgiref==3.8.1 + # via + # -r requirements/test.txt + # django +babel==2.17.0 + # via + # pydata-sphinx-theme + # sphinx +beautifulsoup4==4.13.3 + # via pydata-sphinx-theme +build==1.2.2.post1 + # via -r requirements/doc.in +certifi==2025.1.31 + # via requests +cffi==1.17.1 + # via cryptography +charset-normalizer==3.4.1 + # via requests +click==8.1.8 + # via + # -r requirements/test.txt + # code-annotations +code-annotations==2.3.0 + # via -r requirements/test.txt +coverage[toml]==7.8.0 + # via + # -r requirements/test.txt + # pytest-cov +cryptography==44.0.2 + # via secretstorage +django==4.2.20 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/test.txt +doc8==1.1.2 + # via -r requirements/doc.in +docutils==0.21.2 + # via + # doc8 + # pydata-sphinx-theme + # readme-renderer + # restructuredtext-lint + # sphinx +id==1.5.0 + # via twine +idna==3.10 + # via requests +imagesize==1.4.1 + # via sphinx +iniconfig==2.1.0 + # via + # -r requirements/test.txt + # pytest +jaraco-classes==3.4.0 + # via keyring +jaraco-context==6.0.1 + # via keyring +jaraco-functools==4.1.0 + # via keyring +jeepney==0.9.0 + # via + # keyring + # secretstorage +jinja2==3.1.6 + # via + # -r requirements/test.txt + # code-annotations + # sphinx +keyring==25.6.0 + # via twine +markdown-it-py==3.0.0 + # via rich +markupsafe==3.0.2 + # via + # -r requirements/test.txt + # jinja2 +mdurl==0.1.2 + # via markdown-it-py +more-itertools==10.6.0 + # via + # jaraco-classes + # jaraco-functools +nh3==0.2.21 + # via readme-renderer +openedx-atlas==0.7.0 + # via -r requirements/test.txt +packaging==24.2 + # via + # -r requirements/test.txt + # build + # pydata-sphinx-theme + # pytest + # sphinx + # twine +pbr==6.1.1 + # via + # -r requirements/test.txt + # stevedore +pluggy==1.5.0 + # via + # -r requirements/test.txt + # pytest +pycparser==2.22 + # via cffi +pydata-sphinx-theme==0.15.4 + # via sphinx-book-theme +pygments==2.19.1 + # via + # accessible-pygments + # doc8 + # pydata-sphinx-theme + # readme-renderer + # rich + # sphinx +pyproject-hooks==1.2.0 + # via build +pytest==8.3.5 + # via + # -r requirements/test.txt + # pytest-cov + # pytest-django +pytest-cov==6.1.1 + # via -r requirements/test.txt +pytest-django==4.11.1 + # via -r requirements/test.txt +python-slugify==8.0.4 + # via + # -r requirements/test.txt + # code-annotations +pyyaml==6.0.2 + # via + # -r requirements/test.txt + # code-annotations +readme-renderer==44.0 + # via twine +requests==2.32.3 + # via + # id + # requests-toolbelt + # sphinx + # twine +requests-toolbelt==1.0.0 + # via twine +restructuredtext-lint==1.4.0 + # via doc8 +rfc3986==2.0.0 + # via twine +rich==14.0.0 + # via twine +roman-numerals-py==3.1.0 + # via sphinx +secretstorage==3.3.3 + # via keyring +snowballstemmer==2.2.0 + # via sphinx +soupsieve==2.6 + # via beautifulsoup4 +sphinx==8.2.3 + # via + # -r requirements/doc.in + # pydata-sphinx-theme + # sphinx-book-theme +sphinx-book-theme==1.1.4 + # via -r requirements/doc.in +sphinxcontrib-applehelp==2.0.0 + # via sphinx +sphinxcontrib-devhelp==2.0.0 + # via sphinx +sphinxcontrib-htmlhelp==2.1.0 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==2.0.0 + # via sphinx +sphinxcontrib-serializinghtml==2.0.0 + # via sphinx +sqlparse==0.5.3 + # via + # -r requirements/test.txt + # django +stevedore==5.4.1 + # via + # -r requirements/test.txt + # code-annotations + # doc8 +text-unidecode==1.3 + # via + # -r requirements/test.txt + # python-slugify +twine==6.1.0 + # via -r requirements/doc.in +typing-extensions==4.13.2 + # via + # beautifulsoup4 + # pydata-sphinx-theme +urllib3==2.2.3 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # requests + # twine + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/backend/requirements/pip-tools.txt b/backend/requirements/pip-tools.txt index 173c2a2..135b80b 100644 --- a/backend/requirements/pip-tools.txt +++ b/backend/requirements/pip-tools.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# make upgrade +# pip-compile --output-file=requirements/pip-tools.txt requirements/pip-tools.in # build==1.2.2.post1 # via pip-tools @@ -11,7 +11,7 @@ click==8.1.8 packaging==24.2 # via build pip-tools==7.4.1 - # via -r python-template/placeholder_repo_name_0/requirements/pip-tools.in + # via -r requirements/pip-tools.in pyproject-hooks==1.2.0 # via # build diff --git a/backend/requirements/pip.txt b/backend/requirements/pip.txt index 91c484c..668fb1f 100644 --- a/backend/requirements/pip.txt +++ b/backend/requirements/pip.txt @@ -2,13 +2,15 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# make upgrade +# pip-compile --allow-unsafe --output-file=requirements/pip.txt requirements/pip.in # wheel==0.45.1 - # via -r python-template/placeholder_repo_name_0/requirements/pip.in + # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==25.0.1 - # via -r python-template/placeholder_repo_name_0/requirements/pip.in +pip==24.2 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/pip.in setuptools==78.1.0 - # via -r python-template/placeholder_repo_name_0/requirements/pip.in + # via -r requirements/pip.in diff --git a/backend/requirements/quality.txt b/backend/requirements/quality.txt new file mode 100644 index 0000000..0a45588 --- /dev/null +++ b/backend/requirements/quality.txt @@ -0,0 +1,128 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/quality.txt requirements/quality.in +# +asgiref==3.8.1 + # via + # -r requirements/test.txt + # django +astroid==3.3.9 + # via + # pylint + # pylint-celery +click==8.1.8 + # via + # -r requirements/test.txt + # click-log + # code-annotations + # edx-lint +click-log==0.4.0 + # via edx-lint +code-annotations==2.3.0 + # via + # -r requirements/test.txt + # edx-lint +coverage[toml]==7.8.0 + # via + # -r requirements/test.txt + # pytest-cov +dill==0.3.9 + # via pylint +django==4.2.20 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/test.txt +edx-lint==5.6.0 + # via -r requirements/quality.in +iniconfig==2.1.0 + # via + # -r requirements/test.txt + # pytest +isort==6.0.1 + # via + # -r requirements/quality.in + # pylint +jinja2==3.1.6 + # via + # -r requirements/test.txt + # code-annotations +markupsafe==3.0.2 + # via + # -r requirements/test.txt + # jinja2 +mccabe==0.7.0 + # via pylint +openedx-atlas==0.7.0 + # via -r requirements/test.txt +packaging==24.2 + # via + # -r requirements/test.txt + # pytest +pbr==6.1.1 + # via + # -r requirements/test.txt + # stevedore +platformdirs==4.3.7 + # via pylint +pluggy==1.5.0 + # via + # -r requirements/test.txt + # pytest +pycodestyle==2.13.0 + # via -r requirements/quality.in +pydocstyle==6.3.0 + # via -r requirements/quality.in +pylint==3.3.6 + # via + # edx-lint + # pylint-celery + # pylint-django + # pylint-plugin-utils +pylint-celery==0.3 + # via edx-lint +pylint-django==2.6.1 + # via edx-lint +pylint-plugin-utils==0.8.2 + # via + # pylint-celery + # pylint-django +pytest==8.3.5 + # via + # -r requirements/test.txt + # pytest-cov + # pytest-django +pytest-cov==6.1.1 + # via -r requirements/test.txt +pytest-django==4.11.1 + # via -r requirements/test.txt +python-slugify==8.0.4 + # via + # -r requirements/test.txt + # code-annotations +pyyaml==6.0.2 + # via + # -r requirements/test.txt + # code-annotations +six==1.17.0 + # via edx-lint +snowballstemmer==2.2.0 + # via pydocstyle +sqlparse==0.5.3 + # via + # -r requirements/test.txt + # django +stevedore==5.4.1 + # via + # -r requirements/test.txt + # code-annotations +text-unidecode==1.3 + # via + # -r requirements/test.txt + # python-slugify +tomlkit==0.13.2 + # via pylint + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/backend/requirements/test.txt b/backend/requirements/test.txt new file mode 100644 index 0000000..01c6455 --- /dev/null +++ b/backend/requirements/test.txt @@ -0,0 +1,56 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --output-file=requirements/test.txt requirements/test.in +# +asgiref==3.8.1 + # via + # -r requirements/base.txt + # django +click==8.1.8 + # via code-annotations +code-annotations==2.3.0 + # via -r requirements/test.in +coverage[toml]==7.8.0 + # via pytest-cov + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # -r requirements/base.txt +iniconfig==2.1.0 + # via pytest +jinja2==3.1.6 + # via code-annotations +markupsafe==3.0.2 + # via jinja2 +openedx-atlas==0.7.0 + # via -r requirements/base.txt +packaging==24.2 + # via pytest +pbr==6.1.1 + # via stevedore +pluggy==1.5.0 + # via pytest +pytest==8.3.5 + # via + # pytest-cov + # pytest-django +pytest-cov==6.1.1 + # via -r requirements/test.in +pytest-django==4.11.1 + # via -r requirements/test.in +python-slugify==8.0.4 + # via code-annotations +pyyaml==6.0.2 + # via code-annotations +sqlparse==0.5.3 + # via + # -r requirements/base.txt + # django +stevedore==5.4.1 + # via code-annotations +text-unidecode==1.3 + # via python-slugify + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/backend/sample_plugin/__init__.py b/backend/sample_plugin/__init__.py index 1bfc585..5de8b3f 100644 --- a/backend/sample_plugin/__init__.py +++ b/backend/sample_plugin/__init__.py @@ -1,5 +1,5 @@ """ -A sample backend plugin for the Open edX Platform +A sample backend plugin for the Open edX Platform. """ __version__ = '0.1.0'