edx-enterprise-data 10.16.5__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.
Files changed (218) hide show
  1. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/CHANGELOG.rst +12 -0
  2. {edx_enterprise_data-10.16.5/edx_enterprise_data.egg-info → edx_enterprise_data-10.16.8}/PKG-INFO +1 -1
  3. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8/edx_enterprise_data.egg-info}/PKG-INFO +1 -1
  4. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/__init__.py +1 -1
  5. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py +29 -0
  6. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/skills_daily_rollup_admin_dash.py +70 -1
  7. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_admin.py +14 -0
  8. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/mock_analytics_data.py +14 -0
  9. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/views/test_enterprise_admin.py +18 -0
  10. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/base.txt +14 -13
  11. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/ci.txt +2 -2
  12. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/common_constraints.txt +12 -0
  13. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/dev.txt +20 -13
  14. edx_enterprise_data-10.16.8/requirements/django.txt +1 -0
  15. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/pip.txt +2 -2
  16. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/pip_tools.txt +1 -1
  17. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/quality.txt +23 -15
  18. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/test-master.txt +18 -15
  19. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/test-reporting.txt +19 -19
  20. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/test.txt +19 -16
  21. edx_enterprise_data-10.16.5/requirements/django.txt +0 -1
  22. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/LICENSE +0 -0
  23. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/MANIFEST.in +0 -0
  24. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/README.md +0 -0
  25. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/SOURCES.txt +0 -0
  26. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
  27. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
  28. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/requires.txt +0 -0
  29. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/edx_enterprise_data.egg-info/top_level.txt +0 -0
  30. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/__init__.py +0 -0
  31. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/constants.py +0 -0
  32. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/data_loaders.py +0 -0
  33. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/__init__.py +0 -0
  34. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/__init__.py +0 -0
  35. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/base.py +0 -0
  36. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_completion_admin_dash.py +0 -0
  37. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_engagement_admin_dash.py +0 -0
  38. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/fact_enrollment_admin_dash.py +0 -0
  39. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/filters/mixins.py +0 -0
  40. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/__init__.py +0 -0
  41. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py +0 -0
  42. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py +0 -0
  43. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/__init__.py +0 -0
  44. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/base.py +0 -0
  45. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/between.py +0 -0
  46. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/equal.py +0 -0
  47. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/query_filters/in_.py +0 -0
  48. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/__init__.py +0 -0
  49. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/base.py +0 -0
  50. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py +0 -0
  51. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/tables/fact_enrollment_admin_dash.py +0 -0
  52. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/admin_analytics/database/utils.py +0 -0
  53. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/__init__.py +0 -0
  54. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/urls.py +0 -0
  55. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/__init__.py +0 -0
  56. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/serializers.py +0 -0
  57. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/urls.py +0 -0
  58. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v0/views.py +0 -0
  59. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/__init__.py +0 -0
  60. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/serializers.py +0 -0
  61. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/urls.py +0 -0
  62. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/__init__.py +0 -0
  63. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_completions.py +0 -0
  64. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_engagements.py +0 -0
  65. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_enrollments.py +0 -0
  66. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/analytics_leaderboard.py +0 -0
  67. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/base.py +0 -0
  68. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_learner.py +0 -0
  69. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/api/v1/views/enterprise_offers.py +0 -0
  70. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/apps.py +0 -0
  71. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/cache/__init__.py +0 -0
  72. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/cache/decorators.py +0 -0
  73. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/clients.py +0 -0
  74. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/constants.py +0 -0
  75. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/exceptions.py +0 -0
  76. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/filters.py +0 -0
  77. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
  78. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/fixtures/enterprise_user.json +0 -0
  79. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/__init__.py +0 -0
  80. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/__init__.py +0 -0
  81. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_dummy_data.py +0 -0
  82. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
  83. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
  84. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  85. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
  86. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
  87. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
  88. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/pre_warm_analytics_cache.py +0 -0
  89. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/__init__.py +0 -0
  90. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
  91. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
  92. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  93. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
  94. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
  95. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/management/commands/tests/test_pre_warm_analytics_cache.py +0 -0
  96. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0001_initial.py +0 -0
  97. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
  98. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
  99. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
  100. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
  101. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
  102. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
  103. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
  104. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
  105. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
  106. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
  107. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
  108. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
  109. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
  110. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
  111. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
  112. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
  113. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
  114. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
  115. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
  116. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
  117. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
  118. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
  119. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
  120. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
  121. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
  122. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
  123. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
  124. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
  125. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
  126. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
  127. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
  128. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
  129. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
  130. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0034_auto_20230907_0834.py +0 -0
  131. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0035_auto_20230907_1154.py +0 -0
  132. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py +0 -0
  133. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py +0 -0
  134. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py +0 -0
  135. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0039_auto_20240212_1403.py +0 -0
  136. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0040_auto_20240718_0536_squashed_0043_alter_enterpriselearnerenrollment_enterprise_enrollment_id.py +0 -0
  137. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0044_enterpriseexecedlcmoduleperformance.py +0 -0
  138. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0045_alter_enterpriseexecedlcmoduleperformance_options_and_more.py +0 -0
  139. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0046_enterprisegroupmembership.py +0 -0
  140. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0047_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
  141. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/0048_alter_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
  142. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/migrations/__init__.py +0 -0
  143. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/models.py +0 -0
  144. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/paginators.py +0 -0
  145. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/renderers.py +0 -0
  146. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/settings/__init__.py +0 -0
  147. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/settings/test.py +0 -0
  148. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/signals.py +0 -0
  149. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/__init__.py +0 -0
  150. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/__init__.py +0 -0
  151. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/mock_enrollments.py +0 -0
  152. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_engagements.py +0 -0
  153. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_enrollments.py +0 -0
  154. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_analytics_leaderboard.py +0 -0
  155. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_data_loaders.py +0 -0
  156. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/admin_analytics/test_enterprise_completions.py +0 -0
  157. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/__init__.py +0 -0
  158. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v0/__init__.py +0 -0
  159. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
  160. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/__init__.py +0 -0
  161. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
  162. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/test_views.py +0 -0
  163. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/api/v1/views/__init__.py +0 -0
  164. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/factories.py +0 -0
  165. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/mixins.py +0 -0
  166. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_clients.py +0 -0
  167. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_filters.py +0 -0
  168. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_models.py +0 -0
  169. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_utils.py +0 -0
  170. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/tests/test_views.py +0 -0
  171. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/urls.py +0 -0
  172. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data/utils.py +0 -0
  173. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/__init__.py +0 -0
  174. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/admin.py +0 -0
  175. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/apps.py +0 -0
  176. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/constants.py +0 -0
  177. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0001_initial.py +0 -0
  178. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
  179. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
  180. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
  181. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
  182. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
  183. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
  184. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/migrations/__init__.py +0 -0
  185. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/models.py +0 -0
  186. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/rules.py +0 -0
  187. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/__init__.py +0 -0
  188. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/factories.py +0 -0
  189. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_data_roles/tests/test_models.py +0 -0
  190. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/__init__.py +0 -0
  191. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/__init__.py +0 -0
  192. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/enterprise.py +0 -0
  193. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/s3.py +0 -0
  194. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/snowflake.py +0 -0
  195. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/clients/vertica.py +0 -0
  196. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/constants.py +0 -0
  197. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/delivery_method.py +0 -0
  198. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/external_resource_link_report.py +0 -0
  199. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/fixtures/__init__.py +0 -0
  200. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
  201. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/reporter.py +0 -0
  202. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/send_enterprise_reports.py +0 -0
  203. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/__init__.py +0 -0
  204. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_clients.py +0 -0
  205. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_delivery_method.py +0 -0
  206. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
  207. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_external_link_report.py +0 -0
  208. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_reporter.py +0 -0
  209. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
  210. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_utils.py +0 -0
  211. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/test_vertica_client.py +0 -0
  212. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/tests/utils.py +0 -0
  213. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/enterprise_reporting/utils.py +0 -0
  214. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/base.in +0 -0
  215. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/constraints.txt +0 -0
  216. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/requirements/reporting.in +0 -0
  217. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/setup.cfg +0 -0
  218. {edx_enterprise_data-10.16.5 → edx_enterprise_data-10.16.8}/setup.py +0 -0
@@ -16,6 +16,18 @@ 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
+
27
+ [10.16.6] - 2025-06-11
28
+ ---------------------
29
+ * Revert last requirements upgrade due to numpy 2.3.0
30
+
19
31
  [10.16.5] - 2025-06-11
20
32
  ---------------------
21
33
  * chore: upgrade python requirements
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edx-enterprise-data
3
- Version: 10.16.5
3
+ Version: 10.16.8
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edx-enterprise-data
3
- Version: 10.16.5
3
+ Version: 10.16.8
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -2,4 +2,4 @@
2
2
  Enterprise data api application. This Django app exposes API endpoints used by enterprises.
3
3
  """
4
4
 
5
- __version__ = "10.16.5"
5
+ __version__ = "10.16.8"
@@ -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
- class SkillsDailyRollupAdminDashTable(BaseTable):
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.12
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.31
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.32
19
+ boto3==1.38.35
20
20
  # via
21
21
  # -r requirements/reporting.in
22
22
  # snowflake-connector-python
23
- botocore==1.38.32
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.3
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.22
69
+ django==4.2.23
70
70
  # via
71
- # -c /home/runner/work/edx-enterprise-data/edx-enterprise-data/requirements/common_constraints.txt
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==4.2.0
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.3.0
131
+ faker==37.4.0
132
132
  # via factory-boy
133
133
  filelock==3.18.0
134
134
  # via snowflake-connector-python
@@ -148,8 +148,9 @@ monotonic==1.6
148
148
  # via py2neo
149
149
  mysql-connector-python==9.3.0
150
150
  # via -r requirements/base.in
151
- numpy==2.3.0
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
@@ -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.0
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.3
218
+ requests==2.32.4
218
219
  # via
219
220
  # -r requirements/base.in
220
221
  # edx-drf-extensions
@@ -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 /home/runner/work/edx-enterprise-data/edx-enterprise-data/requirements/common_constraints.txt
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.12
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.8.2
13
+ coverage==7.9.0
14
14
  # via -r requirements/ci.in
15
15
  distlib==0.3.9
16
16
  # via virtualenv
@@ -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.12
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.31
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.32
25
+ boto3==1.38.35
24
26
  # via
25
27
  # -r requirements/reporting.in
26
28
  # snowflake-connector-python
27
- botocore==1.38.32
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.3
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.22
100
+ django==4.2.23
99
101
  # via
100
- # -c /home/runner/work/edx-enterprise-data/edx-enterprise-data/requirements/common_constraints.txt
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==4.2.0
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.3.0
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
@@ -231,8 +235,9 @@ mysql-connector-python==9.3.0
231
235
  # via -r requirements/base.in
232
236
  nh3==0.2.21
233
237
  # via readme-renderer
234
- numpy==2.3.0
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
@@ -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.0
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.3
358
+ requests==2.32.4
354
359
  # via
355
360
  # -r requirements/base.in
356
361
  # edx-drf-extensions
@@ -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 /home/runner/work/edx-enterprise-data/edx-enterprise-data/requirements/common_constraints.txt
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.12
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 /home/runner/work/edx-enterprise-data/edx-enterprise-data/requirements/common_constraints.txt
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
@@ -1,5 +1,5 @@
1
1
  #
2
- # This file is autogenerated by pip-compile with Python 3.12
2
+ # This file is autogenerated by pip-compile with Python 3.11
3
3
  # by the following command:
4
4
  #
5
5
  # make upgrade