edx-enterprise-data 9.2.2__tar.gz → 9.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/CHANGELOG.rst +9 -0
- {edx_enterprise_data-9.2.2/edx_enterprise_data.egg-info → edx_enterprise_data-9.4.0}/PKG-INFO +1 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0/edx_enterprise_data.egg-info}/PKG-INFO +1 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/__init__.py +1 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py +51 -61
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py +71 -4
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/base.txt +33 -35
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/ci.txt +6 -6
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/constraints.txt +7 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/dev.txt +58 -54
- edx_enterprise_data-9.4.0/requirements/django.txt +1 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/pip.txt +1 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/pip_tools.txt +2 -2
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/quality.txt +60 -56
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/test-master.txt +34 -36
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/test-reporting.txt +27 -25
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/test.txt +35 -37
- edx_enterprise_data-9.2.2/requirements/django.txt +0 -1
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/LICENSE +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/MANIFEST.in +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/README.md +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/edx_enterprise_data.egg-info/SOURCES.txt +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/edx_enterprise_data.egg-info/requires.txt +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/edx_enterprise_data.egg-info/top_level.txt +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/constants.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/data_loaders.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/queries/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/tables/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/tables/base.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/tables/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/tables/skills_daily_rollup_admin_dash.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/admin_analytics/database/utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/urls.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v0/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v0/serializers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v0/urls.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v0/views.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/serializers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/urls.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/analytics_completions.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/analytics_engagements.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/analytics_enrollments.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/analytics_leaderboard.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/base.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/enterprise_admin.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/enterprise_learner.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/api/v1/views/enterprise_offers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/apps.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/clients.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/constants.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/filters.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/fixtures/enterprise_user.json +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_dummy_data.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0034_auto_20230907_0834.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0035_auto_20230907_1154.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0039_auto_20240212_1403.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0040_auto_20240718_0536_squashed_0043_alter_enterpriselearnerenrollment_enterprise_enrollment_id.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/0044_enterpriseexecedlcmoduleperformance.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/migrations/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/models.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/paginators.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/renderers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/settings/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/settings/test.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/signals.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/mock_analytics_data.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/mock_enrollments.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/test_analytics_engagements.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/test_analytics_enrollments.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/test_analytics_leaderboard.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/test_data_loaders.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/admin_analytics/test_enterprise_completions.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v0/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v1/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v1/test_views.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/api/v1/views/test_enterprise_admin.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/factories.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/mixins.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/test_clients.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/test_filters.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/test_models.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/test_utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/tests/test_views.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/urls.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data/utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/admin.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/apps.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/constants.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/migrations/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/models.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/rules.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/tests/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/tests/factories.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_data_roles/tests/test_models.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/clients/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/clients/enterprise.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/clients/s3.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/clients/snowflake.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/clients/vertica.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/delivery_method.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/external_resource_link_report.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/fixtures/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/reporter.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/send_enterprise_reports.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/__init__.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_clients.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_delivery_method.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_external_link_report.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_reporter.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/test_vertica_client.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/tests/utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/enterprise_reporting/utils.py +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/base.in +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/common_constraints.txt +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/requirements/reporting.in +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/setup.cfg +0 -0
- {edx_enterprise_data-9.2.2 → edx_enterprise_data-9.4.0}/setup.py +0 -0
@@ -16,6 +16,15 @@ Unreleased
|
|
16
16
|
|
17
17
|
=========================
|
18
18
|
|
19
|
+
[9.4.0] - 2024-09-30
|
20
|
+
---------------------
|
21
|
+
* chore: upgrade python requirements
|
22
|
+
* pin astriod and edx-lint packages
|
23
|
+
|
24
|
+
[9.3.0] - 2024-09-30
|
25
|
+
---------------------
|
26
|
+
* refactor: Further improvement in SQL queries for leaderboard API endpoint.
|
27
|
+
|
19
28
|
[9.2.2] - 2024-09-27
|
20
29
|
---------------------
|
21
30
|
* fix: remove the cache logging on EnterpriseLearnerEnrollmentViewSet.
|
@@ -111,59 +111,62 @@ class FactEngagementAdminDashQueries:
|
|
111
111
|
"""
|
112
112
|
|
113
113
|
@staticmethod
|
114
|
-
def
|
114
|
+
def get_engagement_data_for_leaderboard_query():
|
115
115
|
"""
|
116
|
-
Get the query to fetch the
|
116
|
+
Get the query to fetch the engagement data for leaderboard.
|
117
117
|
|
118
|
-
Query should fetch the
|
118
|
+
Query should fetch the engagement data for like learning time, session length of
|
119
|
+
the enterprise learners to show in the leaderboard.
|
119
120
|
|
120
121
|
Returns:
|
121
|
-
(str): Query to fetch the
|
122
|
+
(str): Query to fetch the engagement data for leaderboard.
|
122
123
|
"""
|
123
124
|
return """
|
124
|
-
WITH Engagement AS (
|
125
|
-
SELECT
|
126
|
-
email,
|
127
|
-
ROUND(SUM(learning_time_seconds) / 3600, 1) as learning_time_hours,
|
128
|
-
SUM(is_engaged) as session_count,
|
129
|
-
CASE
|
130
|
-
WHEN SUM(is_engaged) = 0 THEN 0.0
|
131
|
-
ELSE ROUND(SUM(learning_time_seconds) / 3600 / SUM(is_engaged), 1)
|
132
|
-
END AS average_session_length
|
133
|
-
FROM fact_enrollment_engagement_day_admin_dash
|
134
|
-
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
135
|
-
(activity_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
136
|
-
is_engaged = 1
|
137
|
-
GROUP BY email
|
138
|
-
),
|
139
|
-
Completions AS (
|
140
|
-
SELECT email, count(course_key) as course_completion_count
|
141
|
-
FROM fact_enrollment_admin_dash
|
142
|
-
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
143
|
-
(passed_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
144
|
-
has_passed = 1
|
145
|
-
GROUP BY email
|
146
|
-
)
|
147
125
|
SELECT
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
126
|
+
email,
|
127
|
+
ROUND(SUM(learning_time_seconds) / 3600, 1) as learning_time_hours,
|
128
|
+
SUM(is_engaged) as session_count,
|
129
|
+
CASE
|
130
|
+
WHEN SUM(is_engaged) = 0 THEN 0.0
|
131
|
+
ELSE ROUND(SUM(learning_time_seconds) / 3600 / SUM(is_engaged), 1)
|
132
|
+
END AS average_session_length
|
133
|
+
FROM fact_enrollment_engagement_day_admin_dash
|
134
|
+
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
135
|
+
(activity_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
136
|
+
is_engaged = 1
|
137
|
+
GROUP BY email
|
138
|
+
ORDER BY learning_time_hours DESC
|
160
139
|
LIMIT %(limit)s OFFSET %(offset)s;
|
161
140
|
"""
|
162
141
|
|
142
|
+
@staticmethod
|
143
|
+
def get_completion_data_for_leaderboard_query(email_list: list):
|
144
|
+
"""
|
145
|
+
Get the query to fetch the completions data for leaderboard.
|
146
|
+
|
147
|
+
Query should fetch the completion data for like course completion count of
|
148
|
+
the enterprise learners to show in the leaderboard.
|
149
|
+
|
150
|
+
Arguments:
|
151
|
+
email_list (str): List of emails to filter the completions data.
|
152
|
+
|
153
|
+
Returns:
|
154
|
+
(list<str>): Query to fetch the completions data for leaderboard.
|
155
|
+
"""
|
156
|
+
return f"""
|
157
|
+
SELECT email, count(course_key) as course_completion_count
|
158
|
+
FROM fact_enrollment_admin_dash
|
159
|
+
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
160
|
+
(passed_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
161
|
+
has_passed = 1 AND
|
162
|
+
email IN {str(tuple(email_list))}
|
163
|
+
GROUP BY email;
|
164
|
+
"""
|
165
|
+
|
163
166
|
@staticmethod
|
164
167
|
def get_leaderboard_data_count_query():
|
165
168
|
"""
|
166
|
-
Get the query to fetch the leaderboard row count.
|
169
|
+
Get the query to fetch the leaderboard row count and null email counter.
|
167
170
|
|
168
171
|
Query should fetch the count of rows for the leaderboard data for the enterprise customer.
|
169
172
|
|
@@ -171,26 +174,13 @@ class FactEngagementAdminDashQueries:
|
|
171
174
|
(str): Query to fetch the leaderboard row count.
|
172
175
|
"""
|
173
176
|
return """
|
174
|
-
WITH Engagement AS (
|
175
|
-
SELECT
|
176
|
-
email
|
177
|
-
FROM fact_enrollment_engagement_day_admin_dash
|
178
|
-
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
179
|
-
(activity_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
180
|
-
is_engaged = 1
|
181
|
-
GROUP BY email
|
182
|
-
),
|
183
|
-
Completions AS (
|
184
|
-
SELECT email, count(course_key) as course_completion_count
|
185
|
-
FROM fact_enrollment_admin_dash
|
186
|
-
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
187
|
-
(passed_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
188
|
-
has_passed = 1
|
189
|
-
GROUP BY email
|
190
|
-
)
|
191
177
|
SELECT
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
178
|
+
COUNT(*) OVER () AS record_count,
|
179
|
+
sum(case when email is null then 1 else 0 end) null_count
|
180
|
+
FROM fact_enrollment_engagement_day_admin_dash
|
181
|
+
WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
|
182
|
+
(activity_date BETWEEN %(start_date)s AND %(end_date)s) AND
|
183
|
+
is_engaged = 1
|
184
|
+
GROUP BY email
|
185
|
+
LIMIT 1;
|
196
186
|
"""
|
@@ -153,11 +153,14 @@ class FactEngagementAdminDashTable(BaseTable):
|
|
153
153
|
as_dict=True,
|
154
154
|
)
|
155
155
|
|
156
|
-
def
|
156
|
+
def _get_engagement_data_for_leaderboard(
|
157
157
|
self, enterprise_customer_uuid: UUID, start_date: date, end_date: date, limit: int, offset: int
|
158
158
|
):
|
159
159
|
"""
|
160
|
-
Get the
|
160
|
+
Get the engagement data for leaderboard.
|
161
|
+
|
162
|
+
The engagement data would include fields like learning time, session length of
|
163
|
+
the enterprise learners to show in the leaderboard.
|
161
164
|
|
162
165
|
Arguments:
|
163
166
|
enterprise_customer_uuid (UUID): The UUID of the enterprise customer.
|
@@ -167,10 +170,10 @@ class FactEngagementAdminDashTable(BaseTable):
|
|
167
170
|
offset (int): The number of records to skip.
|
168
171
|
|
169
172
|
Returns:
|
170
|
-
list[dict]: The
|
173
|
+
list[dict]: The engagement data for leaderboard.
|
171
174
|
"""
|
172
175
|
return run_query(
|
173
|
-
query=self.queries.
|
176
|
+
query=self.queries.get_engagement_data_for_leaderboard_query(),
|
174
177
|
params={
|
175
178
|
'enterprise_customer_uuid': enterprise_customer_uuid,
|
176
179
|
'start_date': start_date,
|
@@ -181,6 +184,70 @@ class FactEngagementAdminDashTable(BaseTable):
|
|
181
184
|
as_dict=True,
|
182
185
|
)
|
183
186
|
|
187
|
+
def _get_completion_data_for_leaderboard_query(
|
188
|
+
self, enterprise_customer_uuid: UUID, start_date: date, end_date: date, email_list: list
|
189
|
+
):
|
190
|
+
"""
|
191
|
+
Get the completion data for leaderboard.
|
192
|
+
|
193
|
+
The completion data would include fields like course completion count of enterprise learners of the
|
194
|
+
given enterprise customer.
|
195
|
+
|
196
|
+
Arguments:
|
197
|
+
enterprise_customer_uuid (UUID): The UUID of the enterprise customer.
|
198
|
+
start_date (date): The start date.
|
199
|
+
end_date (date): The end date.
|
200
|
+
email_list (list<str>): List of emails of the enterprise learners.
|
201
|
+
|
202
|
+
Returns:
|
203
|
+
list[dict]: The engagement data for leaderboard.
|
204
|
+
"""
|
205
|
+
return run_query(
|
206
|
+
query=self.queries.get_completion_data_for_leaderboard_query(email_list),
|
207
|
+
params={
|
208
|
+
'enterprise_customer_uuid': enterprise_customer_uuid,
|
209
|
+
'start_date': start_date,
|
210
|
+
'end_date': end_date,
|
211
|
+
},
|
212
|
+
as_dict=True,
|
213
|
+
)
|
214
|
+
|
215
|
+
def get_all_leaderboard_data(
|
216
|
+
self, enterprise_customer_uuid: UUID, start_date: date, end_date: date, limit: int, offset: int
|
217
|
+
):
|
218
|
+
"""
|
219
|
+
Get the leaderboard data for the given enterprise customer.
|
220
|
+
|
221
|
+
Arguments:
|
222
|
+
enterprise_customer_uuid (UUID): The UUID of the enterprise customer.
|
223
|
+
start_date (date): The start date.
|
224
|
+
end_date (date): The end date.
|
225
|
+
limit (int): The maximum number of records to return.
|
226
|
+
offset (int): The number of records to skip.
|
227
|
+
|
228
|
+
Returns:
|
229
|
+
list[dict]: The leaderboard data.
|
230
|
+
"""
|
231
|
+
engagement_data = self._get_engagement_data_for_leaderboard(
|
232
|
+
enterprise_customer_uuid=enterprise_customer_uuid,
|
233
|
+
start_date=start_date,
|
234
|
+
end_date=end_date,
|
235
|
+
limit=limit,
|
236
|
+
offset=offset,
|
237
|
+
)
|
238
|
+
engagement_data_dict = {engagement['email']: engagement for engagement in engagement_data}
|
239
|
+
completion_data = self._get_completion_data_for_leaderboard_query(
|
240
|
+
enterprise_customer_uuid=enterprise_customer_uuid,
|
241
|
+
start_date=start_date,
|
242
|
+
end_date=end_date,
|
243
|
+
email_list=list(engagement_data_dict.keys()),
|
244
|
+
)
|
245
|
+
for completion in completion_data:
|
246
|
+
email = completion['email']
|
247
|
+
engagement_data_dict[email]['course_completion_count'] = completion['course_completion_count']
|
248
|
+
|
249
|
+
return list(engagement_data_dict.values())
|
250
|
+
|
184
251
|
def get_leaderboard_data_count(self, enterprise_customer_uuid: UUID, start_date: date, end_date: date):
|
185
252
|
"""
|
186
253
|
Get the total number of leaderboard records for the given enterprise customer.
|
@@ -10,27 +10,27 @@ asgiref==3.8.1
|
|
10
10
|
# via django
|
11
11
|
asn1crypto==1.5.1
|
12
12
|
# via snowflake-connector-python
|
13
|
-
awscli==1.
|
13
|
+
awscli==1.34.29
|
14
14
|
# via -r requirements/reporting.in
|
15
15
|
bcrypt==4.2.0
|
16
16
|
# via paramiko
|
17
|
-
billiard==4.2.
|
17
|
+
billiard==4.2.1
|
18
18
|
# via celery
|
19
|
-
boto3==1.
|
19
|
+
boto3==1.35.29
|
20
20
|
# via -r requirements/reporting.in
|
21
|
-
botocore==1.
|
21
|
+
botocore==1.35.29
|
22
22
|
# via
|
23
23
|
# awscli
|
24
24
|
# boto3
|
25
25
|
# s3transfer
|
26
26
|
celery==5.3.6
|
27
27
|
# via -r requirements/reporting.in
|
28
|
-
certifi==2024.
|
28
|
+
certifi==2024.8.30
|
29
29
|
# via
|
30
30
|
# py2neo
|
31
31
|
# requests
|
32
32
|
# snowflake-connector-python
|
33
|
-
cffi==1.17.
|
33
|
+
cffi==1.17.1
|
34
34
|
# via
|
35
35
|
# cryptography
|
36
36
|
# pynacl
|
@@ -54,7 +54,7 @@ click-repl==0.3.0
|
|
54
54
|
# via celery
|
55
55
|
colorama==0.4.6
|
56
56
|
# via awscli
|
57
|
-
cryptography==
|
57
|
+
cryptography==43.0.1
|
58
58
|
# via
|
59
59
|
# -r requirements/reporting.in
|
60
60
|
# django-fernet-fields-v2
|
@@ -63,7 +63,7 @@ cryptography==42.0.8
|
|
63
63
|
# pyjwt
|
64
64
|
# pyopenssl
|
65
65
|
# snowflake-connector-python
|
66
|
-
django==4.2.
|
66
|
+
django==4.2.16
|
67
67
|
# via
|
68
68
|
# -c requirements/common_constraints.txt
|
69
69
|
# -r requirements/base.in
|
@@ -85,7 +85,7 @@ django-fernet-fields-v2==0.9
|
|
85
85
|
# via -r requirements/base.in
|
86
86
|
django-filter==24.3
|
87
87
|
# via -r requirements/base.in
|
88
|
-
django-model-utils==
|
88
|
+
django-model-utils==5.0.0
|
89
89
|
# via
|
90
90
|
# -r requirements/base.in
|
91
91
|
# edx-rbac
|
@@ -111,25 +111,25 @@ edx-django-utils==5.15.0
|
|
111
111
|
# -r requirements/base.in
|
112
112
|
# edx-drf-extensions
|
113
113
|
# edx-rest-api-client
|
114
|
-
edx-drf-extensions==10.
|
114
|
+
edx-drf-extensions==10.4.0
|
115
115
|
# via
|
116
116
|
# -r requirements/base.in
|
117
117
|
# edx-rbac
|
118
|
-
edx-opaque-keys==2.
|
118
|
+
edx-opaque-keys==2.11.0
|
119
119
|
# via
|
120
120
|
# -r requirements/base.in
|
121
121
|
# edx-drf-extensions
|
122
|
-
edx-rbac==1.
|
122
|
+
edx-rbac==1.10.0
|
123
123
|
# via -r requirements/base.in
|
124
|
-
edx-rest-api-client==
|
124
|
+
edx-rest-api-client==6.0.0
|
125
125
|
# via -r requirements/base.in
|
126
|
-
factory-boy==3.3.
|
126
|
+
factory-boy==3.3.1
|
127
127
|
# via -r requirements/base.in
|
128
|
-
faker==
|
128
|
+
faker==30.0.0
|
129
129
|
# via factory-boy
|
130
|
-
filelock==3.
|
130
|
+
filelock==3.16.1
|
131
131
|
# via snowflake-connector-python
|
132
|
-
idna==3.
|
132
|
+
idna==3.10
|
133
133
|
# via
|
134
134
|
# requests
|
135
135
|
# snowflake-connector-python
|
@@ -139,13 +139,13 @@ jmespath==1.0.1
|
|
139
139
|
# via
|
140
140
|
# boto3
|
141
141
|
# botocore
|
142
|
-
kombu==5.4.
|
142
|
+
kombu==5.4.2
|
143
143
|
# via celery
|
144
144
|
monotonic==1.6
|
145
145
|
# via py2neo
|
146
146
|
mysql-connector-python==9.0.0
|
147
147
|
# via -r requirements/base.in
|
148
|
-
newrelic==
|
148
|
+
newrelic==10.0.0
|
149
149
|
# via edx-django-utils
|
150
150
|
numpy==1.24.4
|
151
151
|
# via
|
@@ -162,21 +162,21 @@ pandas==2.0.3
|
|
162
162
|
# -r requirements/base.in
|
163
163
|
pansi==2020.7.3
|
164
164
|
# via py2neo
|
165
|
-
paramiko==3.
|
165
|
+
paramiko==3.5.0
|
166
166
|
# via -r requirements/reporting.in
|
167
|
-
pbr==6.
|
167
|
+
pbr==6.1.0
|
168
168
|
# via stevedore
|
169
169
|
pgpy==0.6.0
|
170
170
|
# via -r requirements/reporting.in
|
171
|
-
platformdirs==4.
|
171
|
+
platformdirs==4.3.6
|
172
172
|
# via snowflake-connector-python
|
173
|
-
prompt-toolkit==3.0.
|
173
|
+
prompt-toolkit==3.0.48
|
174
174
|
# via click-repl
|
175
175
|
psutil==6.0.0
|
176
176
|
# via edx-django-utils
|
177
177
|
py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz
|
178
178
|
# via -r requirements/reporting.in
|
179
|
-
pyasn1==0.6.
|
179
|
+
pyasn1==0.6.1
|
180
180
|
# via
|
181
181
|
# pgpy
|
182
182
|
# rsa
|
@@ -192,7 +192,7 @@ pyjwt[crypto]==2.9.0
|
|
192
192
|
# snowflake-connector-python
|
193
193
|
pyminizip==0.2.6
|
194
194
|
# via -r requirements/reporting.in
|
195
|
-
pymongo==4.
|
195
|
+
pymongo==4.9.1
|
196
196
|
# via edx-opaque-keys
|
197
197
|
pynacl==1.5.0
|
198
198
|
# via
|
@@ -207,7 +207,7 @@ python-dateutil==2.9.0.post0
|
|
207
207
|
# faker
|
208
208
|
# pandas
|
209
209
|
# vertica-python
|
210
|
-
pytz==2024.
|
210
|
+
pytz==2024.2
|
211
211
|
# via
|
212
212
|
# interchange
|
213
213
|
# pandas
|
@@ -219,11 +219,10 @@ requests==2.32.3
|
|
219
219
|
# -r requirements/base.in
|
220
220
|
# edx-drf-extensions
|
221
221
|
# edx-rest-api-client
|
222
|
-
# slumber
|
223
222
|
# snowflake-connector-python
|
224
223
|
rsa==4.7.2
|
225
224
|
# via awscli
|
226
|
-
rules==3.
|
225
|
+
rules==3.5
|
227
226
|
# via -r requirements/base.in
|
228
227
|
s3transfer==0.10.2
|
229
228
|
# via
|
@@ -239,31 +238,30 @@ six==1.16.0
|
|
239
238
|
# py2neo
|
240
239
|
# python-dateutil
|
241
240
|
# vertica-python
|
242
|
-
|
243
|
-
# via edx-rest-api-client
|
244
|
-
snowflake-connector-python==3.12.0
|
241
|
+
snowflake-connector-python==3.12.2
|
245
242
|
# via -r requirements/reporting.in
|
246
243
|
sortedcontainers==2.4.0
|
247
244
|
# via snowflake-connector-python
|
248
245
|
sqlparse==0.5.1
|
249
246
|
# via django
|
250
|
-
stevedore==5.
|
247
|
+
stevedore==5.3.0
|
251
248
|
# via
|
252
249
|
# edx-django-utils
|
253
250
|
# edx-opaque-keys
|
254
|
-
tomlkit==0.13.
|
251
|
+
tomlkit==0.13.2
|
255
252
|
# via snowflake-connector-python
|
256
253
|
typing-extensions==4.12.2
|
257
254
|
# via
|
258
255
|
# edx-opaque-keys
|
259
256
|
# snowflake-connector-python
|
260
|
-
tzdata==2024.
|
257
|
+
tzdata==2024.2
|
261
258
|
# via
|
262
259
|
# celery
|
260
|
+
# kombu
|
263
261
|
# pandas
|
264
262
|
unicodecsv==0.14.1
|
265
263
|
# via -r requirements/reporting.in
|
266
|
-
urllib3==1.26.
|
264
|
+
urllib3==1.26.20
|
267
265
|
# via
|
268
266
|
# -c requirements/constraints.txt
|
269
267
|
# botocore
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# make upgrade
|
6
6
|
#
|
7
|
-
cachetools==5.
|
7
|
+
cachetools==5.5.0
|
8
8
|
# via tox
|
9
9
|
chardet==5.2.0
|
10
10
|
# via tox
|
@@ -14,7 +14,7 @@ coverage==7.6.1
|
|
14
14
|
# via -r requirements/ci.in
|
15
15
|
distlib==0.3.8
|
16
16
|
# via virtualenv
|
17
|
-
filelock==3.
|
17
|
+
filelock==3.16.1
|
18
18
|
# via
|
19
19
|
# tox
|
20
20
|
# virtualenv
|
@@ -22,15 +22,15 @@ packaging==24.1
|
|
22
22
|
# via
|
23
23
|
# pyproject-api
|
24
24
|
# tox
|
25
|
-
platformdirs==4.
|
25
|
+
platformdirs==4.3.6
|
26
26
|
# via
|
27
27
|
# tox
|
28
28
|
# virtualenv
|
29
29
|
pluggy==1.5.0
|
30
30
|
# via tox
|
31
|
-
pyproject-api==1.
|
31
|
+
pyproject-api==1.8.0
|
32
32
|
# via tox
|
33
|
-
tox==4.
|
33
|
+
tox==4.20.0
|
34
34
|
# via -r requirements/ci.in
|
35
|
-
virtualenv==20.26.
|
35
|
+
virtualenv==20.26.6
|
36
36
|
# via tox
|
@@ -20,4 +20,10 @@ backports.zoneinfo; python_version<"3.9"
|
|
20
20
|
urllib3<2.0.0
|
21
21
|
|
22
22
|
numpy<=1.24.4
|
23
|
-
pandas<=2.0.3
|
23
|
+
pandas<=2.0.3
|
24
|
+
|
25
|
+
# this is the last supported version for python 3.8.x
|
26
|
+
astroid<=3.2.4
|
27
|
+
|
28
|
+
# upgrade to 5.4.0 causes issues with `importlib`
|
29
|
+
edx-lint<=5.3.7
|