From c24c87499f75893fbb6b35b2573f361c84a142ab Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Tue, 30 Jul 2024 11:03:03 +0200 Subject: [PATCH 01/11] feat: Commerce Coordinator step in retirement pipeline --- .../tests/utils/test_edx_api.py | 39 +++++++++++++++++++ scripts/user_retirement/utils/edx_api.py | 14 +++++++ scripts/user_retirement/utils/helpers.py | 13 ++++++- 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/scripts/user_retirement/tests/utils/test_edx_api.py b/scripts/user_retirement/tests/utils/test_edx_api.py index eb826cd1a4..037ea68628 100644 --- a/scripts/user_retirement/tests/utils/test_edx_api.py +++ b/scripts/user_retirement/tests/utils/test_edx_api.py @@ -542,3 +542,42 @@ class TestLicenseManagerApi(OAuth2Mixin, unittest.TestCase): original_username=FAKE_ORIGINAL_USERNAME ) ) + + +class TestCommerceCoordinatorApi(OAuth2Mixin, unittest.TestCase): + """ + Test the edX Commerce-Coordinator API client. + """ + + @responses.activate(registry=OrderedRegistry) + def setUp(self): + super().setUp() + self.mock_access_token_response() + self.lms_base_url = 'http://localhost:18000/' + self.commerce_coordinator_base_url = 'http://localhost:8140/' + self.commerce_coordinator_api = edx_api.CommerceCoordinatorApi( + self.lms_base_url, + self.commerce_coordinator_base_url, + 'the_client_id', + 'the_client_secret' + ) + + @patch.object(edx_api.CommerceCoordinatorApi, '_request') + def test_retire_learner(self, mock_request): + learner_data = get_fake_user_retirement() + json_data = { + 'edx_lms_user_id': learner_data['user']['id'] + } + responses.add( + POST, + urljoin(self.commerce_coordinator_base_url, 'lms/user_retirement'), + match=[matchers.json_params_matcher(json_data)] + ) + + self.commerce_coordinator_api.retire_learner(learner=learner_data) + + mock_request.assert_called_once_with( + 'POST', + urljoin(self.commerce_coordinator_base_url, 'lms/user_retirement/'), + json=json_data + ) diff --git a/scripts/user_retirement/utils/edx_api.py b/scripts/user_retirement/utils/edx_api.py index e891f04019..f77675fcbc 100644 --- a/scripts/user_retirement/utils/edx_api.py +++ b/scripts/user_retirement/utils/edx_api.py @@ -490,3 +490,17 @@ class LicenseManagerApi(BaseApiClient): except HttpDoesNotExistException: LOG.info("No license manager data found for user") return True + +class CommerceCoordinatorApi(BaseApiClient): + """ + Commerce-Coordinator API client. + """ + @_retry_lms_api() + def retire_learner(self, learner): + """ + Performs the learner retirement step for Commerce-Coordinator. + Passes the learner's LMS User Id instead of username. + """ + data = {'edx_lms_user_id': learner['user']['id']} + api_url = self.get_api_url('lms/user_retirement') + return self._request('POST', api_url, json=data) diff --git a/scripts/user_retirement/utils/helpers.py b/scripts/user_retirement/utils/helpers.py index 1bcbadb4b3..42723b0999 100644 --- a/scripts/user_retirement/utils/helpers.py +++ b/scripts/user_retirement/utils/helpers.py @@ -18,7 +18,8 @@ import yaml from six import text_type from scripts.user_retirement.utils.edx_api import LmsApi # pylint: disable=wrong-import-position -from scripts.user_retirement.utils.edx_api import CredentialsApi, EcommerceApi, LicenseManagerApi +from scripts.user_retirement.utils.edx_api import CommerceCoordinatorApi, CredentialsApi, EcommerceApi, \ + LicenseManagerApi from scripts.user_retirement.utils.thirdparty_apis.amplitude_api import \ AmplitudeApi # pylint: disable=wrong-import-position from scripts.user_retirement.utils.thirdparty_apis.braze_api import BrazeApi # pylint: disable=wrong-import-position @@ -154,6 +155,7 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): credentials_base_url = config['base_urls'].get('credentials', None) segment_base_url = config['base_urls'].get('segment', None) license_manager_base_url = config['base_urls'].get('license_manager', None) + commerce_coordinator_base_url = config['base_urls'].get('commerce_coordinator', None) client_id = config['client_id'] client_secret = config['client_secret'] braze_api_key = config.get('braze_api_key', None) @@ -180,6 +182,7 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): ('CREDENTIALS', credentials_base_url), ('SEGMENT', segment_base_url), ('HUBSPOT', hubspot_api_key), + ('COMMERCE_COORDINATOR', commerce_coordinator_base_url), ): if state[2] == service and service_url is None: fail_func(fail_code, 'Service URL is not configured, but required for state {}'.format(state)) @@ -235,5 +238,13 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): segment_auth_token, segment_workspace_slug ) + + if commerce_coordinator_base_url: + config['COMMERCE_COORDINATOR'] = CommerceCoordinatorApi( + lms_base_url, + commerce_coordinator_base_url, + client_id, + client_secret, + ) except Exception as exc: # pylint: disable=broad-except fail_func(fail_code, 'Unexpected error occurred!', exc) From 77ca0f754af322b918434960f74948665d0847e1 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Tue, 30 Jul 2024 11:11:42 +0200 Subject: [PATCH 02/11] fix: quality --- scripts/user_retirement/utils/edx_api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/user_retirement/utils/edx_api.py b/scripts/user_retirement/utils/edx_api.py index f77675fcbc..d259e9d2eb 100644 --- a/scripts/user_retirement/utils/edx_api.py +++ b/scripts/user_retirement/utils/edx_api.py @@ -491,6 +491,7 @@ class LicenseManagerApi(BaseApiClient): LOG.info("No license manager data found for user") return True + class CommerceCoordinatorApi(BaseApiClient): """ Commerce-Coordinator API client. From e8f9db428d6bd41bd17b3ae4bc4ff18fa2fff152 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Tue, 6 Aug 2024 11:18:52 +0200 Subject: [PATCH 03/11] fix: generalize internal services --- lms/envs/common.py | 2 ++ lms/envs/test.py | 2 ++ .../tests/test_retire_one_learner.py | 9 +++++ .../tests/utils/test_edx_api.py | 22 +++++++------ scripts/user_retirement/utils/edx_api.py | 13 +++++--- scripts/user_retirement/utils/helpers.py | 33 +++++++++++-------- 6 files changed, 52 insertions(+), 29 deletions(-) diff --git a/lms/envs/common.py b/lms/envs/common.py index d0d2eeae76..1057c798f6 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -4996,6 +4996,8 @@ RETIREMENT_STATES = [ 'COMPLETE', ] +EXTRA_SERVICES_TO_RETIRE_FROM = {} + USERNAME_REPLACEMENT_WORKER = "REPLACE WITH VALID USERNAME" ############## Settings for Microfrontends ######################### diff --git a/lms/envs/test.py b/lms/envs/test.py index 3c4bb95649..13799a3c40 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -662,6 +662,8 @@ SUBSCRIPTIONS_TRIAL_LENGTH = 7 CSRF_TRUSTED_ORIGINS = ['.example.com'] CSRF_TRUSTED_ORIGINS_WITH_SCHEME = ['https://*.example.com'] +EXTRA_SERVICES_TO_RETIRE_FROM = {} + # values are already updated above with default CSRF_TRUSTED_ORIGINS values but in # case of new django version these values will override. if django.VERSION[0] >= 4: # for greater than django 3.2 use with schemes. diff --git a/scripts/user_retirement/tests/test_retire_one_learner.py b/scripts/user_retirement/tests/test_retire_one_learner.py index 844325ea3e..e620d850ee 100644 --- a/scripts/user_retirement/tests/test_retire_one_learner.py +++ b/scripts/user_retirement/tests/test_retire_one_learner.py @@ -4,6 +4,8 @@ Test the retire_one_learner.py script from unittest.mock import DEFAULT, patch from click.testing import CliRunner +from django.conf import settings +from django.test.utils import override_settings from scripts.user_retirement.retire_one_learner import ( END_STATES, @@ -19,6 +21,13 @@ from scripts.user_retirement.tests.retirement_helpers import fake_config_file, g from scripts.user_retirement.utils.exception import HttpDoesNotExistException +@override_settings(EXTRA_SERVICES_TO_RETIRE_FROM=[ + { + 'name': 'MOCK_SERVICE', + 'service_base_url': 'http://fake_service_base_url', + 'retirement_url_path': 'fake_retirement_url_path' + } +]) def _call_script(username, fetch_ecom_segment_id=False): """ Call the retired learner script with the given username and a generic, temporary config file. diff --git a/scripts/user_retirement/tests/utils/test_edx_api.py b/scripts/user_retirement/tests/utils/test_edx_api.py index 037ea68628..2c86c2cb97 100644 --- a/scripts/user_retirement/tests/utils/test_edx_api.py +++ b/scripts/user_retirement/tests/utils/test_edx_api.py @@ -544,9 +544,9 @@ class TestLicenseManagerApi(OAuth2Mixin, unittest.TestCase): ) -class TestCommerceCoordinatorApi(OAuth2Mixin, unittest.TestCase): +class TestGenericApi(OAuth2Mixin, unittest.TestCase): """ - Test the edX Commerce-Coordinator API client. + Test the Generic API client. """ @responses.activate(registry=OrderedRegistry) @@ -554,15 +554,17 @@ class TestCommerceCoordinatorApi(OAuth2Mixin, unittest.TestCase): super().setUp() self.mock_access_token_response() self.lms_base_url = 'http://localhost:18000/' - self.commerce_coordinator_base_url = 'http://localhost:8140/' - self.commerce_coordinator_api = edx_api.CommerceCoordinatorApi( + self.service_api_base_url = 'http://mock_service_url/' + self.retirement_url = 'mock/retirement_url' + self.generic_api = edx_api.GenericRetirementApi( self.lms_base_url, - self.commerce_coordinator_base_url, + self.service_api_base_url, 'the_client_id', - 'the_client_secret' + 'the_client_secret', + self.retirement_url ) - @patch.object(edx_api.CommerceCoordinatorApi, '_request') + @patch.object(edx_api.GenericRetirementApi, '_request') def test_retire_learner(self, mock_request): learner_data = get_fake_user_retirement() json_data = { @@ -570,14 +572,14 @@ class TestCommerceCoordinatorApi(OAuth2Mixin, unittest.TestCase): } responses.add( POST, - urljoin(self.commerce_coordinator_base_url, 'lms/user_retirement'), + urljoin(self.service_api_base_url, 'mock/retirement_url'), match=[matchers.json_params_matcher(json_data)] ) - self.commerce_coordinator_api.retire_learner(learner=learner_data) + self.generic_api.retire_learner(learner=learner_data) mock_request.assert_called_once_with( 'POST', - urljoin(self.commerce_coordinator_base_url, 'lms/user_retirement/'), + urljoin(self.service_api_base_url, 'mock/retirement_url/'), json=json_data ) diff --git a/scripts/user_retirement/utils/edx_api.py b/scripts/user_retirement/utils/edx_api.py index d259e9d2eb..b0c5ffae46 100644 --- a/scripts/user_retirement/utils/edx_api.py +++ b/scripts/user_retirement/utils/edx_api.py @@ -492,16 +492,19 @@ class LicenseManagerApi(BaseApiClient): return True -class CommerceCoordinatorApi(BaseApiClient): +class GenericRetirementApi(BaseApiClient): """ - Commerce-Coordinator API client. + Generic API client. """ + def __init__(self, lms_base_url, api_base_url, client_id, client_secret, retirement_url_path): + super().__init__(lms_base_url, api_base_url, client_id, client_secret) + self.retirement_url_path = retirement_url_path + @_retry_lms_api() def retire_learner(self, learner): """ - Performs the learner retirement step for Commerce-Coordinator. - Passes the learner's LMS User Id instead of username. + Performs the learner retirement step for additonal services. """ data = {'edx_lms_user_id': learner['user']['id']} - api_url = self.get_api_url('lms/user_retirement') + api_url = self.get_api_url(self.retirement_url_path) return self._request('POST', api_url, json=data) diff --git a/scripts/user_retirement/utils/helpers.py b/scripts/user_retirement/utils/helpers.py index 42723b0999..0c3af6006a 100644 --- a/scripts/user_retirement/utils/helpers.py +++ b/scripts/user_retirement/utils/helpers.py @@ -16,9 +16,10 @@ import unicodedata import yaml from six import text_type +from django.conf import settings from scripts.user_retirement.utils.edx_api import LmsApi # pylint: disable=wrong-import-position -from scripts.user_retirement.utils.edx_api import CommerceCoordinatorApi, CredentialsApi, EcommerceApi, \ +from scripts.user_retirement.utils.edx_api import CredentialsApi, EcommerceApi, GenericRetirementApi, \ LicenseManagerApi from scripts.user_retirement.utils.thirdparty_apis.amplitude_api import \ AmplitudeApi # pylint: disable=wrong-import-position @@ -155,7 +156,6 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): credentials_base_url = config['base_urls'].get('credentials', None) segment_base_url = config['base_urls'].get('segment', None) license_manager_base_url = config['base_urls'].get('license_manager', None) - commerce_coordinator_base_url = config['base_urls'].get('commerce_coordinator', None) client_id = config['client_id'] client_secret = config['client_secret'] braze_api_key = config.get('braze_api_key', None) @@ -174,16 +174,19 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): hubspot_from_address = config.get('hubspot_from_address', None) hubspot_alert_email = config.get('hubspot_alert_email', None) + required_services = [ + ('BRAZE', braze_api_key), + ('AMPLITUDE', amplitude_api_key), + ('ECOMMERCE', ecommerce_base_url), + ('CREDENTIALS', credentials_base_url), + ('SEGMENT', segment_base_url), + ('HUBSPOT', hubspot_api_key), + ] + extra_services = [(service['name'], service['service_base_url']) for service in settings.EXTRA_SERVICES_TO_RETIRE_FROM] + all_services = required_services + extra_services + for state in config['retirement_pipeline']: - for service, service_url in ( - ('BRAZE', braze_api_key), - ('AMPLITUDE', amplitude_api_key), - ('ECOMMERCE', ecommerce_base_url), - ('CREDENTIALS', credentials_base_url), - ('SEGMENT', segment_base_url), - ('HUBSPOT', hubspot_api_key), - ('COMMERCE_COORDINATOR', commerce_coordinator_base_url), - ): + for service, service_url in (all_services): if state[2] == service and service_url is None: fail_func(fail_code, 'Service URL is not configured, but required for state {}'.format(state)) @@ -239,12 +242,14 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): segment_workspace_slug ) - if commerce_coordinator_base_url: - config['COMMERCE_COORDINATOR'] = CommerceCoordinatorApi( + for service_config in extra_services: + service_name = service_config['name'] + config[service_name] = GenericRetirementApi( lms_base_url, - commerce_coordinator_base_url, + service_config['service_base_url'], client_id, client_secret, + service_config['retirement_url_path'] ) except Exception as exc: # pylint: disable=broad-except fail_func(fail_code, 'Unexpected error occurred!', exc) From 5e636dea169cbb6aeafd6a3f4a9f9f976810f320 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Mon, 12 Aug 2024 15:09:24 +0200 Subject: [PATCH 04/11] fix: tests --- lms/envs/test.py | 8 ++++++- scripts/user_retirement/pytest.ini | 3 +++ .../tests/test_retire_one_learner.py | 23 +++++++------------ scripts/user_retirement/utils/helpers.py | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lms/envs/test.py b/lms/envs/test.py index 13799a3c40..9d94175980 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -662,7 +662,13 @@ SUBSCRIPTIONS_TRIAL_LENGTH = 7 CSRF_TRUSTED_ORIGINS = ['.example.com'] CSRF_TRUSTED_ORIGINS_WITH_SCHEME = ['https://*.example.com'] -EXTRA_SERVICES_TO_RETIRE_FROM = {} +EXTRA_SERVICES_TO_RETIRE_FROM = [ + { + 'name': 'MOCK_SERVICE', + 'service_base_url': 'http://fake_service_base_url', + 'retirement_url_path': 'fake_retirement_url_path' + } +] # values are already updated above with default CSRF_TRUSTED_ORIGINS values but in # case of new django version these values will override. diff --git a/scripts/user_retirement/pytest.ini b/scripts/user_retirement/pytest.ini index e69de29bb2..7a127196d0 100644 --- a/scripts/user_retirement/pytest.ini +++ b/scripts/user_retirement/pytest.ini @@ -0,0 +1,3 @@ +[pytest] + +DJANGO_SETTINGS_MODULE = lms.envs.test diff --git a/scripts/user_retirement/tests/test_retire_one_learner.py b/scripts/user_retirement/tests/test_retire_one_learner.py index e620d850ee..a30186cf6e 100644 --- a/scripts/user_retirement/tests/test_retire_one_learner.py +++ b/scripts/user_retirement/tests/test_retire_one_learner.py @@ -21,13 +21,6 @@ from scripts.user_retirement.tests.retirement_helpers import fake_config_file, g from scripts.user_retirement.utils.exception import HttpDoesNotExistException -@override_settings(EXTRA_SERVICES_TO_RETIRE_FROM=[ - { - 'name': 'MOCK_SERVICE', - 'service_base_url': 'http://fake_service_base_url', - 'retirement_url_path': 'fake_retirement_url_path' - } -]) def _call_script(username, fetch_ecom_segment_id=False): """ Call the retired learner script with the given username and a generic, temporary config file. @@ -70,8 +63,8 @@ def test_successful_retirement(*args, **kwargs): result = _call_script(username, fetch_ecom_segment_id=True) - # Called once per API we instantiate (LMS, ECommerce, Credentials) - assert mock_get_access_token.call_count == 3 + # Called once per API we instantiate (LMS, ECommerce, Credentials, Additional Services) + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) assert mock_update_learner_state.call_count == 9 @@ -106,7 +99,7 @@ def test_user_does_not_exist(*args, **kwargs): result = _call_script(username) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) mock_update_learner_state.assert_not_called() @@ -141,7 +134,7 @@ def test_bad_learner(*args, **kwargs): mock_get_retirement_state.side_effect = HttpDoesNotExistException result = _call_script(username) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) mock_update_learner_state.assert_not_called() @@ -169,7 +162,7 @@ def test_user_in_working_state(*args, **kwargs): result = _call_script(username) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) mock_update_learner_state.assert_not_called() @@ -197,7 +190,7 @@ def test_user_in_bad_state(*args, **kwargs): ) result = _call_script(username) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) mock_update_learner_state.assert_not_called() @@ -232,7 +225,7 @@ def test_user_in_end_state(*args, **kwargs): result = _call_script(username) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) mock_update_learner_state.assert_not_called() @@ -274,7 +267,7 @@ def test_skipping_states(*args, **kwargs): result = _call_script(username) # Called once per API we instantiate (LMS, ECommerce, Credentials) - assert mock_get_access_token.call_count == 3 + assert mock_get_access_token.call_count == 3 + len(settings.EXTRA_SERVICES_TO_RETIRE_FROM) mock_get_retirement_state.assert_called_once_with(username) assert mock_update_learner_state.call_count == 5 diff --git a/scripts/user_retirement/utils/helpers.py b/scripts/user_retirement/utils/helpers.py index 0c3af6006a..7704a25621 100644 --- a/scripts/user_retirement/utils/helpers.py +++ b/scripts/user_retirement/utils/helpers.py @@ -242,7 +242,7 @@ def _setup_all_apis_or_exit(fail_func, fail_code, config): segment_workspace_slug ) - for service_config in extra_services: + for service_config in settings.EXTRA_SERVICES_TO_RETIRE_FROM: service_name = service_config['name'] config[service_name] = GenericRetirementApi( lms_base_url, From 64098b6dabb04f2788840b1e388299bb2a62c943 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Mon, 12 Aug 2024 15:35:45 +0200 Subject: [PATCH 05/11] fix: Add CI update for tests --- .github/workflows/units-test-scripts-user-retirement.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/units-test-scripts-user-retirement.yml b/.github/workflows/units-test-scripts-user-retirement.yml index f1b2b2c539..2e86650675 100644 --- a/.github/workflows/units-test-scripts-user-retirement.yml +++ b/.github/workflows/units-test-scripts-user-retirement.yml @@ -31,4 +31,5 @@ jobs: - name: Run pytest run: | + export DJANGO_SETTINGS_MODULE=lms.envs.test pytest scripts/user_retirement From 8a1c30ebc517457ce274167d32bdde34440e210f Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Mon, 12 Aug 2024 16:32:37 +0200 Subject: [PATCH 06/11] fix: dependencies --- scripts/user_retirement/requirements/base.in | 3 + scripts/user_retirement/requirements/base.txt | 41 ++- .../user_retirement/requirements/testing.txt | 252 ++++++------------ 3 files changed, 128 insertions(+), 168 deletions(-) diff --git a/scripts/user_retirement/requirements/base.in b/scripts/user_retirement/requirements/base.in index d0bdab9082..a6bba5e983 100644 --- a/scripts/user_retirement/requirements/base.in +++ b/scripts/user_retirement/requirements/base.in @@ -1,12 +1,15 @@ -c ../../../requirements/constraints.txt boto3 +celery # required because we're using the LMS's settings file for config options click +defusedxml # required because we're using the LMS's settings file for config options pyyaml backoff requests edx-rest-api-client jenkinsapi +kombu # required because we're using the LMS's settings file for config options unicodecsv simplejson simple-salesforce diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index 47e6e79c22..6213c57b2b 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -2,14 +2,18 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# make upgrade +# pip-compile --output-file=scripts/user_retirement/requirements/base.txt scripts/user_retirement/requirements/base.in # +amqp==5.2.0 + # via kombu asgiref==3.8.1 # via django attrs==24.2.0 # via zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.in +billiard==4.2.0 + # via celery boto3==1.34.154 # via -r scripts/user_retirement/requirements/base.in botocore==1.34.154 @@ -18,6 +22,10 @@ botocore==1.34.154 # s3transfer cachetools==5.4.0 # via google-auth +celery==5.4.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.in certifi==2024.7.4 # via requests cffi==1.17.0 @@ -32,9 +40,21 @@ click==8.1.6 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # -r scripts/user_retirement/requirements/base.in + # celery + # click-didyoumean + # click-plugins + # click-repl # edx-django-utils +click-didyoumean==0.3.1 + # via celery +click-plugins==1.1.1 + # via celery +click-repl==0.3.0 + # via celery cryptography==43.0.0 # via pyjwt +defusedxml==0.7.1 + # via -r scripts/user_retirement/requirements/base.in django==4.2.15 # via # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt @@ -77,6 +97,10 @@ jmespath==1.0.1 # via # boto3 # botocore +kombu==5.4.0 + # via + # -r scripts/user_retirement/requirements/base.in + # celery lxml==4.9.4 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt @@ -89,6 +113,8 @@ pbr==6.0.0 # via stevedore platformdirs==4.2.2 # via zeep +prompt-toolkit==3.0.47 + # via click-repl proto-plus==1.24.0 # via google-api-core protobuf==5.27.3 @@ -115,7 +141,9 @@ pynacl==1.5.0 pyparsing==3.1.2 # via httplib2 python-dateutil==2.9.0.post0 - # via botocore + # via + # botocore + # celery pytz==2024.1 # via # jenkinsapi @@ -158,6 +186,8 @@ stevedore==5.2.0 # via edx-django-utils typing-extensions==4.12.2 # via simple-salesforce +tzdata==2024.1 + # via celery unicodecsv==0.14.1 # via -r scripts/user_retirement/requirements/base.in uritemplate==4.1.1 @@ -167,5 +197,12 @@ urllib3==1.26.19 # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # botocore # requests +vine==5.1.0 + # via + # amqp + # celery + # kombu +wcwidth==0.2.13 + # via prompt-toolkit zeep==4.2.1 # via simple-salesforce diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index 006eabeef4..ee55090496 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -2,287 +2,207 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# make upgrade +# pip-compile --output-file=scripts/user_retirement/requirements/testing.txt scripts/user_retirement/requirements/base.in # +amqp==5.2.0 + # via kombu asgiref==3.8.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # django + # via django attrs==24.2.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # zeep + # via zeep backoff==2.2.1 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in +billiard==4.2.0 + # via celery boto3==1.34.154 - # via - # -r scripts/user_retirement/requirements/base.txt - # moto + # via -r scripts/user_retirement/requirements/base.in botocore==1.34.154 # via - # -r scripts/user_retirement/requirements/base.txt # boto3 - # moto # s3transfer cachetools==5.4.0 + # via google-auth +celery==5.4.0 # via - # -r scripts/user_retirement/requirements/base.txt - # google-auth + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.in certifi==2024.7.4 - # via - # -r scripts/user_retirement/requirements/base.txt - # requests + # via requests cffi==1.17.0 # via - # -r scripts/user_retirement/requirements/base.txt # cryptography # pynacl charset-normalizer==2.0.12 # via - # -r scripts/user_retirement/requirements/base.txt + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # requests click==8.1.6 # via - # -r scripts/user_retirement/requirements/base.txt + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.in + # celery + # click-didyoumean + # click-plugins + # click-repl # edx-django-utils +click-didyoumean==0.3.1 + # via celery +click-plugins==1.1.1 + # via celery +click-repl==0.3.0 + # via celery cryptography==43.0.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # moto - # pyjwt -ddt==1.7.2 - # via -r scripts/user_retirement/requirements/testing.in + # via pyjwt +defusedxml==0.7.1 + # via -r scripts/user_retirement/requirements/base.in django==4.2.15 # via - # -r scripts/user_retirement/requirements/base.txt + # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # django-crum # django-waffle # edx-django-utils django-crum==0.7.9 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils + # via edx-django-utils django-waffle==4.1.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils + # via edx-django-utils edx-django-utils==5.15.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-rest-api-client + # via edx-rest-api-client edx-rest-api-client==5.7.1 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in google-api-core==2.19.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-api-python-client + # via google-api-python-client google-api-python-client==2.139.0 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in google-auth==2.32.0 # via - # -r scripts/user_retirement/requirements/base.txt # google-api-core # google-api-python-client # google-auth-httplib2 google-auth-httplib2==0.2.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-api-python-client + # via google-api-python-client googleapis-common-protos==1.63.2 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-api-core + # via google-api-core httplib2==0.22.0 # via - # -r scripts/user_retirement/requirements/base.txt # google-api-python-client # google-auth-httplib2 idna==3.7 - # via - # -r scripts/user_retirement/requirements/base.txt - # requests -iniconfig==2.0.0 - # via pytest + # via requests isodate==0.6.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # zeep + # via zeep jenkinsapi==0.3.13 - # via -r scripts/user_retirement/requirements/base.txt -jinja2==3.1.4 - # via moto + # via -r scripts/user_retirement/requirements/base.in jmespath==1.0.1 # via - # -r scripts/user_retirement/requirements/base.txt # boto3 # botocore +kombu==5.4.0 + # via + # -r scripts/user_retirement/requirements/base.in + # celery lxml==4.9.4 # via - # -r scripts/user_retirement/requirements/base.txt + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # zeep -markupsafe==2.1.5 - # via - # jinja2 - # werkzeug -mock==5.1.0 - # via -r scripts/user_retirement/requirements/testing.in more-itertools==10.3.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # simple-salesforce -moto==4.2.14 - # via -r scripts/user_retirement/requirements/testing.in + # via simple-salesforce newrelic==9.12.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils -packaging==24.1 - # via pytest + # via edx-django-utils pbr==6.0.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # stevedore + # via stevedore platformdirs==4.2.2 - # via - # -r scripts/user_retirement/requirements/base.txt - # zeep -pluggy==1.5.0 - # via pytest + # via zeep +prompt-toolkit==3.0.47 + # via click-repl proto-plus==1.24.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-api-core + # via google-api-core protobuf==5.27.3 # via - # -r scripts/user_retirement/requirements/base.txt # google-api-core # googleapis-common-protos # proto-plus psutil==6.0.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils + # via edx-django-utils pyasn1==0.6.0 # via - # -r scripts/user_retirement/requirements/base.txt # pyasn1-modules # rsa pyasn1-modules==0.4.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-auth + # via google-auth pycparser==2.22 - # via - # -r scripts/user_retirement/requirements/base.txt - # cffi + # via cffi pyjwt[crypto]==2.9.0 # via - # -r scripts/user_retirement/requirements/base.txt # edx-rest-api-client # simple-salesforce pynacl==1.5.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils + # via edx-django-utils pyparsing==3.1.2 - # via - # -r scripts/user_retirement/requirements/base.txt - # httplib2 -pytest==8.3.2 - # via -r scripts/user_retirement/requirements/testing.in + # via httplib2 python-dateutil==2.9.0.post0 # via - # -r scripts/user_retirement/requirements/base.txt # botocore - # moto + # celery pytz==2024.1 # via - # -r scripts/user_retirement/requirements/base.txt # jenkinsapi # zeep pyyaml==6.0.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # responses + # via -r scripts/user_retirement/requirements/base.in requests==2.32.3 # via - # -r scripts/user_retirement/requirements/base.txt + # -r scripts/user_retirement/requirements/base.in # edx-rest-api-client # google-api-core # jenkinsapi - # moto # requests-file - # requests-mock # requests-toolbelt - # responses # simple-salesforce # slumber # zeep requests-file==2.1.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # zeep -requests-mock==1.12.1 - # via -r scripts/user_retirement/requirements/testing.in + # via zeep requests-toolbelt==1.0.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # zeep -responses==0.25.3 - # via - # -r scripts/user_retirement/requirements/testing.in - # moto + # via zeep rsa==4.9 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-auth + # via google-auth s3transfer==0.10.2 - # via - # -r scripts/user_retirement/requirements/base.txt - # boto3 + # via boto3 simple-salesforce==1.12.6 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in simplejson==3.19.2 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in six==1.16.0 # via - # -r scripts/user_retirement/requirements/base.txt # isodate # jenkinsapi # python-dateutil slumber==0.7.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-rest-api-client + # via edx-rest-api-client sqlparse==0.5.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # django + # via django stevedore==5.2.0 - # via - # -r scripts/user_retirement/requirements/base.txt - # edx-django-utils + # via edx-django-utils typing-extensions==4.12.2 - # via - # -r scripts/user_retirement/requirements/base.txt - # simple-salesforce + # via simple-salesforce +tzdata==2024.1 + # via celery unicodecsv==0.14.1 - # via -r scripts/user_retirement/requirements/base.txt + # via -r scripts/user_retirement/requirements/base.in uritemplate==4.1.1 - # via - # -r scripts/user_retirement/requirements/base.txt - # google-api-python-client + # via google-api-python-client urllib3==1.26.19 # via - # -r scripts/user_retirement/requirements/base.txt + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # botocore # requests - # responses -werkzeug==3.0.3 - # via moto -xmltodict==0.13.0 - # via moto -zeep==4.2.1 +vine==5.1.0 # via - # -r scripts/user_retirement/requirements/base.txt - # simple-salesforce + # amqp + # celery + # kombu +wcwidth==0.2.13 + # via prompt-toolkit +zeep==4.2.1 + # via simple-salesforce From 4cde950007b022718123f54a2685d74e956f527d Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Mon, 12 Aug 2024 17:00:17 +0200 Subject: [PATCH 07/11] Revert "fix: dependencies" This reverts commit 2659ae9fff3ec9a85298cae623097177bd869659. --- scripts/user_retirement/requirements/base.in | 3 - scripts/user_retirement/requirements/base.txt | 41 +-- .../user_retirement/requirements/testing.txt | 252 ++++++++++++------ 3 files changed, 168 insertions(+), 128 deletions(-) diff --git a/scripts/user_retirement/requirements/base.in b/scripts/user_retirement/requirements/base.in index a6bba5e983..d0bdab9082 100644 --- a/scripts/user_retirement/requirements/base.in +++ b/scripts/user_retirement/requirements/base.in @@ -1,15 +1,12 @@ -c ../../../requirements/constraints.txt boto3 -celery # required because we're using the LMS's settings file for config options click -defusedxml # required because we're using the LMS's settings file for config options pyyaml backoff requests edx-rest-api-client jenkinsapi -kombu # required because we're using the LMS's settings file for config options unicodecsv simplejson simple-salesforce diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index 6213c57b2b..47e6e79c22 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -2,18 +2,14 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --output-file=scripts/user_retirement/requirements/base.txt scripts/user_retirement/requirements/base.in +# make upgrade # -amqp==5.2.0 - # via kombu asgiref==3.8.1 # via django attrs==24.2.0 # via zeep backoff==2.2.1 # via -r scripts/user_retirement/requirements/base.in -billiard==4.2.0 - # via celery boto3==1.34.154 # via -r scripts/user_retirement/requirements/base.in botocore==1.34.154 @@ -22,10 +18,6 @@ botocore==1.34.154 # s3transfer cachetools==5.4.0 # via google-auth -celery==5.4.0 - # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt - # -r scripts/user_retirement/requirements/base.in certifi==2024.7.4 # via requests cffi==1.17.0 @@ -40,21 +32,9 @@ click==8.1.6 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # -r scripts/user_retirement/requirements/base.in - # celery - # click-didyoumean - # click-plugins - # click-repl # edx-django-utils -click-didyoumean==0.3.1 - # via celery -click-plugins==1.1.1 - # via celery -click-repl==0.3.0 - # via celery cryptography==43.0.0 # via pyjwt -defusedxml==0.7.1 - # via -r scripts/user_retirement/requirements/base.in django==4.2.15 # via # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt @@ -97,10 +77,6 @@ jmespath==1.0.1 # via # boto3 # botocore -kombu==5.4.0 - # via - # -r scripts/user_retirement/requirements/base.in - # celery lxml==4.9.4 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt @@ -113,8 +89,6 @@ pbr==6.0.0 # via stevedore platformdirs==4.2.2 # via zeep -prompt-toolkit==3.0.47 - # via click-repl proto-plus==1.24.0 # via google-api-core protobuf==5.27.3 @@ -141,9 +115,7 @@ pynacl==1.5.0 pyparsing==3.1.2 # via httplib2 python-dateutil==2.9.0.post0 - # via - # botocore - # celery + # via botocore pytz==2024.1 # via # jenkinsapi @@ -186,8 +158,6 @@ stevedore==5.2.0 # via edx-django-utils typing-extensions==4.12.2 # via simple-salesforce -tzdata==2024.1 - # via celery unicodecsv==0.14.1 # via -r scripts/user_retirement/requirements/base.in uritemplate==4.1.1 @@ -197,12 +167,5 @@ urllib3==1.26.19 # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # botocore # requests -vine==5.1.0 - # via - # amqp - # celery - # kombu -wcwidth==0.2.13 - # via prompt-toolkit zeep==4.2.1 # via simple-salesforce diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index ee55090496..006eabeef4 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -2,207 +2,287 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --output-file=scripts/user_retirement/requirements/testing.txt scripts/user_retirement/requirements/base.in +# make upgrade # -amqp==5.2.0 - # via kombu asgiref==3.8.1 - # via django + # via + # -r scripts/user_retirement/requirements/base.txt + # django attrs==24.2.0 - # via zeep + # via + # -r scripts/user_retirement/requirements/base.txt + # zeep backoff==2.2.1 - # via -r scripts/user_retirement/requirements/base.in -billiard==4.2.0 - # via celery + # via -r scripts/user_retirement/requirements/base.txt boto3==1.34.154 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/base.txt + # moto botocore==1.34.154 # via + # -r scripts/user_retirement/requirements/base.txt # boto3 + # moto # s3transfer cachetools==5.4.0 - # via google-auth -celery==5.4.0 # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt - # -r scripts/user_retirement/requirements/base.in + # -r scripts/user_retirement/requirements/base.txt + # google-auth certifi==2024.7.4 - # via requests + # via + # -r scripts/user_retirement/requirements/base.txt + # requests cffi==1.17.0 # via + # -r scripts/user_retirement/requirements/base.txt # cryptography # pynacl charset-normalizer==2.0.12 # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.txt # requests click==8.1.6 # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt - # -r scripts/user_retirement/requirements/base.in - # celery - # click-didyoumean - # click-plugins - # click-repl + # -r scripts/user_retirement/requirements/base.txt # edx-django-utils -click-didyoumean==0.3.1 - # via celery -click-plugins==1.1.1 - # via celery -click-repl==0.3.0 - # via celery cryptography==43.0.0 - # via pyjwt -defusedxml==0.7.1 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/base.txt + # moto + # pyjwt +ddt==1.7.2 + # via -r scripts/user_retirement/requirements/testing.in django==4.2.15 # via - # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.txt # django-crum # django-waffle # edx-django-utils django-crum==0.7.9 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils django-waffle==4.1.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils edx-django-utils==5.15.0 - # via edx-rest-api-client + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-rest-api-client edx-rest-api-client==5.7.1 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt google-api-core==2.19.1 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-python-client google-api-python-client==2.139.0 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt google-auth==2.32.0 # via + # -r scripts/user_retirement/requirements/base.txt # google-api-core # google-api-python-client # google-auth-httplib2 google-auth-httplib2==0.2.0 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-python-client googleapis-common-protos==1.63.2 - # via google-api-core + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-core httplib2==0.22.0 # via + # -r scripts/user_retirement/requirements/base.txt # google-api-python-client # google-auth-httplib2 idna==3.7 - # via requests + # via + # -r scripts/user_retirement/requirements/base.txt + # requests +iniconfig==2.0.0 + # via pytest isodate==0.6.1 - # via zeep + # via + # -r scripts/user_retirement/requirements/base.txt + # zeep jenkinsapi==0.3.13 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt +jinja2==3.1.4 + # via moto jmespath==1.0.1 # via + # -r scripts/user_retirement/requirements/base.txt # boto3 # botocore -kombu==5.4.0 - # via - # -r scripts/user_retirement/requirements/base.in - # celery lxml==4.9.4 # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.txt # zeep +markupsafe==2.1.5 + # via + # jinja2 + # werkzeug +mock==5.1.0 + # via -r scripts/user_retirement/requirements/testing.in more-itertools==10.3.0 - # via simple-salesforce + # via + # -r scripts/user_retirement/requirements/base.txt + # simple-salesforce +moto==4.2.14 + # via -r scripts/user_retirement/requirements/testing.in newrelic==9.12.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils +packaging==24.1 + # via pytest pbr==6.0.0 - # via stevedore + # via + # -r scripts/user_retirement/requirements/base.txt + # stevedore platformdirs==4.2.2 - # via zeep -prompt-toolkit==3.0.47 - # via click-repl + # via + # -r scripts/user_retirement/requirements/base.txt + # zeep +pluggy==1.5.0 + # via pytest proto-plus==1.24.0 - # via google-api-core + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-core protobuf==5.27.3 # via + # -r scripts/user_retirement/requirements/base.txt # google-api-core # googleapis-common-protos # proto-plus psutil==6.0.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils pyasn1==0.6.0 # via + # -r scripts/user_retirement/requirements/base.txt # pyasn1-modules # rsa pyasn1-modules==0.4.0 - # via google-auth + # via + # -r scripts/user_retirement/requirements/base.txt + # google-auth pycparser==2.22 - # via cffi + # via + # -r scripts/user_retirement/requirements/base.txt + # cffi pyjwt[crypto]==2.9.0 # via + # -r scripts/user_retirement/requirements/base.txt # edx-rest-api-client # simple-salesforce pynacl==1.5.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils pyparsing==3.1.2 - # via httplib2 + # via + # -r scripts/user_retirement/requirements/base.txt + # httplib2 +pytest==8.3.2 + # via -r scripts/user_retirement/requirements/testing.in python-dateutil==2.9.0.post0 # via + # -r scripts/user_retirement/requirements/base.txt # botocore - # celery + # moto pytz==2024.1 # via + # -r scripts/user_retirement/requirements/base.txt # jenkinsapi # zeep pyyaml==6.0.1 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/base.txt + # responses requests==2.32.3 # via - # -r scripts/user_retirement/requirements/base.in + # -r scripts/user_retirement/requirements/base.txt # edx-rest-api-client # google-api-core # jenkinsapi + # moto # requests-file + # requests-mock # requests-toolbelt + # responses # simple-salesforce # slumber # zeep requests-file==2.1.0 - # via zeep + # via + # -r scripts/user_retirement/requirements/base.txt + # zeep +requests-mock==1.12.1 + # via -r scripts/user_retirement/requirements/testing.in requests-toolbelt==1.0.0 - # via zeep + # via + # -r scripts/user_retirement/requirements/base.txt + # zeep +responses==0.25.3 + # via + # -r scripts/user_retirement/requirements/testing.in + # moto rsa==4.9 - # via google-auth + # via + # -r scripts/user_retirement/requirements/base.txt + # google-auth s3transfer==0.10.2 - # via boto3 + # via + # -r scripts/user_retirement/requirements/base.txt + # boto3 simple-salesforce==1.12.6 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt simplejson==3.19.2 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt six==1.16.0 # via + # -r scripts/user_retirement/requirements/base.txt # isodate # jenkinsapi # python-dateutil slumber==0.7.1 - # via edx-rest-api-client + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-rest-api-client sqlparse==0.5.1 - # via django + # via + # -r scripts/user_retirement/requirements/base.txt + # django stevedore==5.2.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-django-utils typing-extensions==4.12.2 - # via simple-salesforce -tzdata==2024.1 - # via celery + # via + # -r scripts/user_retirement/requirements/base.txt + # simple-salesforce unicodecsv==0.14.1 - # via -r scripts/user_retirement/requirements/base.in + # via -r scripts/user_retirement/requirements/base.txt uritemplate==4.1.1 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-python-client urllib3==1.26.19 # via - # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/base.txt # botocore # requests -vine==5.1.0 - # via - # amqp - # celery - # kombu -wcwidth==0.2.13 - # via prompt-toolkit + # responses +werkzeug==3.0.3 + # via moto +xmltodict==0.13.0 + # via moto zeep==4.2.1 - # via simple-salesforce + # via + # -r scripts/user_retirement/requirements/base.txt + # simple-salesforce From a5442b2409b0e896fd0bb0d2765a5cdcf593d161 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Tue, 13 Aug 2024 11:34:16 +0200 Subject: [PATCH 08/11] fix: install dependencies --- .../units-test-scripts-user-retirement.yml | 1 + scripts/user_retirement/requirements/base.in | 1 + scripts/user_retirement/requirements/base.txt | 1471 ++++++++++++++++- .../user_retirement/requirements/testing.txt | 1284 +++++++++++++- 4 files changed, 2697 insertions(+), 60 deletions(-) diff --git a/.github/workflows/units-test-scripts-user-retirement.yml b/.github/workflows/units-test-scripts-user-retirement.yml index 2e86650675..e9b7c84c8a 100644 --- a/.github/workflows/units-test-scripts-user-retirement.yml +++ b/.github/workflows/units-test-scripts-user-retirement.yml @@ -26,6 +26,7 @@ jobs: - name: Install dependencies run: | + sudo apt-get update && sudo apt-get install libxmlsec1-dev python -m pip install --upgrade pip pip install -r scripts/user_retirement/requirements/testing.txt diff --git a/scripts/user_retirement/requirements/base.in b/scripts/user_retirement/requirements/base.in index d0bdab9082..ee037a58b5 100644 --- a/scripts/user_retirement/requirements/base.in +++ b/scripts/user_retirement/requirements/base.in @@ -1,4 +1,5 @@ -c ../../../requirements/constraints.txt +-r ../../../requirements/edx/base.txt boto3 click diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index 47e6e79c22..b0a649c675 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -4,168 +4,1545 @@ # # make upgrade # +-e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +acid-xblock==0.3.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +aiohappyeyeballs==2.3.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp +aiohttp==3.10.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # geoip2 + # openai +aiosignal==1.3.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp +algoliasearch==3.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +amqp==5.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # kombu +analytics-python==1.4.post1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +aniso8601==9.0.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-tincan-py35 +annotated-types==0.7.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pydantic +appdirs==1.4.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # fs asgiref==3.8.1 - # via django + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django + # django-cors-headers + # django-countries +asn1crypto==1.5.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # snowflake-connector-python attrs==24.2.0 - # via zeep -backoff==2.2.1 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp + # edx-ace + # jsonschema + # lti-consumer-xblock + # openedx-events + # openedx-learning + # referencing + # zeep +babel==2.15.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # enmerkar + # enmerkar-underscore +backoff==1.10.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # analytics-python +bcrypt==4.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # paramiko +beautifulsoup4==4.12.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pynliner +billiard==4.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery +bleach[css]==6.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # lti-consumer-xblock + # openedx-django-wiki + # ora2 + # xblock-drag-and-drop-v2 + # xblock-poll +boto==2.49.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt boto3==1.34.154 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # django-ses + # fs-s3fs + # ora2 botocore==1.34.154 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # boto3 # s3transfer +bridgekeeper==0.9 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +cachecontrol==0.14.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # firebase-admin cachetools==5.4.0 - # via google-auth + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-auth +camel-converter[pydantic]==3.1.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # meilisearch +celery==5.4.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-celery-results + # django-user-tasks + # edx-celeryutils + # edx-enterprise + # event-tracking + # openedx-learning certifi==2024.7.4 - # via requests + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # elasticsearch + # py2neo + # requests + # snowflake-connector-python cffi==1.17.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # cryptography # pynacl + # snowflake-connector-python +chardet==5.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pysrt charset-normalizer==2.0.12 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # requests + # snowflake-connector-python +chem==1.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt click==8.1.6 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # -r scripts/user_retirement/requirements/base.in + # celery + # click-didyoumean + # click-plugins + # click-repl + # code-annotations # edx-django-utils -cryptography==43.0.0 - # via pyjwt + # nltk + # user-util +click-didyoumean==0.3.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery +click-plugins==1.1.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery +click-repl==0.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery +code-annotations==1.8.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-toggles +codejail-includes==1.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +crowdsourcehinter-xblock==0.7 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +cryptography==42.0.8 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-fernet-fields-v2 + # edx-enterprise + # jwcrypto + # optimizely-sdk + # paramiko + # pgpy + # pyjwt + # pyopenssl + # snowflake-connector-python + # social-auth-core +cssutils==2.11.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pynliner +defusedxml==0.7.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # djangorestframework-xml + # ora2 + # python3-openid + # social-auth-core django==4.2.15 # via # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-appconf + # django-celery-results + # django-classy-tags + # django-config-models + # django-cors-headers # django-crum + # django-fernet-fields-v2 + # django-filter + # django-js-asset + # django-method-override + # django-model-utils + # django-multi-email-field + # django-mysql + # django-oauth-toolkit + # django-push-notifications + # django-sekizai + # django-ses + # django-statici18n + # django-storages + # django-user-tasks # django-waffle + # djangorestframework + # done-xblock + # drf-jwt + # drf-spectacular + # drf-yasg + # edx-ace + # edx-api-doc-tools + # edx-auth-backends + # edx-bulk-grades + # edx-celeryutils + # edx-completion + # edx-django-release-util + # edx-django-sites-extensions # edx-django-utils + # edx-drf-extensions + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-i18n-tools + # edx-milestones + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-search + # edx-submissions + # edx-toggles + # edx-token-utils + # edx-when + # edxval + # enmerkar + # enmerkar-underscore + # event-tracking + # help-tokens + # jsonfield + # lti-consumer-xblock + # openedx-django-pyfs + # openedx-django-wiki + # openedx-events + # openedx-filters + # openedx-learning + # ora2 + # social-auth-app-django + # super-csv + # xblock-google-drive + # xss-utils +django-appconf==1.0.6 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-statici18n +django-cache-memoize==0.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +django-celery-results==2.5.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-classy-tags==4.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-sekizai +django-config-models==2.7.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-name-affirmation + # lti-consumer-xblock +django-cors-headers==4.4.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-countries==7.6.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise django-crum==0.7.9 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-django-utils + # edx-enterprise + # edx-proctoring + # edx-rbac + # edx-toggles + # super-csv +django-fernet-fields-v2==0.9 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +django-filter==24.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # lti-consumer-xblock +django-ipware==7.0.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-proctoring +django-js-asset==2.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-mptt +django-method-override==1.0.4 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-model-utils==4.5.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-user-tasks + # edx-bulk-grades + # edx-celeryutils + # edx-completion + # edx-enterprise + # edx-milestones + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-submissions + # edx-when + # edxval + # ora2 + # super-csv +django-mptt==0.16.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-django-wiki +django-multi-email-field==0.7.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +django-mysql==4.14.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-oauth-toolkit==1.7.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +django-object-actions==4.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +django-pipeline==3.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-push-notifications==3.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-ace +django-ratelimit==4.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-sekizai==4.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-django-wiki +django-ses==4.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +django-simple-history==3.4.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # ora2 +django-statici18n==2.5.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # lti-consumer-xblock + # xblock-drag-and-drop-v2 + # xblock-poll +django-storages==1.14.3 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edxval +django-user-tasks==3.2.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt django-waffle==4.1.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-django-utils + # edx-drf-extensions + # edx-enterprise + # edx-proctoring + # edx-toggles +django-webpack-loader==0.7.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-proctoring +djangorestframework==3.14.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-config-models + # django-user-tasks + # drf-jwt + # drf-spectacular + # drf-yasg + # edx-api-doc-tools + # edx-completion + # edx-drf-extensions + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-submissions + # openedx-learning + # ora2 + # super-csv +djangorestframework-xml==2.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +dnspython==2.6.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pymongo +done-xblock==2.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +drf-jwt==1.19.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-drf-extensions +drf-spectacular==0.27.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +drf-yasg==1.21.7 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-user-tasks + # edx-api-doc-tools +edx-ace==1.11.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-api-doc-tools==1.8.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-name-affirmation +edx-auth-backends==4.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-braze-client==0.2.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +edx-bulk-grades==1.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # staff-graded-xblock +edx-ccx-keys==1.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # lti-consumer-xblock + # openedx-events +edx-celeryutils==1.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-name-affirmation + # super-csv +edx-codejail==3.4.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-completion==4.6.7 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-django-release-util==1.4.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-submissions + # edxval +edx-django-sites-extensions==4.2.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt edx-django-utils==5.15.0 - # via edx-rest-api-client + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-config-models + # edx-ace + # edx-drf-extensions + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-name-affirmation + # edx-rest-api-client + # edx-toggles + # edx-when + # event-tracking + # openedx-events + # ora2 + # super-csv +edx-drf-extensions==10.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-completion + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-when + # edxval + # openedx-learning +edx-enterprise==4.23.4 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-event-bus-kafka==5.8.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-event-bus-redis==0.5.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-i18n-tools==1.5.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 +edx-milestones==0.6.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-name-affirmation==2.3.7 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-opaque-keys[django]==2.10.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-bulk-grades + # edx-ccx-keys + # edx-completion + # edx-drf-extensions + # edx-enterprise + # edx-milestones + # edx-organizations + # edx-proctoring + # edx-when + # lti-consumer-xblock + # openedx-events + # ora2 +edx-organizations==6.13.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-proctoring==4.18.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-proctoring-proctortrack +edx-rbac==1.9.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise edx-rest-api-client==5.7.1 - # via -r scripts/user_retirement/requirements/base.in -google-api-core==2.19.1 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # edx-enterprise + # edx-proctoring +edx-search==4.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-sga==0.25.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-submissions==3.7.6 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 +edx-tincan-py35==1.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +edx-toggles==5.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-completion + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-name-affirmation + # edx-search + # edxval + # event-tracking + # ora2 +edx-token-utils==0.2.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +edx-when==2.5.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-proctoring +edxval==2.5.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +elasticsearch==7.13.4 + # via + # -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-search +enmerkar==0.7.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # enmerkar-underscore +enmerkar-underscore==2.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +event-tracking==3.0.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-completion + # edx-proctoring + # edx-search +fastavro==1.9.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-events +filelock==3.15.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # snowflake-connector-python +firebase-admin==6.5.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-ace +frozenlist==1.4.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp + # aiosignal +fs==2.0.27 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # fs-s3fs + # openedx-django-pyfs + # xblock +fs-s3fs==0.1.8 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-django-pyfs +future==1.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pyjwkest +geoip2==4.8.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +glob2==0.7 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +google-api-core[grpc]==2.19.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # firebase-admin + # google-api-python-client + # google-cloud-core + # google-cloud-firestore + # google-cloud-storage google-api-python-client==2.139.0 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # firebase-admin google-auth==2.32.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # google-api-core # google-api-python-client # google-auth-httplib2 + # google-cloud-core + # google-cloud-firestore + # google-cloud-storage google-auth-httplib2==0.2.0 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-api-python-client +google-cloud-core==2.4.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-cloud-firestore + # google-cloud-storage +google-cloud-firestore==2.17.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # firebase-admin +google-cloud-storage==2.18.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # firebase-admin +google-crc32c==1.5.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-cloud-storage + # google-resumable-media +google-resumable-media==2.7.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-cloud-storage googleapis-common-protos==1.63.2 - # via google-api-core + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-api-core + # grpcio-status +grpcio==1.65.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-api-core + # grpcio-status +grpcio-status==1.62.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-api-core +gunicorn==22.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +help-tokens==2.4.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +html5lib==1.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 httplib2==0.22.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # google-api-python-client # google-auth-httplib2 +icalendar==5.0.13 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt idna==3.7 - # via requests + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # optimizely-sdk + # requests + # snowflake-connector-python + # yarl +importlib-metadata==6.11.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +inflection==0.5.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # drf-spectacular + # drf-yasg +interchange==2021.0.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # py2neo +ipaddress==1.0.23 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt isodate==0.6.1 - # via zeep + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # python3-saml + # zeep jenkinsapi==0.3.13 # via -r scripts/user_retirement/requirements/base.in +jinja2==3.1.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # code-annotations jmespath==1.0.1 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # boto3 # botocore +joblib==1.4.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # nltk +jsondiff==2.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +jsonfield==3.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-celeryutils + # edx-enterprise + # edx-proctoring + # edx-submissions + # lti-consumer-xblock + # ora2 +jsonschema==4.23.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # drf-spectacular + # optimizely-sdk +jsonschema-specifications==2023.12.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # jsonschema +jwcrypto==1.5.6 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-oauth-toolkit + # pylti1p3 +kombu==5.4.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery +laboratory==1.0.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +lazy==1.6 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # acid-xblock + # lti-consumer-xblock + # ora2 + # xblock +libsass==0.10.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +loremipsum==1.0.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 +lti-consumer-xblock==9.11.3 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt lxml==4.9.4 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-i18n-tools + # edxval + # lti-consumer-xblock + # olxcleaner + # openedx-calc + # ora2 + # python3-saml + # xblock + # xmlsec # zeep -more-itertools==10.3.0 - # via simple-salesforce -newrelic==9.12.0 - # via edx-django-utils -pbr==6.0.0 - # via stevedore -platformdirs==4.2.2 - # via zeep -proto-plus==1.24.0 - # via google-api-core -protobuf==5.27.3 +mailsnake==1.6.4 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +mako==1.3.5 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # acid-xblock + # lti-consumer-xblock + # xblock + # xblock-utils +markdown==3.3.7 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-django-wiki + # staff-graded-xblock + # xblock-poll +markupsafe==2.1.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # chem + # jinja2 + # mako + # openedx-calc + # xblock +maxminddb==2.6.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # geoip2 +meilisearch==0.31.4 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +mock==5.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +mongoengine==0.28.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +monotonic==1.6 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # analytics-python + # py2neo +more-itertools==10.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # cssutils + # simple-salesforce +mpmath==1.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # sympy +msgpack==1.0.8 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # cachecontrol +multidict==6.0.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp + # yarl +mysqlclient==2.2.4 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +newrelic==9.12.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-django-utils +nh3==0.2.18 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +nltk==3.8.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # chem +nodeenv==1.9.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +numpy==1.26.4 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # chem + # openedx-calc + # scipy + # shapely +oauthlib==3.2.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-oauth-toolkit + # lti-consumer-xblock + # requests-oauthlib + # social-auth-core +olxcleaner==0.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openai==0.28.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +openedx-atlas==0.6.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openedx-calc==3.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openedx-django-pyfs==3.6.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # lti-consumer-xblock + # xblock +openedx-django-require==2.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openedx-django-wiki==2.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openedx-events==9.11.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-event-bus-kafka + # edx-event-bus-redis + # event-tracking + # ora2 +openedx-filters==1.9.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # lti-consumer-xblock + # ora2 +openedx-learning==0.10.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +openedx-mongodbproxy==0.2.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +optimizely-sdk==4.1.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +ora2==6.11.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +packaging==24.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # drf-yasg + # gunicorn + # py2neo + # snowflake-connector-python +pansi==2020.7.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # py2neo +paramiko==3.4.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +path==16.11.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-i18n-tools + # path-py +path-py==12.5.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # ora2 + # staff-graded-xblock +paver==1.3.4 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +pbr==6.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # stevedore +pgpy==0.6.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +piexif==1.1.3 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +pillow==10.4.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-organizations + # edxval +platformdirs==4.2.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # snowflake-connector-python + # zeep +polib==1.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-i18n-tools +prompt-toolkit==3.0.47 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # click-repl +proto-plus==1.24.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # google-api-core + # google-cloud-firestore +protobuf==4.25.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-api-core + # google-cloud-firestore # googleapis-common-protos + # grpcio-status # proto-plus psutil==6.0.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-django-utils +py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt pyasn1==0.6.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pgpy # pyasn1-modules # rsa pyasn1-modules==0.4.0 - # via google-auth + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-auth +pycountry==24.6.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt pycparser==2.22 - # via cffi + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # cffi +pycryptodomex==3.20.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-proctoring + # lti-consumer-xblock + # pyjwkest +pydantic==2.8.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # camel-converter +pydantic-core==2.20.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # pydantic +pygments==2.18.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # py2neo +pyjwkest==1.4.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-token-utils + # lti-consumer-xblock pyjwt[crypto]==2.9.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # drf-jwt + # edx-auth-backends + # edx-drf-extensions + # edx-proctoring # edx-rest-api-client + # firebase-admin + # pylti1p3 # simple-salesforce + # snowflake-connector-python + # social-auth-core +pylatexenc==2.10 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # olxcleaner +pylti1p3==2.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +pymemcache==4.0.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +pymongo==4.4.0 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-opaque-keys + # event-tracking + # mongoengine + # openedx-mongodbproxy pynacl==1.5.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-django-utils + # paramiko +pynliner==0.8.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +pyopenssl==24.2.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # optimizely-sdk + # snowflake-connector-python pyparsing==3.1.2 - # via httplib2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # chem + # httplib2 + # openedx-calc +pyrsistent==0.20.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # optimizely-sdk +pysrt==1.1.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edxval python-dateutil==2.9.0.post0 - # via botocore + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # analytics-python + # botocore + # celery + # edx-ace + # edx-enterprise + # edx-proctoring + # icalendar + # olxcleaner + # ora2 + # xblock +python-ipware==3.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-ipware +python-memcached==1.62 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +python-slugify==8.0.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # code-annotations +python-swiftclient==4.6.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 +python3-openid==3.2.0 ; python_version >= "3" + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # social-auth-core +python3-saml==1.16.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt pytz==2024.1 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-ses + # djangorestframework + # drf-yasg + # edx-completion + # edx-enterprise + # edx-proctoring + # edx-submissions + # edx-tincan-py35 + # event-tracking + # fs + # icalendar + # interchange # jenkinsapi + # olxcleaner + # ora2 + # snowflake-connector-python + # xblock # zeep +pyuca==1.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt pyyaml==6.0.1 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # code-annotations + # drf-spectacular + # drf-yasg + # edx-django-release-util + # edx-i18n-tools + # jsondiff + # xblock +random2==1.0.2 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +recommender-xblock==2.2.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +redis==5.0.8 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # walrus +referencing==0.35.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # jsonschema + # jsonschema-specifications +regex==2024.7.24 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # nltk requests==2.32.3 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # -r scripts/user_retirement/requirements/base.in + # algoliasearch + # analytics-python + # cachecontrol + # django-oauth-toolkit + # edx-bulk-grades + # edx-drf-extensions + # edx-enterprise # edx-rest-api-client + # geoip2 # google-api-core + # google-cloud-storage # jenkinsapi + # mailsnake + # meilisearch + # openai + # optimizely-sdk + # pyjwkest + # pylti1p3 + # python-swiftclient # requests-file + # requests-oauthlib # requests-toolbelt + # sailthru-client # simple-salesforce # slumber + # snowflake-connector-python + # social-auth-core + # xblock-google-drive # zeep requests-file==2.1.0 # via zeep +requests-oauthlib==2.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # social-auth-core requests-toolbelt==1.0.0 # via zeep +rpds-py==0.20.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # jsonschema + # referencing rsa==4.9 - # via google-auth + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # google-auth +rules==3.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise + # edx-proctoring + # openedx-learning s3transfer==0.10.2 - # via boto3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # boto3 +sailthru-client==2.2.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-ace +scipy==1.14.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # chem + # openedx-calc +semantic-version==2.10.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-drf-extensions +shapely==2.0.5 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt simple-salesforce==1.12.6 # via -r scripts/user_retirement/requirements/base.in simplejson==3.19.2 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # sailthru-client + # super-csv + # xblock + # xblock-utils six==1.16.0 # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # analytics-python + # bleach + # codejail-includes + # crowdsourcehinter-xblock + # edx-ace + # edx-auth-backends + # edx-ccx-keys + # edx-codejail + # edx-django-release-util + # edx-milestones + # edx-rbac + # event-tracking + # fs + # fs-s3fs + # html5lib + # interchange # isodate # jenkinsapi + # libsass + # optimizely-sdk + # pansi + # paver + # py2neo + # pyjwkest # python-dateutil slumber==0.7.1 - # via edx-rest-api-client + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-bulk-grades + # edx-enterprise + # edx-rest-api-client +snowflake-connector-python==3.12.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +social-auth-app-django==5.4.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-auth-backends +social-auth-core==4.5.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-auth-backends + # social-auth-app-django +sorl-thumbnail==12.10.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-django-wiki +sortedcontainers==2.4.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # snowflake-connector-python +soupsieve==2.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # beautifulsoup4 sqlparse==0.5.1 - # via django + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django +staff-graded-xblock==2.3.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt stevedore==5.2.0 - # via edx-django-utils + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # code-annotations + # edx-ace + # edx-django-utils + # edx-enterprise + # edx-opaque-keys +super-csv==3.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-bulk-grades +sympy==1.13.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # openedx-calc +testfixtures==8.3.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-enterprise +text-unidecode==1.3 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # python-slugify +tinycss2==1.2.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # bleach +tomlkit==0.13.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # snowflake-connector-python +tqdm==4.66.5 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # nltk + # openai typing-extensions==4.12.2 - # via simple-salesforce + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # django-countries + # edx-opaque-keys + # jwcrypto + # pydantic + # pydantic-core + # pylti1p3 + # simple-salesforce + # snowflake-connector-python +tzdata==2024.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # celery unicodecsv==0.14.1 - # via -r scripts/user_retirement/requirements/base.in + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # -r scripts/user_retirement/requirements/base.in + # edx-enterprise uritemplate==4.1.1 - # via google-api-python-client + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # drf-spectacular + # drf-yasg + # google-api-python-client urllib3==1.26.19 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt # botocore + # elasticsearch + # py2neo # requests +user-util==1.1.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +vine==5.1.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # amqp + # celery + # kombu +voluptuous==0.15.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # ora2 +walrus==0.9.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-event-bus-redis +watchdog==4.0.1 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +wcwidth==0.2.13 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # prompt-toolkit +web-fragments==2.2.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # crowdsourcehinter-xblock + # edx-sga + # staff-graded-xblock + # xblock + # xblock-utils +webencodings==0.5.1 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # bleach + # html5lib + # tinycss2 +webob==1.8.7 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # xblock +wrapt==1.16.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +xblock[django]==4.0.1 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # acid-xblock + # crowdsourcehinter-xblock + # done-xblock + # edx-completion + # edx-sga + # edx-when + # lti-consumer-xblock + # ora2 + # staff-graded-xblock + # xblock-drag-and-drop-v2 + # xblock-google-drive + # xblock-utils +xblock-drag-and-drop-v2==4.0.3 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +xblock-google-drive==0.7.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +xblock-poll==1.14.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +xblock-utils==4.0.0 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # edx-sga + # xblock-poll +xmlsec==1.3.13 + # via + # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # python3-saml +xss-utils==0.6.0 + # via -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt +yarl==1.9.4 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # aiohttp zeep==4.2.1 # via simple-salesforce +zipp==3.19.2 + # via + # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt + # importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index 006eabeef4..3fb96783ca 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -4,219 +4,1256 @@ # # make upgrade # +-e git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack + # via -r scripts/user_retirement/requirements/base.txt +acid-xblock==0.3.1 + # via -r scripts/user_retirement/requirements/base.txt +aiohappyeyeballs==2.3.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # aiohttp +aiohttp==3.10.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # geoip2 + # openai +aiosignal==1.3.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # aiohttp +algoliasearch==3.0.0 + # via -r scripts/user_retirement/requirements/base.txt +amqp==5.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # kombu +analytics-python==1.4.post1 + # via -r scripts/user_retirement/requirements/base.txt +aniso8601==9.0.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-tincan-py35 +annotated-types==0.7.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # pydantic +appdirs==1.4.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # fs asgiref==3.8.1 # via # -r scripts/user_retirement/requirements/base.txt # django + # django-cors-headers + # django-countries +asn1crypto==1.5.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # snowflake-connector-python attrs==24.2.0 # via # -r scripts/user_retirement/requirements/base.txt + # aiohttp + # edx-ace + # jsonschema + # lti-consumer-xblock + # openedx-events + # openedx-learning + # referencing # zeep -backoff==2.2.1 +babel==2.15.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # enmerkar + # enmerkar-underscore +backoff==1.10.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # analytics-python +bcrypt==4.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # paramiko +beautifulsoup4==4.12.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # pynliner +billiard==4.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # celery +bleach[css]==6.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # lti-consumer-xblock + # openedx-django-wiki + # ora2 + # xblock-drag-and-drop-v2 + # xblock-poll +boto==2.49.0 # via -r scripts/user_retirement/requirements/base.txt boto3==1.34.154 # via # -r scripts/user_retirement/requirements/base.txt + # django-ses + # fs-s3fs # moto + # ora2 botocore==1.34.154 # via # -r scripts/user_retirement/requirements/base.txt # boto3 # moto # s3transfer +bridgekeeper==0.9 + # via -r scripts/user_retirement/requirements/base.txt +cachecontrol==0.14.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # firebase-admin cachetools==5.4.0 # via # -r scripts/user_retirement/requirements/base.txt # google-auth +camel-converter[pydantic]==3.1.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # meilisearch +celery==5.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-celery-results + # django-user-tasks + # edx-celeryutils + # edx-enterprise + # event-tracking + # openedx-learning certifi==2024.7.4 # via # -r scripts/user_retirement/requirements/base.txt + # elasticsearch + # py2neo # requests + # snowflake-connector-python cffi==1.17.0 # via # -r scripts/user_retirement/requirements/base.txt # cryptography # pynacl + # snowflake-connector-python +chardet==5.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # pysrt charset-normalizer==2.0.12 # via # -r scripts/user_retirement/requirements/base.txt # requests + # snowflake-connector-python +chem==1.3.0 + # via -r scripts/user_retirement/requirements/base.txt click==8.1.6 # via # -r scripts/user_retirement/requirements/base.txt + # celery + # click-didyoumean + # click-plugins + # click-repl + # code-annotations # edx-django-utils -cryptography==43.0.0 + # nltk + # user-util +click-didyoumean==0.3.1 # via # -r scripts/user_retirement/requirements/base.txt + # celery +click-plugins==1.1.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # celery +click-repl==0.3.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # celery +code-annotations==1.8.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-toggles +codejail-includes==1.0.0 + # via -r scripts/user_retirement/requirements/base.txt +crowdsourcehinter-xblock==0.7 + # via -r scripts/user_retirement/requirements/base.txt +cryptography==42.0.8 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-fernet-fields-v2 + # edx-enterprise + # jwcrypto # moto + # optimizely-sdk + # paramiko + # pgpy # pyjwt + # pyopenssl + # snowflake-connector-python + # social-auth-core +cssutils==2.11.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # pynliner ddt==1.7.2 # via -r scripts/user_retirement/requirements/testing.in +defusedxml==0.7.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # djangorestframework-xml + # ora2 + # python3-openid + # social-auth-core django==4.2.15 # via # -r scripts/user_retirement/requirements/base.txt + # django-appconf + # django-celery-results + # django-classy-tags + # django-config-models + # django-cors-headers # django-crum + # django-fernet-fields-v2 + # django-filter + # django-js-asset + # django-method-override + # django-model-utils + # django-multi-email-field + # django-mysql + # django-oauth-toolkit + # django-push-notifications + # django-sekizai + # django-ses + # django-statici18n + # django-storages + # django-user-tasks # django-waffle + # djangorestframework + # done-xblock + # drf-jwt + # drf-spectacular + # drf-yasg + # edx-ace + # edx-api-doc-tools + # edx-auth-backends + # edx-bulk-grades + # edx-celeryutils + # edx-completion + # edx-django-release-util + # edx-django-sites-extensions # edx-django-utils + # edx-drf-extensions + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-i18n-tools + # edx-milestones + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-search + # edx-submissions + # edx-toggles + # edx-token-utils + # edx-when + # edxval + # enmerkar + # enmerkar-underscore + # event-tracking + # help-tokens + # jsonfield + # lti-consumer-xblock + # openedx-django-pyfs + # openedx-django-wiki + # openedx-events + # openedx-filters + # openedx-learning + # ora2 + # social-auth-app-django + # super-csv + # xblock-google-drive + # xss-utils +django-appconf==1.0.6 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-statici18n +django-cache-memoize==0.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +django-celery-results==2.5.1 + # via -r scripts/user_retirement/requirements/base.txt +django-classy-tags==4.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-sekizai +django-config-models==2.7.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-name-affirmation + # lti-consumer-xblock +django-cors-headers==4.4.0 + # via -r scripts/user_retirement/requirements/base.txt +django-countries==7.6.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise django-crum==0.7.9 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils + # edx-enterprise + # edx-proctoring + # edx-rbac + # edx-toggles + # super-csv +django-fernet-fields-v2==0.9 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +django-filter==24.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # lti-consumer-xblock +django-ipware==7.0.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-proctoring +django-js-asset==2.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-mptt +django-method-override==1.0.4 + # via -r scripts/user_retirement/requirements/base.txt +django-model-utils==4.5.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-user-tasks + # edx-bulk-grades + # edx-celeryutils + # edx-completion + # edx-enterprise + # edx-milestones + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-submissions + # edx-when + # edxval + # ora2 + # super-csv +django-mptt==0.16.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-django-wiki +django-multi-email-field==0.7.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +django-mysql==4.14.0 + # via -r scripts/user_retirement/requirements/base.txt +django-oauth-toolkit==1.7.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +django-object-actions==4.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +django-pipeline==3.1.0 + # via -r scripts/user_retirement/requirements/base.txt +django-push-notifications==3.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-ace +django-ratelimit==4.1.0 + # via -r scripts/user_retirement/requirements/base.txt +django-sekizai==4.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-django-wiki +django-ses==4.1.0 + # via -r scripts/user_retirement/requirements/base.txt +django-simple-history==3.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # ora2 +django-statici18n==2.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # lti-consumer-xblock + # xblock-drag-and-drop-v2 + # xblock-poll +django-storages==1.14.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # edxval +django-user-tasks==3.2.0 + # via -r scripts/user_retirement/requirements/base.txt django-waffle==4.1.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils + # edx-drf-extensions + # edx-enterprise + # edx-proctoring + # edx-toggles +django-webpack-loader==0.7.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-proctoring +djangorestframework==3.14.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-config-models + # django-user-tasks + # drf-jwt + # drf-spectacular + # drf-yasg + # edx-api-doc-tools + # edx-completion + # edx-drf-extensions + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-submissions + # openedx-learning + # ora2 + # super-csv +djangorestframework-xml==2.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +dnspython==2.6.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # pymongo +done-xblock==2.3.0 + # via -r scripts/user_retirement/requirements/base.txt +drf-jwt==1.19.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-drf-extensions +drf-spectacular==0.27.2 + # via -r scripts/user_retirement/requirements/base.txt +drf-yasg==1.21.7 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-user-tasks + # edx-api-doc-tools +edx-ace==1.11.1 + # via -r scripts/user_retirement/requirements/base.txt +edx-api-doc-tools==1.8.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-name-affirmation +edx-auth-backends==4.3.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-braze-client==0.2.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +edx-bulk-grades==1.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # staff-graded-xblock +edx-ccx-keys==1.3.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # lti-consumer-xblock + # openedx-events +edx-celeryutils==1.3.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-name-affirmation + # super-csv +edx-codejail==3.4.1 + # via -r scripts/user_retirement/requirements/base.txt +edx-completion==4.6.7 + # via -r scripts/user_retirement/requirements/base.txt +edx-django-release-util==1.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-submissions + # edxval +edx-django-sites-extensions==4.2.0 + # via -r scripts/user_retirement/requirements/base.txt edx-django-utils==5.15.0 # via # -r scripts/user_retirement/requirements/base.txt + # django-config-models + # edx-ace + # edx-drf-extensions + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-name-affirmation # edx-rest-api-client -edx-rest-api-client==5.7.1 - # via -r scripts/user_retirement/requirements/base.txt -google-api-core==2.19.1 + # edx-toggles + # edx-when + # event-tracking + # openedx-events + # ora2 + # super-csv +edx-drf-extensions==10.3.0 # via # -r scripts/user_retirement/requirements/base.txt - # google-api-python-client -google-api-python-client==2.139.0 + # edx-completion + # edx-enterprise + # edx-name-affirmation + # edx-organizations + # edx-proctoring + # edx-rbac + # edx-when + # edxval + # openedx-learning +edx-enterprise==4.23.4 # via -r scripts/user_retirement/requirements/base.txt +edx-event-bus-kafka==5.8.1 + # via -r scripts/user_retirement/requirements/base.txt +edx-event-bus-redis==0.5.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-i18n-tools==1.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 +edx-milestones==0.6.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-name-affirmation==2.3.7 + # via -r scripts/user_retirement/requirements/base.txt +edx-opaque-keys[django]==2.10.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-bulk-grades + # edx-ccx-keys + # edx-completion + # edx-drf-extensions + # edx-enterprise + # edx-milestones + # edx-organizations + # edx-proctoring + # edx-when + # lti-consumer-xblock + # openedx-events + # ora2 +edx-organizations==6.13.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-proctoring==4.18.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-proctoring-proctortrack +edx-rbac==1.9.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +edx-rest-api-client==5.7.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-proctoring +edx-search==4.0.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-sga==0.25.0 + # via -r scripts/user_retirement/requirements/base.txt +edx-submissions==3.7.6 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 +edx-tincan-py35==1.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +edx-toggles==5.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-completion + # edx-enterprise + # edx-event-bus-kafka + # edx-event-bus-redis + # edx-name-affirmation + # edx-search + # edxval + # event-tracking + # ora2 +edx-token-utils==0.2.1 + # via -r scripts/user_retirement/requirements/base.txt +edx-when==2.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-proctoring +edxval==2.5.0 + # via -r scripts/user_retirement/requirements/base.txt +elasticsearch==7.13.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-search +enmerkar==0.7.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # enmerkar-underscore +enmerkar-underscore==2.3.0 + # via -r scripts/user_retirement/requirements/base.txt +event-tracking==3.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-completion + # edx-proctoring + # edx-search +fastavro==1.9.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-events +filelock==3.15.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # snowflake-connector-python +firebase-admin==6.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-ace +frozenlist==1.4.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # aiohttp + # aiosignal +fs==2.0.27 + # via + # -r scripts/user_retirement/requirements/base.txt + # fs-s3fs + # openedx-django-pyfs + # xblock +fs-s3fs==0.1.8 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-django-pyfs +future==1.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # pyjwkest +geoip2==4.8.0 + # via -r scripts/user_retirement/requirements/base.txt +glob2==0.7 + # via -r scripts/user_retirement/requirements/base.txt +google-api-core[grpc]==2.19.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # firebase-admin + # google-api-python-client + # google-cloud-core + # google-cloud-firestore + # google-cloud-storage +google-api-python-client==2.139.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # firebase-admin google-auth==2.32.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-core # google-api-python-client # google-auth-httplib2 + # google-cloud-core + # google-cloud-firestore + # google-cloud-storage google-auth-httplib2==0.2.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-python-client +google-cloud-core==2.4.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # google-cloud-firestore + # google-cloud-storage +google-cloud-firestore==2.17.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # firebase-admin +google-cloud-storage==2.18.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # firebase-admin +google-crc32c==1.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # google-cloud-storage + # google-resumable-media +google-resumable-media==2.7.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # google-cloud-storage googleapis-common-protos==1.63.2 # via # -r scripts/user_retirement/requirements/base.txt # google-api-core + # grpcio-status +grpcio==1.65.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-core + # grpcio-status +grpcio-status==1.62.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # google-api-core +gunicorn==22.0.0 + # via -r scripts/user_retirement/requirements/base.txt +help-tokens==2.4.0 + # via -r scripts/user_retirement/requirements/base.txt +html5lib==1.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 httplib2==0.22.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-python-client # google-auth-httplib2 +icalendar==5.0.13 + # via -r scripts/user_retirement/requirements/base.txt idna==3.7 # via # -r scripts/user_retirement/requirements/base.txt + # optimizely-sdk # requests + # snowflake-connector-python + # yarl +importlib-metadata==6.11.0 + # via -r scripts/user_retirement/requirements/base.txt +inflection==0.5.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # drf-spectacular + # drf-yasg iniconfig==2.0.0 # via pytest +interchange==2021.0.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # py2neo +ipaddress==1.0.23 + # via -r scripts/user_retirement/requirements/base.txt isodate==0.6.1 # via # -r scripts/user_retirement/requirements/base.txt + # python3-saml # zeep jenkinsapi==0.3.13 # via -r scripts/user_retirement/requirements/base.txt jinja2==3.1.4 - # via moto + # via + # -r scripts/user_retirement/requirements/base.txt + # code-annotations + # moto jmespath==1.0.1 # via # -r scripts/user_retirement/requirements/base.txt # boto3 # botocore +joblib==1.4.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # nltk +jsondiff==2.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +jsonfield==3.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-celeryutils + # edx-enterprise + # edx-proctoring + # edx-submissions + # lti-consumer-xblock + # ora2 +jsonschema==4.23.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # drf-spectacular + # optimizely-sdk +jsonschema-specifications==2023.12.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # jsonschema +jwcrypto==1.5.6 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-oauth-toolkit + # pylti1p3 +kombu==5.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # celery +laboratory==1.0.2 + # via -r scripts/user_retirement/requirements/base.txt +lazy==1.6 + # via + # -r scripts/user_retirement/requirements/base.txt + # acid-xblock + # lti-consumer-xblock + # ora2 + # xblock +libsass==0.10.0 + # via -r scripts/user_retirement/requirements/base.txt +loremipsum==1.0.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 +lti-consumer-xblock==9.11.3 + # via -r scripts/user_retirement/requirements/base.txt lxml==4.9.4 # via # -r scripts/user_retirement/requirements/base.txt + # edx-i18n-tools + # edxval + # lti-consumer-xblock + # olxcleaner + # openedx-calc + # ora2 + # python3-saml + # xblock + # xmlsec # zeep +mailsnake==1.6.4 + # via -r scripts/user_retirement/requirements/base.txt +mako==1.3.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # acid-xblock + # lti-consumer-xblock + # xblock + # xblock-utils +markdown==3.3.7 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-django-wiki + # staff-graded-xblock + # xblock-poll markupsafe==2.1.5 # via + # -r scripts/user_retirement/requirements/base.txt + # chem # jinja2 + # mako + # openedx-calc # werkzeug + # xblock +maxminddb==2.6.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # geoip2 +meilisearch==0.31.4 + # via -r scripts/user_retirement/requirements/base.txt mock==5.1.0 - # via -r scripts/user_retirement/requirements/testing.in + # via + # -r scripts/user_retirement/requirements/base.txt + # -r scripts/user_retirement/requirements/testing.in +mongoengine==0.28.2 + # via -r scripts/user_retirement/requirements/base.txt +monotonic==1.6 + # via + # -r scripts/user_retirement/requirements/base.txt + # analytics-python + # py2neo more-itertools==10.3.0 # via # -r scripts/user_retirement/requirements/base.txt + # cssutils # simple-salesforce moto==4.2.14 # via -r scripts/user_retirement/requirements/testing.in +mpmath==1.3.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # sympy +msgpack==1.0.8 + # via + # -r scripts/user_retirement/requirements/base.txt + # cachecontrol +multidict==6.0.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # aiohttp + # yarl +mysqlclient==2.2.4 + # via -r scripts/user_retirement/requirements/base.txt newrelic==9.12.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils +nh3==0.2.18 + # via -r scripts/user_retirement/requirements/base.txt +nltk==3.8.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # chem +nodeenv==1.9.1 + # via -r scripts/user_retirement/requirements/base.txt +numpy==1.26.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # chem + # openedx-calc + # scipy + # shapely +oauthlib==3.2.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-oauth-toolkit + # lti-consumer-xblock + # requests-oauthlib + # social-auth-core +olxcleaner==0.3.0 + # via -r scripts/user_retirement/requirements/base.txt +openai==0.28.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +openedx-atlas==0.6.1 + # via -r scripts/user_retirement/requirements/base.txt +openedx-calc==3.1.0 + # via -r scripts/user_retirement/requirements/base.txt +openedx-django-pyfs==3.6.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # lti-consumer-xblock + # xblock +openedx-django-require==2.1.0 + # via -r scripts/user_retirement/requirements/base.txt +openedx-django-wiki==2.1.0 + # via -r scripts/user_retirement/requirements/base.txt +openedx-events==9.11.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-event-bus-kafka + # edx-event-bus-redis + # event-tracking + # ora2 +openedx-filters==1.9.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # lti-consumer-xblock + # ora2 +openedx-learning==0.10.1 + # via -r scripts/user_retirement/requirements/base.txt +openedx-mongodbproxy==0.2.1 + # via -r scripts/user_retirement/requirements/base.txt +optimizely-sdk==4.1.1 + # via -r scripts/user_retirement/requirements/base.txt +ora2==6.11.2 + # via -r scripts/user_retirement/requirements/base.txt packaging==24.1 - # via pytest + # via + # -r scripts/user_retirement/requirements/base.txt + # drf-yasg + # gunicorn + # py2neo + # pytest + # snowflake-connector-python +pansi==2020.7.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # py2neo +paramiko==3.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +path==16.11.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-i18n-tools + # path-py +path-py==12.5.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # ora2 + # staff-graded-xblock +paver==1.3.4 + # via -r scripts/user_retirement/requirements/base.txt pbr==6.0.0 # via # -r scripts/user_retirement/requirements/base.txt # stevedore +pgpy==0.6.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +piexif==1.1.3 + # via -r scripts/user_retirement/requirements/base.txt +pillow==10.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-organizations + # edxval platformdirs==4.2.2 # via # -r scripts/user_retirement/requirements/base.txt + # snowflake-connector-python # zeep pluggy==1.5.0 # via pytest +polib==1.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-i18n-tools +prompt-toolkit==3.0.47 + # via + # -r scripts/user_retirement/requirements/base.txt + # click-repl proto-plus==1.24.0 # via # -r scripts/user_retirement/requirements/base.txt # google-api-core -protobuf==5.27.3 + # google-cloud-firestore +protobuf==4.25.4 # via # -r scripts/user_retirement/requirements/base.txt # google-api-core + # google-cloud-firestore # googleapis-common-protos + # grpcio-status # proto-plus psutil==6.0.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils +py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz + # via -r scripts/user_retirement/requirements/base.txt pyasn1==0.6.0 # via # -r scripts/user_retirement/requirements/base.txt + # pgpy # pyasn1-modules # rsa pyasn1-modules==0.4.0 # via # -r scripts/user_retirement/requirements/base.txt # google-auth +pycountry==24.6.1 + # via -r scripts/user_retirement/requirements/base.txt pycparser==2.22 # via # -r scripts/user_retirement/requirements/base.txt # cffi +pycryptodomex==3.20.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-proctoring + # lti-consumer-xblock + # pyjwkest +pydantic==2.8.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # camel-converter +pydantic-core==2.20.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # pydantic +pygments==2.18.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # py2neo +pyjwkest==1.4.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-token-utils + # lti-consumer-xblock pyjwt[crypto]==2.9.0 # via # -r scripts/user_retirement/requirements/base.txt + # drf-jwt + # edx-auth-backends + # edx-drf-extensions + # edx-proctoring # edx-rest-api-client + # firebase-admin + # pylti1p3 # simple-salesforce + # snowflake-connector-python + # social-auth-core +pylatexenc==2.10 + # via + # -r scripts/user_retirement/requirements/base.txt + # olxcleaner +pylti1p3==2.0.0 + # via -r scripts/user_retirement/requirements/base.txt +pymemcache==4.0.0 + # via -r scripts/user_retirement/requirements/base.txt +pymongo==4.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-opaque-keys + # event-tracking + # mongoengine + # openedx-mongodbproxy pynacl==1.5.0 # via # -r scripts/user_retirement/requirements/base.txt # edx-django-utils + # paramiko +pynliner==0.8.0 + # via -r scripts/user_retirement/requirements/base.txt +pyopenssl==24.2.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # optimizely-sdk + # snowflake-connector-python pyparsing==3.1.2 # via # -r scripts/user_retirement/requirements/base.txt + # chem # httplib2 + # openedx-calc +pyrsistent==0.20.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # optimizely-sdk +pysrt==1.1.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # edxval pytest==8.3.2 # via -r scripts/user_retirement/requirements/testing.in python-dateutil==2.9.0.post0 # via # -r scripts/user_retirement/requirements/base.txt + # analytics-python # botocore + # celery + # edx-ace + # edx-enterprise + # edx-proctoring + # icalendar # moto + # olxcleaner + # ora2 + # xblock +python-ipware==3.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # django-ipware +python-memcached==1.62 + # via -r scripts/user_retirement/requirements/base.txt +python-slugify==8.0.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # code-annotations +python-swiftclient==4.6.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 +python3-openid==3.2.0 ; python_version >= "3" + # via + # -r scripts/user_retirement/requirements/base.txt + # social-auth-core +python3-saml==1.16.0 + # via -r scripts/user_retirement/requirements/base.txt pytz==2024.1 # via # -r scripts/user_retirement/requirements/base.txt + # django-ses + # djangorestframework + # drf-yasg + # edx-completion + # edx-enterprise + # edx-proctoring + # edx-submissions + # edx-tincan-py35 + # event-tracking + # fs + # icalendar + # interchange # jenkinsapi + # olxcleaner + # ora2 + # snowflake-connector-python + # xblock # zeep +pyuca==1.2 + # via -r scripts/user_retirement/requirements/base.txt pyyaml==6.0.1 # via # -r scripts/user_retirement/requirements/base.txt + # code-annotations + # drf-spectacular + # drf-yasg + # edx-django-release-util + # edx-i18n-tools + # jsondiff # responses + # xblock +random2==1.0.2 + # via -r scripts/user_retirement/requirements/base.txt +recommender-xblock==2.2.0 + # via -r scripts/user_retirement/requirements/base.txt +redis==5.0.8 + # via + # -r scripts/user_retirement/requirements/base.txt + # walrus +referencing==0.35.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # jsonschema + # jsonschema-specifications +regex==2024.7.24 + # via + # -r scripts/user_retirement/requirements/base.txt + # nltk requests==2.32.3 # via # -r scripts/user_retirement/requirements/base.txt + # algoliasearch + # analytics-python + # cachecontrol + # django-oauth-toolkit + # edx-bulk-grades + # edx-drf-extensions + # edx-enterprise # edx-rest-api-client + # geoip2 # google-api-core + # google-cloud-storage # jenkinsapi + # mailsnake + # meilisearch # moto + # openai + # optimizely-sdk + # pyjwkest + # pylti1p3 + # python-swiftclient # requests-file # requests-mock + # requests-oauthlib # requests-toolbelt # responses + # sailthru-client # simple-salesforce # slumber + # snowflake-connector-python + # social-auth-core + # xblock-google-drive # zeep requests-file==2.1.0 # via @@ -224,6 +1261,10 @@ requests-file==2.1.0 # zeep requests-mock==1.12.1 # via -r scripts/user_retirement/requirements/testing.in +requests-oauthlib==2.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # social-auth-core requests-toolbelt==1.0.0 # via # -r scripts/user_retirement/requirements/base.txt @@ -232,57 +1273,274 @@ responses==0.25.3 # via # -r scripts/user_retirement/requirements/testing.in # moto +rpds-py==0.20.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # jsonschema + # referencing rsa==4.9 # via # -r scripts/user_retirement/requirements/base.txt # google-auth +rules==3.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise + # edx-proctoring + # openedx-learning s3transfer==0.10.2 # via # -r scripts/user_retirement/requirements/base.txt # boto3 +sailthru-client==2.2.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-ace +scipy==1.14.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # chem + # openedx-calc +semantic-version==2.10.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-drf-extensions +shapely==2.0.5 + # via -r scripts/user_retirement/requirements/base.txt simple-salesforce==1.12.6 # via -r scripts/user_retirement/requirements/base.txt simplejson==3.19.2 - # via -r scripts/user_retirement/requirements/base.txt + # via + # -r scripts/user_retirement/requirements/base.txt + # sailthru-client + # super-csv + # xblock + # xblock-utils six==1.16.0 # via # -r scripts/user_retirement/requirements/base.txt + # analytics-python + # bleach + # codejail-includes + # crowdsourcehinter-xblock + # edx-ace + # edx-auth-backends + # edx-ccx-keys + # edx-codejail + # edx-django-release-util + # edx-milestones + # edx-rbac + # event-tracking + # fs + # fs-s3fs + # html5lib + # interchange # isodate # jenkinsapi + # libsass + # optimizely-sdk + # pansi + # paver + # py2neo + # pyjwkest # python-dateutil slumber==0.7.1 # via # -r scripts/user_retirement/requirements/base.txt + # edx-bulk-grades + # edx-enterprise # edx-rest-api-client +snowflake-connector-python==3.12.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +social-auth-app-django==5.4.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-auth-backends +social-auth-core==4.5.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-auth-backends + # social-auth-app-django +sorl-thumbnail==12.10.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-django-wiki +sortedcontainers==2.4.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # snowflake-connector-python +soupsieve==2.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # beautifulsoup4 sqlparse==0.5.1 # via # -r scripts/user_retirement/requirements/base.txt # django +staff-graded-xblock==2.3.0 + # via -r scripts/user_retirement/requirements/base.txt stevedore==5.2.0 # via # -r scripts/user_retirement/requirements/base.txt + # code-annotations + # edx-ace # edx-django-utils + # edx-enterprise + # edx-opaque-keys +super-csv==3.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-bulk-grades +sympy==1.13.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # openedx-calc +testfixtures==8.3.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise +text-unidecode==1.3 + # via + # -r scripts/user_retirement/requirements/base.txt + # python-slugify +tinycss2==1.2.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # bleach +tomlkit==0.13.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # snowflake-connector-python +tqdm==4.66.5 + # via + # -r scripts/user_retirement/requirements/base.txt + # nltk + # openai typing-extensions==4.12.2 # via # -r scripts/user_retirement/requirements/base.txt + # django-countries + # edx-opaque-keys + # jwcrypto + # pydantic + # pydantic-core + # pylti1p3 # simple-salesforce + # snowflake-connector-python +tzdata==2024.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # celery unicodecsv==0.14.1 - # via -r scripts/user_retirement/requirements/base.txt + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-enterprise uritemplate==4.1.1 # via # -r scripts/user_retirement/requirements/base.txt + # drf-spectacular + # drf-yasg # google-api-python-client urllib3==1.26.19 # via # -r scripts/user_retirement/requirements/base.txt # botocore + # elasticsearch + # py2neo # requests # responses +user-util==1.1.0 + # via -r scripts/user_retirement/requirements/base.txt +vine==5.1.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # amqp + # celery + # kombu +voluptuous==0.15.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # ora2 +walrus==0.9.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-event-bus-redis +watchdog==4.0.1 + # via -r scripts/user_retirement/requirements/base.txt +wcwidth==0.2.13 + # via + # -r scripts/user_retirement/requirements/base.txt + # prompt-toolkit +web-fragments==2.2.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # crowdsourcehinter-xblock + # edx-sga + # staff-graded-xblock + # xblock + # xblock-utils +webencodings==0.5.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # bleach + # html5lib + # tinycss2 +webob==1.8.7 + # via + # -r scripts/user_retirement/requirements/base.txt + # xblock werkzeug==3.0.3 # via moto +wrapt==1.16.0 + # via -r scripts/user_retirement/requirements/base.txt +xblock[django]==4.0.1 + # via + # -r scripts/user_retirement/requirements/base.txt + # acid-xblock + # crowdsourcehinter-xblock + # done-xblock + # edx-completion + # edx-sga + # edx-when + # lti-consumer-xblock + # ora2 + # staff-graded-xblock + # xblock-drag-and-drop-v2 + # xblock-google-drive + # xblock-utils +xblock-drag-and-drop-v2==4.0.3 + # via -r scripts/user_retirement/requirements/base.txt +xblock-google-drive==0.7.0 + # via -r scripts/user_retirement/requirements/base.txt +xblock-poll==1.14.0 + # via -r scripts/user_retirement/requirements/base.txt +xblock-utils==4.0.0 + # via + # -r scripts/user_retirement/requirements/base.txt + # edx-sga + # xblock-poll +xmlsec==1.3.13 + # via + # -r scripts/user_retirement/requirements/base.txt + # python3-saml xmltodict==0.13.0 # via moto +xss-utils==0.6.0 + # via -r scripts/user_retirement/requirements/base.txt +yarl==1.9.4 + # via + # -r scripts/user_retirement/requirements/base.txt + # aiohttp zeep==4.2.1 # via # -r scripts/user_retirement/requirements/base.txt # simple-salesforce +zipp==3.19.2 + # via + # -r scripts/user_retirement/requirements/base.txt + # importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools From c9641b35d4a4260383c0da04929fbbdf3b8b13b7 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Wed, 14 Aug 2024 10:20:51 +0200 Subject: [PATCH 09/11] feat: updated user retirement docs --- .../docs/implementation_overview.rst | 22 +++++++++++-- .../user_retirement/docs/service_setup.rst | 33 ++++++++++++++----- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/scripts/user_retirement/docs/implementation_overview.rst b/scripts/user_retirement/docs/implementation_overview.rst index 37a814c1d5..b6cf1a5130 100644 --- a/scripts/user_retirement/docs/implementation_overview.rst +++ b/scripts/user_retirement/docs/implementation_overview.rst @@ -11,8 +11,8 @@ these services. As a consequence, to remove a user's PII, you must be able to request each service containing PII to remove, delete, or unlink the data for that user in that service. -In the user retirement feature, a centralized process (the *driver* scripts) -orchestrates all of these requests. For information about how to configure the +In the user retirement feature, a centralized process (the *driver* scripts) +orchestrates all of these requests. For information about how to configure the driver scripts, see :ref:`driver-setup`. **************************** @@ -46,6 +46,24 @@ table of the states themselves (the ``RetirementState`` model), rather than hard-coding the states. This was done because we cannot predict all the possible states required by all members of the Open edX community. +The workflow also allows the inclusion of additional services that may need to be +retired alongside the core services. These extra services can now be configured within +the Django settings under the ``EXTRA_SERVICES_TO_RETIRE_FROM`` setting. This setting allows +the platform to handle the retirement of PII in custom or internal services that are not +part of the standard Open edX installation but are crucial for specific deployments. + +Here is an example of how the ``EXTRA_SERVICES_TO_RETIRE_FROM`` setting can be configured: +.. code-block:: python + EXTRA_SERVICES_TO_RETIRE_FROM = [ + { + 'name': 'MOCK_SERVICE', + 'service_base_url': 'http://fake_service_base_url', + 'retirement_url_path': 'fake_retirement_url_path' + } + ] +This setting defines a list of services, each with a name, service_base_url, and retirement_url_path, +allowing the user retirement process to include these additional services. + This example state diagram outlines the pathways users follow throughout the workflow: diff --git a/scripts/user_retirement/docs/service_setup.rst b/scripts/user_retirement/docs/service_setup.rst index 4fd59fcfd3..366541a33a 100644 --- a/scripts/user_retirement/docs/service_setup.rst +++ b/scripts/user_retirement/docs/service_setup.rst @@ -36,13 +36,13 @@ defining *derived* settings specific to Open edX. Read more about it in - ``'retired.invalid'`` - The domain part of hashed emails. Used in ``RETIRED_EMAIL_FMT``. * - RETIRED_USERNAME_FMT - - ``lambda settings: + - ``lambda settings: settings.RETIRED_USERNAME_PREFIX + '{}'`` - The username field for a retired user gets transformed into this format, where ``{}`` is replaced with the hash of their username. * - RETIRED_EMAIL_FMT - - ``lambda settings: - settings.RETIRED_EMAIL_PREFIX + '{}@' + + - ``lambda settings: + settings.RETIRED_EMAIL_PREFIX + '{}@' + settings.RETIRED_EMAIL_DOMAIN`` - The email field for a retired user gets transformed into this format, where ``{}`` is replaced with the hash of their email. @@ -60,6 +60,23 @@ defining *derived* settings specific to Open edX. Read more about it in * - FEATURES['ENABLE_ACCOUNT_DELETION'] - True - Whether to display the "Delete My Account" section the account settings page. + * - EXTRA_SERVICES_TO_RETIRE_FROM + - None + - A list of additional services from which user data should be retired. Each entry in the list should be a dictionary with the following keys: + - ``name``: The name of the service. + - ``service_base_url``: The base URL of the service's API. + - ``retirement_url_path``: The API path for the user retirement endpoint. + This setting allows the retirement process to interact with external services not covered by default. For example: + .. code-block:: python + EXTRA_SERVICES_TO_RETIRE_FROM = [ + { + 'name': 'MOCK_SERVICE', + 'service_base_url': 'http://fake_service_base_url', + 'retirement_url_path': 'fake_retirement_url_path' + }, + # Add more services as needed + ] + By default, this setting is empty, meaning no additional services are included. This can be overridden in `https://github.com/openedx/edx-platform/blob/master/lms/envs/common.py. ================= @@ -79,10 +96,10 @@ state at the beginning, and ``COMPLETED``, ``ERRORED``, and ``ABORTED`` states at the end of the list. Also, for every ``RETIRING_foo`` state, there must be a corresponding ``foo_COMPLETE`` state. -Override these states if you need to add any states. Typically, these +Override these states if you need to add any states. Typically, these settings are set in ``lms.yml``. -After you have defined any custom states, populate the states table with the +After you have defined any custom states, populate the states table with the following management command: .. code-block:: bash @@ -120,7 +137,7 @@ Retirement Service User The user retirement driver scripts authenticate with the LMS and IDAs as the retirement service user with oauth client credentials. Therefore, to use the -driver scripts, you must create a retirement service user, and generate a DOT +driver scripts, you must create a retirement service user, and generate a DOT application and client credentials, as in the following command. .. code-block:: bash @@ -162,7 +179,7 @@ that relate to user retirement. - ``/admin/user_api/retirementstate/`` - Represents the table of states defined in ``RETIREMENT_STATES`` and populated with ``populate_retirement_states``. - * - User Retirement Requests + * - User Retirement Requests - ``/admin/user_api/userretirementrequest/`` - Represents the table that tracks the user IDs of every learner who has ever requested account deletion. This table is primarily used for @@ -173,7 +190,7 @@ that relate to user retirement. In special cases where you may need to manually intervene with the pipeline, you can use the User Retirement Statuses management page to change the -state for an individual user. For more information about how to handle these +state for an individual user. For more information about how to handle these cases, see :ref:`handling-special-cases`. .. include:: ../../../../links/links.rst From c06416bed78c8607a83fbe35ea26cc020db70231 Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Wed, 14 Aug 2024 10:32:31 +0200 Subject: [PATCH 10/11] fix: dependencies again --- .../docs/implementation_overview.rst | 9 ++++--- .../user_retirement/docs/service_setup.rst | 26 +++++++++++-------- scripts/user_retirement/requirements/base.txt | 2 +- .../user_retirement/requirements/testing.txt | 2 +- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/scripts/user_retirement/docs/implementation_overview.rst b/scripts/user_retirement/docs/implementation_overview.rst index b6cf1a5130..902732a441 100644 --- a/scripts/user_retirement/docs/implementation_overview.rst +++ b/scripts/user_retirement/docs/implementation_overview.rst @@ -53,15 +53,18 @@ the platform to handle the retirement of PII in custom or internal services that part of the standard Open edX installation but are crucial for specific deployments. Here is an example of how the ``EXTRA_SERVICES_TO_RETIRE_FROM`` setting can be configured: + .. code-block:: python - EXTRA_SERVICES_TO_RETIRE_FROM = [ + + EXTRA_SERVICES_TO_RETIRE_FROM = [ { 'name': 'MOCK_SERVICE', 'service_base_url': 'http://fake_service_base_url', 'retirement_url_path': 'fake_retirement_url_path' } - ] -This setting defines a list of services, each with a name, service_base_url, and retirement_url_path, + ] + +This setting defines a list of services, each with a ``name``, ``service_base_url``, and ``retirement_url_path``, allowing the user retirement process to include these additional services. This example state diagram outlines the pathways users follow throughout the diff --git a/scripts/user_retirement/docs/service_setup.rst b/scripts/user_retirement/docs/service_setup.rst index 366541a33a..58a0f41001 100644 --- a/scripts/user_retirement/docs/service_setup.rst +++ b/scripts/user_retirement/docs/service_setup.rst @@ -63,20 +63,24 @@ defining *derived* settings specific to Open edX. Read more about it in * - EXTRA_SERVICES_TO_RETIRE_FROM - None - A list of additional services from which user data should be retired. Each entry in the list should be a dictionary with the following keys: + - ``name``: The name of the service. - ``service_base_url``: The base URL of the service's API. - ``retirement_url_path``: The API path for the user retirement endpoint. - This setting allows the retirement process to interact with external services not covered by default. For example: - .. code-block:: python - EXTRA_SERVICES_TO_RETIRE_FROM = [ - { - 'name': 'MOCK_SERVICE', - 'service_base_url': 'http://fake_service_base_url', - 'retirement_url_path': 'fake_retirement_url_path' - }, - # Add more services as needed - ] - By default, this setting is empty, meaning no additional services are included. This can be overridden in `https://github.com/openedx/edx-platform/blob/master/lms/envs/common.py. + + This setting allows the retirement process to interact with external services not covered by default. For example: + + .. code-block:: python + + EXTRA_SERVICES_TO_RETIRE_FROM = [ + { + 'name': 'MOCK_SERVICE', + 'service_base_url': 'http://fake_service_base_url', + 'retirement_url_path': 'fake_retirement_url_path' + } + ] + + By default, this setting is empty, meaning no additional services are included. This can be overridden in `common.py `_. ================= diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt index b0a649c675..f57f1dad43 100644 --- a/scripts/user_retirement/requirements/base.txt +++ b/scripts/user_retirement/requirements/base.txt @@ -534,7 +534,7 @@ edx-drf-extensions==10.3.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.23.4 +edx-enterprise==4.23.8 # via # -c scripts/user_retirement/requirements/../../../requirements/constraints.txt # -r scripts/user_retirement/requirements/../../../requirements/edx/base.txt diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt index 3fb96783ca..6231b3bb36 100644 --- a/scripts/user_retirement/requirements/testing.txt +++ b/scripts/user_retirement/requirements/testing.txt @@ -526,7 +526,7 @@ edx-drf-extensions==10.3.0 # edx-when # edxval # openedx-learning -edx-enterprise==4.23.4 +edx-enterprise==4.23.8 # via -r scripts/user_retirement/requirements/base.txt edx-event-bus-kafka==5.8.1 # via -r scripts/user_retirement/requirements/base.txt From b65550c79629b572bd2fab783f05f517c02f8f1b Mon Sep 17 00:00:00 2001 From: Jade Olivier Date: Wed, 14 Aug 2024 13:48:54 +0200 Subject: [PATCH 11/11] fix: change settings config to empty list not dict --- lms/envs/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/envs/common.py b/lms/envs/common.py index 1057c798f6..980aba1e83 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -4996,7 +4996,7 @@ RETIREMENT_STATES = [ 'COMPLETE', ] -EXTRA_SERVICES_TO_RETIRE_FROM = {} +EXTRA_SERVICES_TO_RETIRE_FROM = [] USERNAME_REPLACEMENT_WORKER = "REPLACE WITH VALID USERNAME"