edx-enterprise-data 10.16.6__tar.gz → 10.16.8__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-10.16.6 → edx_enterprise_data-10.16.8}/CHANGELOG.rst +8 -0
- {edx_enterprise_data-10.16.6/edx_enterprise_data.egg-info → edx_enterprise_data-10.16.8}/PKG-INFO +1 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8/edx_enterprise_data.egg-info}/PKG-INFO +1 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/__init__.py +1 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py +29 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/skills_daily_rollup_admin_dash.py +70 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_admin.py +14 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/mock_analytics_data.py +14 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/views/test_enterprise_admin.py +18 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/base.txt +16 -15
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/ci.txt +2 -2
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/common_constraints.txt +12 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/dev.txt +22 -15
- edx_enterprise_data-10.16.8/requirements/django.txt +1 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/pip.txt +2 -2
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/pip_tools.txt +1 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/quality.txt +27 -18
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/test-master.txt +24 -19
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/test-reporting.txt +21 -21
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/test.txt +25 -20
- edx_enterprise_data-10.16.6/requirements/django.txt +0 -1
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/LICENSE +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/MANIFEST.in +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/README.md +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/SOURCES.txt +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/requires.txt +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/top_level.txt +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/constants.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/data_loaders.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/base.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_completion_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_engagement_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/mixins.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/base.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/between.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/equal.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/in_.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/base.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/urls.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/serializers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/urls.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/views.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/serializers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/urls.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_completions.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_engagements.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_enrollments.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_leaderboard.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/base.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_learner.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_offers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/apps.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/cache/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/cache/decorators.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/clients.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/constants.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/exceptions.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/filters.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/fixtures/enterprise_user.json +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_dummy_data.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/pre_warm_analytics_cache.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_pre_warm_analytics_cache.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0034_auto_20230907_0834.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0035_auto_20230907_1154.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0039_auto_20240212_1403.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0040_auto_20240718_0536_squashed_0043_alter_enterpriselearnerenrollment_enterprise_enrollment_id.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0044_enterpriseexecedlcmoduleperformance.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0045_alter_enterpriseexecedlcmoduleperformance_options_and_more.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0046_enterprisegroupmembership.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0047_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0048_alter_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/models.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/paginators.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/renderers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/settings/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/settings/test.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/signals.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/mock_enrollments.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_engagements.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_enrollments.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_leaderboard.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_data_loaders.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_enterprise_completions.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v0/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/test_views.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/factories.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/mixins.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_clients.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_filters.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_models.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_views.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/urls.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data/utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/admin.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/apps.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/constants.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/models.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/rules.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/factories.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/test_models.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/enterprise.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/s3.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/snowflake.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/vertica.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/constants.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/delivery_method.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/external_resource_link_report.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/fixtures/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/reporter.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/send_enterprise_reports.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/__init__.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_clients.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_delivery_method.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_external_link_report.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_reporter.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_vertica_client.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/enterprise_reporting/utils.py +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/base.in +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/constraints.txt +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/reporting.in +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/setup.cfg +0 -0
- {edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/setup.py +0 -0
@@ -16,6 +16,14 @@ Unreleased
|
|
16
16
|
|
17
17
|
=========================
|
18
18
|
|
19
|
+
[10.16.8] - 2025-06-16
|
20
|
+
---------------------
|
21
|
+
* feat: add skills by learning hours metric
|
22
|
+
|
23
|
+
[10.16.7] - 2025-06-11
|
24
|
+
---------------------
|
25
|
+
* chore: pin numpy to versions less then 2.3.0
|
26
|
+
|
19
27
|
[10.16.6] - 2025-06-11
|
20
28
|
---------------------
|
21
29
|
* Revert last requirements upgrade due to numpy 2.3.0
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"""
|
2
2
|
Module containing queries for the skills_daily_rollup_admin_dash table.
|
3
3
|
"""
|
4
|
+
from ..query_filters import QueryFilters
|
4
5
|
|
5
6
|
|
6
7
|
class SkillsDailyRollupAdminDashQueries:
|
@@ -118,3 +119,31 @@ class SkillsDailyRollupAdminDashQueries:
|
|
118
119
|
ORDER BY
|
119
120
|
total_completion_count DESC;
|
120
121
|
"""
|
122
|
+
|
123
|
+
@staticmethod
|
124
|
+
def get_skills_by_learning_hours(query_filters: QueryFilters, record_count: int = 25):
|
125
|
+
"""
|
126
|
+
Get the query to fetch skills by learning hours for an enterprise customer.
|
127
|
+
"""
|
128
|
+
return f"""
|
129
|
+
WITH filtered_data AS (
|
130
|
+
SELECT
|
131
|
+
skill_name,
|
132
|
+
total_learning_time_hours
|
133
|
+
FROM
|
134
|
+
skills_daily_rollup_admin_dash
|
135
|
+
WHERE
|
136
|
+
{query_filters.to_sql()}
|
137
|
+
)
|
138
|
+
|
139
|
+
SELECT
|
140
|
+
skill_name,
|
141
|
+
SUM(total_learning_time_hours) AS learning_hours
|
142
|
+
FROM
|
143
|
+
filtered_data
|
144
|
+
GROUP BY
|
145
|
+
skill_name
|
146
|
+
ORDER BY
|
147
|
+
learning_hours DESC
|
148
|
+
LIMIT {record_count};
|
149
|
+
"""
|
@@ -4,15 +4,19 @@ Module for interacting with the skills_daily_rollup_admin_dash table.
|
|
4
4
|
from datetime import date
|
5
5
|
from uuid import UUID
|
6
6
|
|
7
|
+
from enterprise_data.admin_analytics.database.filters.mixins import CommonFiltersMixin
|
7
8
|
from enterprise_data.admin_analytics.database.queries.skills_daily_rollup_admin_dash import (
|
8
9
|
SkillsDailyRollupAdminDashQueries,
|
9
10
|
)
|
11
|
+
from enterprise_data.admin_analytics.database.query_filters import EqualQueryFilter
|
10
12
|
from enterprise_data.admin_analytics.database.tables.base import BaseTable
|
11
13
|
from enterprise_data.admin_analytics.database.utils import run_query
|
12
14
|
from enterprise_data.cache.decorators import cache_it
|
13
15
|
|
16
|
+
from ..query_filters import QueryFilters
|
14
17
|
|
15
|
-
|
18
|
+
|
19
|
+
class SkillsDailyRollupAdminDashTable(CommonFiltersMixin, BaseTable):
|
16
20
|
"""
|
17
21
|
Class for communicating with the skills_daily_rollup_admin_dash table.
|
18
22
|
"""
|
@@ -96,3 +100,68 @@ class SkillsDailyRollupAdminDashTable(BaseTable):
|
|
96
100
|
},
|
97
101
|
as_dict=True,
|
98
102
|
)
|
103
|
+
|
104
|
+
def get_skills_by_learning_hours(
|
105
|
+
self,
|
106
|
+
enterprise_customer_uuid: UUID,
|
107
|
+
start_date: date,
|
108
|
+
end_date: date,
|
109
|
+
course_key: str = None,
|
110
|
+
course_type: str = None,
|
111
|
+
):
|
112
|
+
"""
|
113
|
+
Get the skills by learning hours for the given enterprise customer.
|
114
|
+
|
115
|
+
Arguments:
|
116
|
+
enterprise_customer_uuid (UUID): The UUID of the enterprise customer.
|
117
|
+
start_date (date): The start date.
|
118
|
+
end_date (date): The end date.
|
119
|
+
course_key (str): The course key to filter by (optional).
|
120
|
+
course_type (str): The course type (OCM or Executive Education) to filter by (optional).
|
121
|
+
|
122
|
+
Returns:
|
123
|
+
list<dict>: A list of dictionaries containing the skill_name, subject_name, count.
|
124
|
+
"""
|
125
|
+
optional_params = {}
|
126
|
+
course_key_filter = None
|
127
|
+
course_type_filter = None
|
128
|
+
|
129
|
+
default_params = {
|
130
|
+
'enterprise_customer_uuid': enterprise_customer_uuid,
|
131
|
+
'start_date': start_date,
|
132
|
+
'end_date': end_date,
|
133
|
+
}
|
134
|
+
query_filters = QueryFilters([
|
135
|
+
self.enterprise_customer_uuid_filter('enterprise_customer_uuid'),
|
136
|
+
self.date_range_filter(
|
137
|
+
column='date',
|
138
|
+
start_date_params_key='start_date',
|
139
|
+
end_date_params_key='end_date',
|
140
|
+
),
|
141
|
+
])
|
142
|
+
|
143
|
+
if course_key:
|
144
|
+
course_key_filter = EqualQueryFilter(
|
145
|
+
column='course_key',
|
146
|
+
value_placeholder='course_key',
|
147
|
+
)
|
148
|
+
|
149
|
+
optional_params['course_key'] = course_key
|
150
|
+
query_filters.append(course_key_filter)
|
151
|
+
|
152
|
+
if course_type:
|
153
|
+
course_type_filter = EqualQueryFilter(
|
154
|
+
column='course_product_line',
|
155
|
+
value_placeholder='course_type',
|
156
|
+
)
|
157
|
+
|
158
|
+
optional_params['course_type'] = course_type
|
159
|
+
query_filters.append(course_type_filter)
|
160
|
+
|
161
|
+
params = {**default_params, **optional_params}
|
162
|
+
|
163
|
+
return run_query(
|
164
|
+
query=self.queries.get_skills_by_learning_hours(query_filters),
|
165
|
+
params=params,
|
166
|
+
as_dict=True,
|
167
|
+
)
|
@@ -180,10 +180,24 @@ class EnterpriseAdminAnalyticsSkillsView(APIView):
|
|
180
180
|
end_date
|
181
181
|
)
|
182
182
|
|
183
|
+
# TODO: Handle course_key and course_type when they are provided in the request.
|
184
|
+
# We have separate tickets to handle this implementation.
|
185
|
+
course_key = None
|
186
|
+
course_type = None
|
187
|
+
with timer('skills_by_learning_hours'):
|
188
|
+
skills_by_learning_hours = SkillsDailyRollupAdminDashTable().get_skills_by_learning_hours(
|
189
|
+
enterprise_id,
|
190
|
+
start_date,
|
191
|
+
end_date,
|
192
|
+
course_key,
|
193
|
+
course_type,
|
194
|
+
)
|
195
|
+
|
183
196
|
response_data = {
|
184
197
|
"top_skills": skills,
|
185
198
|
"top_skills_by_enrollments": top_skills_by_enrollments,
|
186
199
|
"top_skills_by_completions": top_skills_by_completions,
|
200
|
+
"skills_by_learning_hours": skills_by_learning_hours,
|
187
201
|
}
|
188
202
|
|
189
203
|
return Response(data=response_data, status=HTTP_200_OK)
|
@@ -470,3 +470,17 @@ TOP_SKILLS_BY_COMPLETIONS = [
|
|
470
470
|
"count": 15.0
|
471
471
|
},
|
472
472
|
]
|
473
|
+
SKILLS_BY_LEARNING_HOURS = [
|
474
|
+
{
|
475
|
+
"skill_name": "Python (Programming Language)",
|
476
|
+
"learning_hours": 100.0
|
477
|
+
},
|
478
|
+
{
|
479
|
+
"skill_name": "Data Science",
|
480
|
+
"learning_hours": 80.0
|
481
|
+
},
|
482
|
+
{
|
483
|
+
"skill_name": "Algorithms",
|
484
|
+
"learning_hours": 60.0
|
485
|
+
},
|
486
|
+
]
|
@@ -16,6 +16,7 @@ from enterprise_data.admin_analytics.database.queries import (
|
|
16
16
|
FactEnrollmentAdminDashQueries,
|
17
17
|
)
|
18
18
|
from enterprise_data.tests.admin_analytics.mock_analytics_data import (
|
19
|
+
SKILLS_BY_LEARNING_HOURS,
|
19
20
|
TOP_SKILLS,
|
20
21
|
TOP_SKILLS_BY_COMPLETIONS,
|
21
22
|
TOP_SKILLS_BY_ENROLLMENTS,
|
@@ -137,8 +138,10 @@ class TestSkillsStatsAPI(JWTTestMixin, APITransactionTestCase):
|
|
137
138
|
@patch('enterprise_data.api.v1.views.enterprise_admin.SkillsDailyRollupAdminDashTable.get_top_skills')
|
138
139
|
@patch('enterprise_data.api.v1.views.enterprise_admin.SkillsDailyRollupAdminDashTable.get_top_skills_by_enrollment')
|
139
140
|
@patch('enterprise_data.api.v1.views.enterprise_admin.SkillsDailyRollupAdminDashTable.get_top_skills_by_completion')
|
141
|
+
@patch('enterprise_data.api.v1.views.enterprise_admin.SkillsDailyRollupAdminDashTable.get_skills_by_learning_hours')
|
140
142
|
def test_get(
|
141
143
|
self,
|
144
|
+
mock_get_skills_by_learning_hours,
|
142
145
|
mock_get_top_skills_by_completion,
|
143
146
|
mock_get_top_skills_by_enrollment,
|
144
147
|
mock_get_top_skills,
|
@@ -151,6 +154,7 @@ class TestSkillsStatsAPI(JWTTestMixin, APITransactionTestCase):
|
|
151
154
|
mock_get_top_skills.return_value = TOP_SKILLS
|
152
155
|
mock_get_top_skills_by_enrollment.return_value = TOP_SKILLS_BY_ENROLLMENTS
|
153
156
|
mock_get_top_skills_by_completion.return_value = TOP_SKILLS_BY_COMPLETIONS
|
157
|
+
mock_get_skills_by_learning_hours.return_value = SKILLS_BY_LEARNING_HOURS
|
154
158
|
|
155
159
|
response = self.client.get(self.url)
|
156
160
|
assert response.status_code == status.HTTP_200_OK
|
@@ -210,6 +214,20 @@ class TestSkillsStatsAPI(JWTTestMixin, APITransactionTestCase):
|
|
210
214
|
"count": 15.0,
|
211
215
|
},
|
212
216
|
],
|
217
|
+
"skills_by_learning_hours": [
|
218
|
+
{
|
219
|
+
"skill_name": "Python (Programming Language)",
|
220
|
+
"learning_hours": 100.0
|
221
|
+
},
|
222
|
+
{
|
223
|
+
"skill_name": "Data Science",
|
224
|
+
"learning_hours": 80.0
|
225
|
+
},
|
226
|
+
{
|
227
|
+
"skill_name": "Algorithms",
|
228
|
+
"learning_hours": 60.0
|
229
|
+
},
|
230
|
+
]
|
213
231
|
}
|
214
232
|
|
215
233
|
@ddt.data(
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
3
3
|
# by the following command:
|
4
4
|
#
|
5
5
|
# make upgrade
|
@@ -10,17 +10,17 @@ asgiref==3.8.1
|
|
10
10
|
# via django
|
11
11
|
asn1crypto==1.5.1
|
12
12
|
# via snowflake-connector-python
|
13
|
-
awscli==1.40.
|
13
|
+
awscli==1.40.34
|
14
14
|
# via -r requirements/reporting.in
|
15
15
|
bcrypt==4.3.0
|
16
16
|
# via paramiko
|
17
17
|
billiard==4.2.1
|
18
18
|
# via celery
|
19
|
-
boto3==1.38.
|
19
|
+
boto3==1.38.35
|
20
20
|
# via
|
21
21
|
# -r requirements/reporting.in
|
22
22
|
# snowflake-connector-python
|
23
|
-
botocore==1.38.
|
23
|
+
botocore==1.38.35
|
24
24
|
# via
|
25
25
|
# awscli
|
26
26
|
# boto3
|
@@ -57,7 +57,7 @@ click-repl==0.3.0
|
|
57
57
|
# via celery
|
58
58
|
colorama==0.4.6
|
59
59
|
# via awscli
|
60
|
-
cryptography==45.0.
|
60
|
+
cryptography==45.0.4
|
61
61
|
# via
|
62
62
|
# -r requirements/reporting.in
|
63
63
|
# django-fernet-fields-v2
|
@@ -66,9 +66,9 @@ cryptography==45.0.3
|
|
66
66
|
# pyjwt
|
67
67
|
# pyopenssl
|
68
68
|
# snowflake-connector-python
|
69
|
-
django==4.2.
|
69
|
+
django==4.2.23
|
70
70
|
# via
|
71
|
-
# -c
|
71
|
+
# -c requirements/common_constraints.txt
|
72
72
|
# -r requirements/base.in
|
73
73
|
# django-crum
|
74
74
|
# django-fernet-fields-v2
|
@@ -92,7 +92,7 @@ django-model-utils==5.0.0
|
|
92
92
|
# via
|
93
93
|
# -r requirements/base.in
|
94
94
|
# edx-rbac
|
95
|
-
django-waffle==
|
95
|
+
django-waffle==5.0.0
|
96
96
|
# via
|
97
97
|
# edx-django-utils
|
98
98
|
# edx-drf-extensions
|
@@ -128,7 +128,7 @@ edx-rest-api-client==6.2.0
|
|
128
128
|
# via -r requirements/base.in
|
129
129
|
factory-boy==3.3.3
|
130
130
|
# via -r requirements/base.in
|
131
|
-
faker==37.
|
131
|
+
faker==37.4.0
|
132
132
|
# via factory-boy
|
133
133
|
filelock==3.18.0
|
134
134
|
# via snowflake-connector-python
|
@@ -150,6 +150,7 @@ mysql-connector-python==9.3.0
|
|
150
150
|
# via -r requirements/base.in
|
151
151
|
numpy==2.2.6
|
152
152
|
# via
|
153
|
+
# -c requirements/common_constraints.txt
|
153
154
|
# -r requirements/base.in
|
154
155
|
# pandas
|
155
156
|
packaging==25.0
|
@@ -157,7 +158,7 @@ packaging==25.0
|
|
157
158
|
# kombu
|
158
159
|
# py2neo
|
159
160
|
# snowflake-connector-python
|
160
|
-
pandas==2.
|
161
|
+
pandas==2.3.0
|
161
162
|
# via -r requirements/base.in
|
162
163
|
pansi==2024.11.0
|
163
164
|
# via py2neo
|
@@ -193,7 +194,7 @@ pyjwt[crypto]==2.10.1
|
|
193
194
|
# snowflake-connector-python
|
194
195
|
pyminizip==0.2.6
|
195
196
|
# via -r requirements/reporting.in
|
196
|
-
pymongo==4.13.
|
197
|
+
pymongo==4.13.1
|
197
198
|
# via edx-opaque-keys
|
198
199
|
pynacl==1.5.0
|
199
200
|
# via
|
@@ -214,7 +215,7 @@ pytz==2025.2
|
|
214
215
|
# snowflake-connector-python
|
215
216
|
pyyaml==6.0.2
|
216
217
|
# via awscli
|
217
|
-
requests==2.32.
|
218
|
+
requests==2.32.4
|
218
219
|
# via
|
219
220
|
# -r requirements/base.in
|
220
221
|
# edx-drf-extensions
|
@@ -247,9 +248,9 @@ stevedore==5.4.1
|
|
247
248
|
# via
|
248
249
|
# edx-django-utils
|
249
250
|
# edx-opaque-keys
|
250
|
-
tomlkit==0.13.
|
251
|
+
tomlkit==0.13.3
|
251
252
|
# via snowflake-connector-python
|
252
|
-
typing-extensions==4.
|
253
|
+
typing-extensions==4.14.0
|
253
254
|
# via
|
254
255
|
# edx-opaque-keys
|
255
256
|
# pyopenssl
|
@@ -264,7 +265,7 @@ unicodecsv==0.14.1
|
|
264
265
|
# via -r requirements/reporting.in
|
265
266
|
urllib3==2.2.3
|
266
267
|
# via
|
267
|
-
# -c
|
268
|
+
# -c requirements/common_constraints.txt
|
268
269
|
# botocore
|
269
270
|
# py2neo
|
270
271
|
# requests
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
3
3
|
# by the following command:
|
4
4
|
#
|
5
5
|
# make upgrade
|
@@ -10,7 +10,7 @@ chardet==5.2.0
|
|
10
10
|
# via tox
|
11
11
|
colorama==0.4.6
|
12
12
|
# via tox
|
13
|
-
coverage==7.
|
13
|
+
coverage==7.9.0
|
14
14
|
# via -r requirements/ci.in
|
15
15
|
distlib==0.3.9
|
16
16
|
# via virtualenv
|
{edx_enterprise_data-10.16.6 → edx_enterprise_data-10.16.8}/requirements/common_constraints.txt
RENAMED
@@ -1,4 +1,12 @@
|
|
1
1
|
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
2
10
|
# A central location for most common version constraints
|
3
11
|
# (across edx repos) for pip-installation.
|
4
12
|
#
|
@@ -30,3 +38,7 @@ pip<24.3
|
|
30
38
|
# Cause: https://github.com/openedx/edx-lint/issues/475
|
31
39
|
# This can be unpinned once https://github.com/openedx/edx-lint/issues/476 has been resolved.
|
32
40
|
urllib3<2.3.0
|
41
|
+
|
42
|
+
# This is to allow Jenkins based jobs to run which is still using python 3.8
|
43
|
+
# This can be unpinned when our Jenkins environment is upgraded to python 3.12
|
44
|
+
numpy<2.3.0
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
3
3
|
# by the following command:
|
4
4
|
#
|
5
5
|
# make upgrade
|
@@ -14,17 +14,19 @@ astroid==3.3.10
|
|
14
14
|
# via
|
15
15
|
# pylint
|
16
16
|
# pylint-celery
|
17
|
-
awscli==1.40.
|
17
|
+
awscli==1.40.34
|
18
18
|
# via -r requirements/reporting.in
|
19
|
+
backports-tarfile==1.2.0
|
20
|
+
# via jaraco-context
|
19
21
|
bcrypt==4.3.0
|
20
22
|
# via paramiko
|
21
23
|
billiard==4.2.1
|
22
24
|
# via celery
|
23
|
-
boto3==1.38.
|
25
|
+
boto3==1.38.35
|
24
26
|
# via
|
25
27
|
# -r requirements/reporting.in
|
26
28
|
# snowflake-connector-python
|
27
|
-
botocore==1.38.
|
29
|
+
botocore==1.38.35
|
28
30
|
# via
|
29
31
|
# awscli
|
30
32
|
# boto3
|
@@ -79,7 +81,7 @@ colorama==0.4.6
|
|
79
81
|
# via
|
80
82
|
# awscli
|
81
83
|
# tox
|
82
|
-
cryptography==45.0.
|
84
|
+
cryptography==45.0.4
|
83
85
|
# via
|
84
86
|
# -r requirements/reporting.in
|
85
87
|
# django-fernet-fields-v2
|
@@ -95,9 +97,9 @@ dill==0.4.0
|
|
95
97
|
# via pylint
|
96
98
|
distlib==0.3.9
|
97
99
|
# via virtualenv
|
98
|
-
django==4.2.
|
100
|
+
django==4.2.23
|
99
101
|
# via
|
100
|
-
# -c
|
102
|
+
# -c requirements/common_constraints.txt
|
101
103
|
# -r requirements/base.in
|
102
104
|
# django-crum
|
103
105
|
# django-fernet-fields-v2
|
@@ -122,7 +124,7 @@ django-model-utils==5.0.0
|
|
122
124
|
# via
|
123
125
|
# -r requirements/base.in
|
124
126
|
# edx-rbac
|
125
|
-
django-waffle==
|
127
|
+
django-waffle==5.0.0
|
126
128
|
# via
|
127
129
|
# edx-django-utils
|
128
130
|
# edx-drf-extensions
|
@@ -166,7 +168,7 @@ edx-rest-api-client==6.2.0
|
|
166
168
|
# via -r requirements/base.in
|
167
169
|
factory-boy==3.3.3
|
168
170
|
# via -r requirements/base.in
|
169
|
-
faker==37.
|
171
|
+
faker==37.4.0
|
170
172
|
# via factory-boy
|
171
173
|
filelock==3.18.0
|
172
174
|
# via
|
@@ -179,6 +181,8 @@ idna==3.10
|
|
179
181
|
# via
|
180
182
|
# requests
|
181
183
|
# snowflake-connector-python
|
184
|
+
importlib-metadata==8.7.0
|
185
|
+
# via keyring
|
182
186
|
interchange==2021.0.4
|
183
187
|
# via py2neo
|
184
188
|
isort==6.0.1
|
@@ -233,6 +237,7 @@ nh3==0.2.21
|
|
233
237
|
# via readme-renderer
|
234
238
|
numpy==2.2.6
|
235
239
|
# via
|
240
|
+
# -c requirements/common_constraints.txt
|
236
241
|
# -r requirements/base.in
|
237
242
|
# pandas
|
238
243
|
packaging==25.0
|
@@ -244,7 +249,7 @@ packaging==25.0
|
|
244
249
|
# snowflake-connector-python
|
245
250
|
# tox
|
246
251
|
# twine
|
247
|
-
pandas==2.
|
252
|
+
pandas==2.3.0
|
248
253
|
# via -r requirements/base.in
|
249
254
|
pansi==2024.11.0
|
250
255
|
# via py2neo
|
@@ -316,7 +321,7 @@ pylint-plugin-utils==0.8.2
|
|
316
321
|
# pylint-django
|
317
322
|
pyminizip==0.2.6
|
318
323
|
# via -r requirements/reporting.in
|
319
|
-
pymongo==4.13.
|
324
|
+
pymongo==4.13.1
|
320
325
|
# via edx-opaque-keys
|
321
326
|
pynacl==1.5.0
|
322
327
|
# via
|
@@ -350,7 +355,7 @@ pyyaml==6.0.2
|
|
350
355
|
# edx-i18n-tools
|
351
356
|
readme-renderer==43.0
|
352
357
|
# via twine
|
353
|
-
requests==2.32.
|
358
|
+
requests==2.32.4
|
354
359
|
# via
|
355
360
|
# -r requirements/base.in
|
356
361
|
# edx-drf-extensions
|
@@ -402,7 +407,7 @@ testfixtures==8.3.0
|
|
402
407
|
# via -r requirements/quality.in
|
403
408
|
text-unidecode==1.3
|
404
409
|
# via python-slugify
|
405
|
-
tomlkit==0.13.
|
410
|
+
tomlkit==0.13.3
|
406
411
|
# via
|
407
412
|
# pylint
|
408
413
|
# snowflake-connector-python
|
@@ -410,7 +415,7 @@ tox==4.26.0
|
|
410
415
|
# via -r requirements/dev-enterprise_data.in
|
411
416
|
twine==6.1.0
|
412
417
|
# via -r requirements/dev-enterprise_data.in
|
413
|
-
typing-extensions==4.
|
418
|
+
typing-extensions==4.14.0
|
414
419
|
# via
|
415
420
|
# edx-opaque-keys
|
416
421
|
# pyopenssl
|
@@ -425,7 +430,7 @@ unicodecsv==0.14.1
|
|
425
430
|
# via -r requirements/reporting.in
|
426
431
|
urllib3==2.2.3
|
427
432
|
# via
|
428
|
-
# -c
|
433
|
+
# -c requirements/common_constraints.txt
|
429
434
|
# botocore
|
430
435
|
# py2neo
|
431
436
|
# requests
|
@@ -445,6 +450,8 @@ wheel==0.45.1
|
|
445
450
|
# via
|
446
451
|
# -r requirements/dev-enterprise_data.in
|
447
452
|
# pip-tools
|
453
|
+
zipp==3.23.0
|
454
|
+
# via importlib-metadata
|
448
455
|
|
449
456
|
# The following packages are considered to be unsafe in a requirements file:
|
450
457
|
# pip
|
@@ -0,0 +1 @@
|
|
1
|
+
django==4.2.23
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
3
3
|
# by the following command:
|
4
4
|
#
|
5
5
|
# make upgrade
|
@@ -10,7 +10,7 @@ wheel==0.45.1
|
|
10
10
|
# The following packages are considered to be unsafe in a requirements file:
|
11
11
|
pip==24.2
|
12
12
|
# via
|
13
|
-
# -c
|
13
|
+
# -c requirements/common_constraints.txt
|
14
14
|
# -r requirements/pip.in
|
15
15
|
setuptools==80.9.0
|
16
16
|
# via -r requirements/pip.in
|