diff --git a/credentials/apps/badges/apps.py b/credentials/apps/badges/apps.py index 2f5110b7e..767bbbd76 100644 --- a/credentials/apps/badges/apps.py +++ b/credentials/apps/badges/apps.py @@ -1,29 +1,16 @@ from django.apps import AppConfig -from credentials.apps.plugins.constants import ( - PluginURLs, - PluginSettings, - SettingsType, - PROJECT_TYPE, -) + +from .toggles import is_badges_enabled class BadgesConfig(AppConfig): name = "credentials.apps.badges" verbose_name = "Badges" - plugin_app = { - PluginURLs.CONFIG: { - PROJECT_TYPE: { - PluginURLs.NAMESPACE: 'badges', - PluginURLs.REGEX: 'badges/', - PluginURLs.RELATIVE_PATH: 'urls', - } - }, - PluginSettings.CONFIG: { - PROJECT_TYPE: { - SettingsType.BASE: {PluginSettings.RELATIVE_PATH: 'settings.base'}, - SettingsType.PRODUCTION: {PluginSettings.RELATIVE_PATH: 'settings.production'}, - SettingsType.TEST: {PluginSettings.RELATIVE_PATH: 'settings.test'}, - }, - } - } + def ready(self): + """ + Performs initial registrations for checks, signals, etc. + """ + if is_badges_enabled(): + from . import signals # pylint: disable=unused-import,import-outside-toplevel + from . checks import badges_checks # pylint: disable=unused-import,import-outside-toplevel diff --git a/credentials/apps/badges/checks.py b/credentials/apps/badges/checks.py index 1f42142c1..80a64c237 100644 --- a/credentials/apps/badges/checks.py +++ b/credentials/apps/badges/checks.py @@ -1,3 +1,12 @@ """ -Badges checks +Badges checks. """ +from django.core.checks import Error, Tags, register + + +@register(Tags.compatibility) +def badges_checks(*args, **kwargs): + """ + """ + errors = [] + return errors \ No newline at end of file diff --git a/credentials/apps/badges/distribution/credly_badges/__init__.py b/credentials/apps/badges/distribution/credly/README.rst similarity index 100% rename from credentials/apps/badges/distribution/credly_badges/__init__.py rename to credentials/apps/badges/distribution/credly/README.rst diff --git a/credentials/apps/badges/distribution/credly/credly_badges/LICENSE.txt b/credentials/apps/badges/distribution/credly/credly_badges/LICENSE.txt new file mode 100644 index 000000000..7a4a3ea24 --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/credentials/apps/badges/distribution/credly/credly_badges/__init__.py b/credentials/apps/badges/distribution/credly/credly_badges/__init__.py new file mode 100644 index 000000000..b07e51fdb --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/__init__.py @@ -0,0 +1,7 @@ +""" +Init module for credly_badges. +""" + +from __future__ import unicode_literals + +__version__ = "0.0.1" diff --git a/credentials/apps/badges/distribution/credly/credly_badges/apps.py b/credentials/apps/badges/distribution/credly/credly_badges/apps.py new file mode 100644 index 000000000..458fe9423 --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/apps.py @@ -0,0 +1,29 @@ +from django.apps import AppConfig +from credentials.apps.plugins.constants import ( + PluginURLs, + PluginSettings, + SettingsType, + PROJECT_TYPE, +) + + +class CredlyBadgesConfig(AppConfig): + name = "credly_badges" + verbose_name = "Credly Badges" + + plugin_app = { + PluginURLs.CONFIG: { + PROJECT_TYPE: { + PluginURLs.NAMESPACE: 'credly_badges', + PluginURLs.REGEX: 'credly_badges/', + PluginURLs.RELATIVE_PATH: 'urls', + } + }, + PluginSettings.CONFIG: { + PROJECT_TYPE: { + SettingsType.BASE: {PluginSettings.RELATIVE_PATH: 'settings.base'}, + SettingsType.PRODUCTION: {PluginSettings.RELATIVE_PATH: 'settings.production'}, + SettingsType.TEST: {PluginSettings.RELATIVE_PATH: 'settings.test'}, + }, + } + } diff --git a/credentials/apps/badges/distribution/credly/credly_badges/requirements/base.in b/credentials/apps/badges/distribution/credly/credly_badges/requirements/base.in new file mode 100644 index 000000000..537d3a3c0 --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/requirements/base.in @@ -0,0 +1,4 @@ +# Main requirements of the plugin application. +-c constraints.txt + +credentials.apps.badges \ No newline at end of file diff --git a/credentials/apps/badges/distribution/credly/credly_badges/requirements/constraints.txt b/credentials/apps/badges/distribution/credly/credly_badges/requirements/constraints.txt new file mode 100644 index 000000000..94595ab16 --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/requirements/constraints.txt @@ -0,0 +1,9 @@ +# 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. +# +# When pinning something here, please provide an explanation of why. 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. diff --git a/credentials/apps/badges/settings/base.py b/credentials/apps/badges/distribution/credly/credly_badges/settings/base.py similarity index 74% rename from credentials/apps/badges/settings/base.py rename to credentials/apps/badges/distribution/credly/credly_badges/settings/base.py index 0b1a5982e..f7f821281 100644 --- a/credentials/apps/badges/settings/base.py +++ b/credentials/apps/badges/distribution/credly/credly_badges/settings/base.py @@ -1,5 +1,5 @@ """ -Badges base settings. +Credly Badges base settings. """ def plugin_settings(settings): # pylint: disable=unused-argument diff --git a/credentials/apps/badges/settings/production.py b/credentials/apps/badges/distribution/credly/credly_badges/settings/production.py similarity index 70% rename from credentials/apps/badges/settings/production.py rename to credentials/apps/badges/distribution/credly/credly_badges/settings/production.py index 1f2087330..636d63b1a 100644 --- a/credentials/apps/badges/settings/production.py +++ b/credentials/apps/badges/distribution/credly/credly_badges/settings/production.py @@ -1,5 +1,5 @@ """ -Badges production settings. +Credly Badges production settings. """ def plugin_settings(settings): # pylint: disable=unused-argument diff --git a/credentials/apps/badges/settings/test.py b/credentials/apps/badges/distribution/credly/credly_badges/settings/test.py similarity index 74% rename from credentials/apps/badges/settings/test.py rename to credentials/apps/badges/distribution/credly/credly_badges/settings/test.py index f6bc2ae05..8d77f2365 100644 --- a/credentials/apps/badges/settings/test.py +++ b/credentials/apps/badges/distribution/credly/credly_badges/settings/test.py @@ -1,5 +1,5 @@ """ -Badges test settings. +Credly Badges test settings. """ def plugin_settings(settings): # pylint: disable=unused-argument diff --git a/credentials/apps/badges/distribution/credly/credly_badges/urls.py b/credentials/apps/badges/distribution/credly/credly_badges/urls.py new file mode 100644 index 000000000..d9dd71dae --- /dev/null +++ b/credentials/apps/badges/distribution/credly/credly_badges/urls.py @@ -0,0 +1,4 @@ +""" +Credly Badges routing configuration. +""" +urlpatterns = [] diff --git a/credentials/apps/badges/distribution/credly/pyproject.toml b/credentials/apps/badges/distribution/credly/pyproject.toml new file mode 100644 index 000000000..973504de3 --- /dev/null +++ b/credentials/apps/badges/distribution/credly/pyproject.toml @@ -0,0 +1,80 @@ +[build-system] +# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html +build-backend = "setuptools.build_meta" +requires = ["setuptools"] + +[project] +# https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ +name = "openedx-badges-credly" +authors = [ + { name = "Kyrylo Kholodenko", email = "kyrylo.kholodenko@raccoongang.com" }, + { name = "Volodymyr Bergman", email = "volodymyr.bergman@raccoongang.com" }, +] +description = "Open edX Credentials plugin - Badges app extension for Credly (by Pearson) service." +readme = "README.rst" +requires-python = ">=3.8" +keywords = ["credentials", "badges", "credly"] +license = { file = "LICENSE.txt" } +classifiers = [ + "Development Status :: 3 - Alpha", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Framework :: Django :: 4", +] +dynamic = ["version", "dependencies", "optional-dependencies"] + +[project.entry-points."credentials.djangoapp"] +credly_badges = "credly_badges.apps:CredlyBadgesConfig" + +[project.urls] +Repository = "https://github.com/openedx/credentials.git" + +[tool.setuptools] +packages = ["credly_badges"] + +[tool.setuptools.dynamic] +version = { attr = "credly_badges.__version__" } +dependencies = { file = "requirements/base.in" } + +[tool.ruff] +# https://docs.astral.sh/ruff/configuration/ +line-length = 120 +exclude = ["migrations"] + +[tool.ruff.lint] +# https://docs.astral.sh/ruff/configuration/ + +[tool.ruff.lint.per-file-ignores] +"**/{tests,docs,tools}/*" = ["E402"] +"credly_badges/admin.py" = ["F403"] +"credly_badges/models.py" = ["F403"] +"credly_badges/signals.py" = ["F403"] + +[tool.ruff.format] +# https://docs.astral.sh/ruff/configuration/ +exclude = ["*.pyi"] + +[tool.pytest.ini_options] +# https://docs.pytest.org/en/stable/reference/customize.html +# https://pytest-cov.readthedocs.io/en/latest/config.html +# https://pytest-django.readthedocs.io/en/latest/managing_python_path.html +DJANGO_SETTINGS_MODULE = "credly_badges.settings.test" +pythonpath = ". credly_badges" +python_files = "test_*.py" +addopts = [ + "-p no:warnings", + "--strict-markers", + "--no-migrations", + "--reuse-db", + "--cov=credly_badges", + "--cov-report=term", + "--cov-report=html", + "--cov-report=xml", +] + +[tool.coverage.run] +# https://coverage.readthedocs.io/en/latest/config.html +omit = ["*/migrations/*"] diff --git a/credentials/apps/badges/signals.py b/credentials/apps/badges/signals.py new file mode 100644 index 000000000..344added3 --- /dev/null +++ b/credentials/apps/badges/signals.py @@ -0,0 +1,3 @@ +""" +Badges signal handlers. +""" \ No newline at end of file diff --git a/credentials/apps/badges/toggles.py b/credentials/apps/badges/toggles.py index 7a1d8ca20..31bf742b7 100644 --- a/credentials/apps/badges/toggles.py +++ b/credentials/apps/badges/toggles.py @@ -1,3 +1,9 @@ """ -Toggles for badges app. +Toggles for Badges app. """ + + +def is_badges_enabled(): + """ + """ + return True diff --git a/credentials/settings/base.py b/credentials/settings/base.py index b01aa875c..2eb782f5a 100644 --- a/credentials/settings/base.py +++ b/credentials/settings/base.py @@ -75,6 +75,7 @@ "credentials.apps.records", "credentials.apps.plugins", "credentials.apps.verifiable_credentials", + "credentials.apps.badges", ] INSTALLED_APPS += THIRD_PARTY_APPS diff --git a/pyproject.toml b/pyproject.toml index e08dc6687..65e5d695e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,27 +11,3 @@ lines_after_imports = 2 combine_as_imports = true skip = ["migrations", "settings"] include_trailing_comma = true - -[project] -# https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ -name = "credentials" -license = { file = "LICENSE" } -classifiers = [ - "Development Status :: 3 - Alpha", - "License :: OSI Approved :: GNU Affero General Public License v3", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Framework :: Django :: 3", -] -dynamic = ["version", "dependencies", "optional-dependencies"] - -[tool.setuptools] -packages = ["credentials"] - -[tool.setuptools.dynamic] -dependencies = { file = "requirements/all.txt" } - -[project.entry-points."credentials.djangoapp"] -badges = "credentials.apps.badges.apps:BadgesConfig" diff --git a/requirements/all.txt b/requirements/all.txt index 481040889..6fe30ffea 100644 --- a/requirements/all.txt +++ b/requirements/all.txt @@ -4,6 +4,8 @@ # # make upgrade # +-e file:///edx/app/credentials/credentials/credentials/apps/badges/distribution/credly + # via -r requirements/dev.txt asgiref==3.7.2 # via # -r requirements/dev.txt @@ -42,11 +44,11 @@ bleach==6.1.0 # via # -r requirements/dev.txt # -r requirements/production.txt -boto3==1.34.11 +boto3==1.34.19 # via # -r requirements/production.txt # django-ses -botocore==1.34.11 +botocore==1.34.19 # via # -r requirements/production.txt # boto3 @@ -118,7 +120,7 @@ cryptography==41.0.7 # paramiko # pyjwt # social-auth-core -ddt==1.7.0 +ddt==1.7.1 # via -r requirements/dev.txt defusedxml==0.8.0rc2 # via @@ -230,7 +232,7 @@ django-waffle==4.1.0 # edx-django-utils # edx-drf-extensions # edx-toggles -django-webpack-loader==3.0.0 +django-webpack-loader==3.0.1 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -294,7 +296,7 @@ edx-django-utils==5.9.0 # edx-event-bus-kafka # edx-rest-api-client # edx-toggles -edx-drf-extensions==9.0.1 +edx-drf-extensions==9.1.2 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -331,11 +333,11 @@ exceptiongroup==1.2.0 # pytest factory-boy==3.3.0 # via -r requirements/dev.txt -faker==22.0.0 +faker==22.2.0 # via # -r requirements/dev.txt # factory-boy -fastavro==1.9.2 +fastavro==1.9.3 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -383,7 +385,7 @@ itypes==1.2.0 # -r requirements/dev.txt # -r requirements/production.txt # coreapi -jinja2==3.1.2 +jinja2==3.1.3 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -398,12 +400,12 @@ jsonschema==3.2.0 # via # -r requirements/dev.txt # docker-compose -lxml==5.0.0 +lxml==5.1.0 # via # -r requirements/dev.txt # -r requirements/production.txt # edx-i18n-tools -markdown==3.5.1 +markdown==3.5.2 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -429,7 +431,7 @@ mysqlclient==2.2.1 # via # -r requirements/dev.txt # -r requirements/production.txt -newrelic==9.3.0 +newrelic==9.5.0 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -596,7 +598,7 @@ python-dotenv==0.21.1 # via # -r requirements/dev.txt # docker-compose -python-memcached==1.61 +python-memcached==1.62 # via # -r requirements/dev.txt # -r requirements/production.txt @@ -747,7 +749,7 @@ tomlkit==0.12.3 # via # -r requirements/dev.txt # pylint -tox==4.11.4 +tox==4.12.0 # via -r requirements/dev.txt typing-extensions==4.9.0 # via diff --git a/requirements/base.in b/requirements/base.in index 54aa7e733..63b7c0413 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -51,6 +51,9 @@ segment-analytics-python social-auth-app-django xss-utils +# Badges app baked-in backend plugins: +-e credentials/apps/badges/distribution/credly + # TODO Install in configuration git+https://github.com/openedx/credentials-themes.git@0.3.22#egg=edx_credentials_themes==0.3.22 diff --git a/requirements/base.txt b/requirements/base.txt index b575a87db..1df8f6627 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,6 +4,8 @@ # # make upgrade # +-e file:///edx/app/credentials/credentials/credentials/apps/badges/distribution/credly + # via -r requirements/base.in asgiref==3.7.2 # via # django @@ -106,7 +108,7 @@ django-waffle==4.1.0 # edx-django-utils # edx-drf-extensions # edx-toggles -django-webpack-loader==3.0.0 +django-webpack-loader==3.0.1 # via -r requirements/base.in djangorestframework==3.14.0 # via @@ -136,7 +138,7 @@ edx-django-utils==5.9.0 # edx-event-bus-kafka # edx-rest-api-client # edx-toggles -edx-drf-extensions==9.0.1 +edx-drf-extensions==9.1.2 # via -r requirements/base.in edx-event-bus-kafka==5.5.0 # via -r requirements/base.in @@ -153,7 +155,7 @@ edx-toggles==5.1.0 # via # -r requirements/base.in # edx-event-bus-kafka -fastavro==1.9.2 +fastavro==1.9.3 # via openedx-events idna==3.6 # via requests @@ -163,13 +165,13 @@ inflection==0.5.1 # via drf-yasg itypes==1.2.0 # via coreapi -jinja2==3.1.2 +jinja2==3.1.3 # via # code-annotations # coreschema -lxml==5.0.0 +lxml==5.1.0 # via edx-i18n-tools -markdown==3.5.1 +markdown==3.5.2 # via -r requirements/base.in markupsafe==2.1.3 # via jinja2 @@ -177,7 +179,7 @@ monotonic==1.6 # via segment-analytics-python mysqlclient==2.2.1 # via -r requirements/base.in -newrelic==9.3.0 +newrelic==9.5.0 # via # -r requirements/base.in # edx-django-utils @@ -229,7 +231,7 @@ python-dateutil==2.8.2 # via # edx-ace # segment-analytics-python -python-memcached==1.61 +python-memcached==1.62 # via -r requirements/base.in python-slugify==8.0.1 # via code-annotations diff --git a/requirements/dev.txt b/requirements/dev.txt index 579a7e081..e3e53386b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,6 +4,8 @@ # # make upgrade # +-e file:///edx/app/credentials/credentials/credentials/apps/badges/distribution/credly + # via -r requirements/test.txt asgiref==3.7.2 # via # -r requirements/test.txt @@ -93,7 +95,7 @@ cryptography==41.0.7 # paramiko # pyjwt # social-auth-core -ddt==1.7.0 +ddt==1.7.1 # via -r requirements/test.txt defusedxml==0.8.0rc2 # via @@ -175,7 +177,7 @@ django-waffle==4.1.0 # edx-django-utils # edx-drf-extensions # edx-toggles -django-webpack-loader==3.0.0 +django-webpack-loader==3.0.1 # via -r requirements/test.txt djangorestframework==3.14.0 # via @@ -217,7 +219,7 @@ edx-django-utils==5.9.0 # edx-event-bus-kafka # edx-rest-api-client # edx-toggles -edx-drf-extensions==9.0.1 +edx-drf-extensions==9.1.2 # via -r requirements/test.txt edx-event-bus-kafka==5.5.0 # via -r requirements/test.txt @@ -246,11 +248,11 @@ exceptiongroup==1.2.0 # pytest factory-boy==3.3.0 # via -r requirements/test.txt -faker==22.0.0 +faker==22.2.0 # via # -r requirements/test.txt # factory-boy -fastavro==1.9.2 +fastavro==1.9.3 # via # -r requirements/test.txt # openedx-events @@ -285,18 +287,18 @@ itypes==1.2.0 # via # -r requirements/test.txt # coreapi -jinja2==3.1.2 +jinja2==3.1.3 # via # -r requirements/test.txt # code-annotations # coreschema jsonschema==3.2.0 # via docker-compose -lxml==5.0.0 +lxml==5.1.0 # via # -r requirements/test.txt # edx-i18n-tools -markdown==3.5.1 +markdown==3.5.2 # via -r requirements/test.txt markupsafe==2.1.3 # via @@ -316,7 +318,7 @@ mypy-extensions==1.0.0 # black mysqlclient==2.2.1 # via -r requirements/test.txt -newrelic==9.3.0 +newrelic==9.5.0 # via # -r requirements/test.txt # edx-django-utils @@ -450,7 +452,7 @@ python-dateutil==2.8.2 # segment-analytics-python python-dotenv==0.21.1 # via docker-compose -python-memcached==1.61 +python-memcached==1.62 # via -r requirements/test.txt python-slugify==8.0.1 # via @@ -572,7 +574,7 @@ tomlkit==0.12.3 # via # -r requirements/test.txt # pylint -tox==4.11.4 +tox==4.12.0 # via -r requirements/test.txt typing-extensions==4.9.0 # via diff --git a/requirements/docs.txt b/requirements/docs.txt index 78966e376..5e61db4fb 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -28,7 +28,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==7.0.1 # via sphinx -jinja2==3.1.2 +jinja2==3.1.3 # via sphinx jsx-lexer==2.0.1 # via -r requirements/docs.in diff --git a/requirements/production.txt b/requirements/production.txt index d4c995e81..84ced6824 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -4,6 +4,8 @@ # # make upgrade # +-e file:///edx/app/credentials/credentials/credentials/apps/badges/distribution/credly + # via -r requirements/base.txt asgiref==3.7.2 # via # -r requirements/base.txt @@ -24,9 +26,9 @@ backports-zoneinfo==0.2.1 # django bleach==6.1.0 # via -r requirements/base.txt -boto3==1.34.11 +boto3==1.34.19 # via django-ses -botocore==1.34.11 +botocore==1.34.19 # via # boto3 # s3transfer @@ -136,7 +138,7 @@ django-waffle==4.1.0 # edx-django-utils # edx-drf-extensions # edx-toggles -django-webpack-loader==3.0.0 +django-webpack-loader==3.0.1 # via -r requirements/base.txt djangorestframework==3.14.0 # via @@ -168,7 +170,7 @@ edx-django-utils==5.9.0 # edx-event-bus-kafka # edx-rest-api-client # edx-toggles -edx-drf-extensions==9.0.1 +edx-drf-extensions==9.1.2 # via -r requirements/base.txt edx-event-bus-kafka==5.5.0 # via -r requirements/base.txt @@ -188,7 +190,7 @@ edx-toggles==5.1.0 # via # -r requirements/base.txt # edx-event-bus-kafka -fastavro==1.9.2 +fastavro==1.9.3 # via # -r requirements/base.txt # openedx-events @@ -214,7 +216,7 @@ itypes==1.2.0 # via # -r requirements/base.txt # coreapi -jinja2==3.1.2 +jinja2==3.1.3 # via # -r requirements/base.txt # code-annotations @@ -223,11 +225,11 @@ jmespath==1.0.1 # via # boto3 # botocore -lxml==5.0.0 +lxml==5.1.0 # via # -r requirements/base.txt # edx-i18n-tools -markdown==3.5.1 +markdown==3.5.2 # via -r requirements/base.txt markupsafe==2.1.3 # via @@ -239,7 +241,7 @@ monotonic==1.6 # segment-analytics-python mysqlclient==2.2.1 # via -r requirements/base.txt -newrelic==9.3.0 +newrelic==9.5.0 # via # -r requirements/base.txt # -r requirements/production.in @@ -319,7 +321,7 @@ python-dateutil==2.8.2 # botocore # edx-ace # segment-analytics-python -python-memcached==1.61 +python-memcached==1.62 # via -r requirements/base.txt python-slugify==8.0.1 # via diff --git a/requirements/test.txt b/requirements/test.txt index c41b676cb..73ce7c012 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,6 +4,8 @@ # # make upgrade # +-e file:///edx/app/credentials/credentials/credentials/apps/badges/distribution/credly + # via -r requirements/base.txt asgiref==3.7.2 # via # -r requirements/base.txt @@ -81,7 +83,7 @@ cryptography==41.0.7 # -r requirements/base.txt # pyjwt # social-auth-core -ddt==1.7.0 +ddt==1.7.1 # via -r requirements/test.in defusedxml==0.8.0rc2 # via @@ -153,7 +155,7 @@ django-waffle==4.1.0 # edx-django-utils # edx-drf-extensions # edx-toggles -django-webpack-loader==3.0.0 +django-webpack-loader==3.0.1 # via -r requirements/base.txt djangorestframework==3.14.0 # via @@ -185,7 +187,7 @@ edx-django-utils==5.9.0 # edx-event-bus-kafka # edx-rest-api-client # edx-toggles -edx-drf-extensions==9.0.1 +edx-drf-extensions==9.1.2 # via -r requirements/base.txt edx-event-bus-kafka==5.5.0 # via -r requirements/base.txt @@ -211,9 +213,9 @@ exceptiongroup==1.2.0 # via pytest factory-boy==3.3.0 # via -r requirements/test.in -faker==22.0.0 +faker==22.2.0 # via factory-boy -fastavro==1.9.2 +fastavro==1.9.3 # via # -r requirements/base.txt # openedx-events @@ -245,16 +247,16 @@ itypes==1.2.0 # via # -r requirements/base.txt # coreapi -jinja2==3.1.2 +jinja2==3.1.3 # via # -r requirements/base.txt # code-annotations # coreschema -lxml==5.0.0 +lxml==5.1.0 # via # -r requirements/base.txt # edx-i18n-tools -markdown==3.5.1 +markdown==3.5.2 # via -r requirements/base.txt markupsafe==2.1.3 # via @@ -270,7 +272,7 @@ mypy-extensions==1.0.0 # via black mysqlclient==2.2.1 # via -r requirements/base.txt -newrelic==9.3.0 +newrelic==9.5.0 # via # -r requirements/base.txt # edx-django-utils @@ -384,7 +386,7 @@ python-dateutil==2.8.2 # edx-ace # faker # segment-analytics-python -python-memcached==1.61 +python-memcached==1.62 # via -r requirements/base.txt python-slugify==8.0.1 # via @@ -492,7 +494,7 @@ tomli==2.0.1 # tox tomlkit==0.12.3 # via pylint -tox==4.11.4 +tox==4.12.0 # via -r requirements/test.in typing-extensions==4.9.0 # via diff --git a/requirements/translations.txt b/requirements/translations.txt index dc7566d6e..b34459423 100644 --- a/requirements/translations.txt +++ b/requirements/translations.txt @@ -12,7 +12,7 @@ django==4.2.9 # via edx-i18n-tools edx-i18n-tools==1.3.0 # via -r requirements/translations.in -lxml==5.0.0 +lxml==5.1.0 # via edx-i18n-tools path==16.9.0 # via edx-i18n-tools