codegrade 16.1.41__tar.gz → 16.1.45__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 (570) hide show
  1. {codegrade-16.1.41 → codegrade-16.1.45}/PKG-INFO +2 -3
  2. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/cg_maybe_plugin.py +1 -1
  3. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_base.py +1 -1
  4. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_convert.py +14 -3
  5. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_mapping.py +2 -1
  6. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_multipart.py +4 -3
  7. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_swaggerize.py +11 -2
  8. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/__init__.py +1 -1
  9. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/assignment.py +93 -0
  10. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/tenant.py +2 -1
  11. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/client.py +4 -2
  12. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/__init__.py +7 -0
  13. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/all_site_settings.py +23 -0
  14. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_lti1p3_provider.py +6 -2
  15. codegrade-16.1.45/codegrade/models/code_editor_output_viewer_title_setting.py +57 -0
  16. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_tenant.py +2 -0
  17. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/frontend_site_settings.py +45 -0
  18. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/global_perm_map.py +31 -0
  19. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/global_permission.py +2 -0
  20. codegrade-16.1.45/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +59 -0
  21. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p3_provider_data.py +2 -2
  22. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_tenant_data.py +11 -0
  23. codegrade-16.1.45/codegrade/models/pearson_templates_setting.py +56 -0
  24. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/site_setting_input.py +13 -0
  25. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant.py +14 -0
  26. {codegrade-16.1.41 → codegrade-16.1.45}/pyproject.toml +6 -6
  27. {codegrade-16.1.41 → codegrade-16.1.45}/setup.py +2 -2
  28. codegrade-16.1.41/cg_maybe/py.typed +0 -0
  29. codegrade-16.1.41/cg_request_args/py.typed +0 -0
  30. codegrade-16.1.41/codegrade/py.typed +0 -0
  31. {codegrade-16.1.41 → codegrade-16.1.45}/README.md +0 -0
  32. {codegrade-16.1.41 → codegrade-16.1.45}/cg_dt_utils/__init__.py +0 -0
  33. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/__init__.py +0 -0
  34. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/_just.py +0 -0
  35. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/_maybe.py +0 -0
  36. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/_nothing.py +0 -0
  37. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/_type_helpers.py +0 -0
  38. {codegrade-16.1.41 → codegrade-16.1.45}/cg_maybe/utils.py +0 -0
  39. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/__init__.py +0 -0
  40. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_any_value.py +0 -0
  41. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_enum.py +0 -0
  42. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_form.py +0 -0
  43. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_lazy.py +0 -0
  44. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_list.py +0 -0
  45. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_literal.py +0 -0
  46. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_nullable.py +0 -0
  47. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_parse_utils.py +0 -0
  48. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_query.py +0 -0
  49. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_rich_value.py +0 -0
  50. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_swagger_utils.py +0 -0
  51. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/_utils.py +0 -0
  52. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/exceptions.py +0 -0
  53. {codegrade-16.1.41 → codegrade-16.1.45}/cg_request_args/request_args_plugin.py +0 -0
  54. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/__init__.py +0 -0
  55. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/about.py +0 -0
  56. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/auto_test.py +0 -0
  57. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/comment.py +0 -0
  58. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/course.py +0 -0
  59. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/course_price.py +0 -0
  60. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/file.py +0 -0
  61. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/git_provider.py +0 -0
  62. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/group.py +0 -0
  63. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/group_set.py +0 -0
  64. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/login_link.py +0 -0
  65. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/lti.py +0 -0
  66. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/notification.py +0 -0
  67. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/oauth_provider.py +0 -0
  68. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/oauth_token.py +0 -0
  69. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/permission.py +0 -0
  70. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/plagiarism.py +0 -0
  71. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/role.py +0 -0
  72. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/section.py +0 -0
  73. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/site_settings.py +0 -0
  74. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/snippet.py +0 -0
  75. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/sso_provider.py +0 -0
  76. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/submission.py +0 -0
  77. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/task_result.py +0 -0
  78. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/transaction.py +0 -0
  79. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/user.py +0 -0
  80. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/user_setting.py +0 -0
  81. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/_api/webhook.py +0 -0
  82. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/errors.py +0 -0
  83. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/_base_price.py +0 -0
  84. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/_saml_ui_logo_info.py +0 -0
  85. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
  86. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/about.py +0 -0
  87. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/abstract_role.py +0 -0
  88. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/add_users_section_data.py +0 -0
  89. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/all_auto_test_results.py +0 -0
  90. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/any_auto_test_step_as_json.py +0 -0
  91. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/any_error.py +0 -0
  92. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
  93. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
  94. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/api_codes.py +0 -0
  95. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment.py +0 -0
  96. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_anonymization_algo.py +0 -0
  97. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
  98. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
  99. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_description_enabled_setting.py +0 -0
  100. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
  101. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_done_type.py +0 -0
  102. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_export_column.py +0 -0
  103. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_feedback.py +0 -0
  104. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_grader.py +0 -0
  105. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
  106. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_kind.py +0 -0
  107. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_login_link.py +0 -0
  108. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
  109. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
  110. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
  111. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
  112. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
  113. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_point_decimals_setting.py +0 -0
  114. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_points_grading_settings.py +0 -0
  115. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_section_timeframe.py +0 -0
  116. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_state_enum.py +0 -0
  117. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_submission_mode.py +0 -0
  118. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_template.py +0 -0
  119. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/assignment_timeframes.py +0 -0
  120. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
  121. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/atv2_quizzes_setting.py +0 -0
  122. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test.py +0 -0
  123. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
  124. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
  125. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
  126. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_enabled_setting.py +0 -0
  127. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_fixture.py +0 -0
  128. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_global_setup_output.py +0 -0
  129. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_global_setup_script.py +0 -0
  130. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
  131. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
  132. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
  133. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
  134. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
  135. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
  136. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
  137. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
  138. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
  139. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
  140. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
  141. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_quality_comment.py +0 -0
  142. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_result.py +0 -0
  143. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_result_state.py +0 -0
  144. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
  145. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_run.py +0 -0
  146. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
  147. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_runner.py +0 -0
  148. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_runner_state.py +0 -0
  149. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_set.py +0 -0
  150. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_base.py +0 -0
  151. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_base_as_json.py +0 -0
  152. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
  153. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_log_base.py +0 -0
  154. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_result.py +0 -0
  155. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_result_state.py +0 -0
  156. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_step_validation_exception.py +0 -0
  157. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_suite.py +0 -0
  158. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
  159. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
  160. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
  161. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_about.py +0 -0
  162. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_auto_test_quality_comment.py +0 -0
  163. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_comment_base.py +0 -0
  164. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
  165. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
  166. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_comment_reply.py +0 -0
  167. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_course_coupon.py +0 -0
  168. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_directory.py +0 -0
  169. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_error.py +0 -0
  170. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_file.py +0 -0
  171. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_lms_capabilities.py +0 -0
  172. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_lti1p1_provider.py +0 -0
  173. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_lti_provider.py +0 -0
  174. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_notification.py +0 -0
  175. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_release_info.py +0 -0
  176. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_rubric_item.py +0 -0
  177. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/base_tenant_coupon.py +0 -0
  178. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
  179. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/bulk_enroll_course_data.py +0 -0
  180. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
  181. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/cg_ignore_version.py +0 -0
  182. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/change_user_role_course_data.py +0 -0
  183. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/check_points_as_json.py +0 -0
  184. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/check_points_data.py +0 -0
  185. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/check_points_extra.py +0 -0
  186. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/check_points_input_as_json.py +0 -0
  187. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/clone_result.py +0 -0
  188. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_as_json.py +0 -0
  189. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_base_data.py +0 -0
  190. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_data.py +0 -0
  191. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_extra.py +0 -0
  192. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_input_as_json.py +0 -0
  193. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/code_quality_penalties.py +0 -0
  194. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/column_range.py +0 -0
  195. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/comment_base.py +0 -0
  196. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/comment_reply.py +0 -0
  197. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/comment_reply_edit.py +0 -0
  198. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/comment_reply_type.py +0 -0
  199. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/comment_type.py +0 -0
  200. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/community_library_publishing_setting.py +0 -0
  201. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/community_library_setting.py +0 -0
  202. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/connect_repository_git_provider_data.py +0 -0
  203. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/copy_auto_test_data.py +0 -0
  204. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/copy_rubric_assignment_data.py +0 -0
  205. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/coupon_data_parser.py +0 -0
  206. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/coupon_with_code.py +0 -0
  207. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/coupon_without_code.py +0 -0
  208. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course.py +0 -0
  209. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_bulk_enroll_result.py +0 -0
  210. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
  211. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_coupon.py +0 -0
  212. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_coupon_usage.py +0 -0
  213. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
  214. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
  215. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_of_course_price.py +0 -0
  216. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
  217. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_perm_map.py +0 -0
  218. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_permission.py +0 -0
  219. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_price.py +0 -0
  220. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_register_enabled_setting.py +0 -0
  221. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_register_response.py +0 -0
  222. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_registration_link.py +0 -0
  223. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_role.py +0 -0
  224. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_role_as_json_with_perms.py +0 -0
  225. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_section.py +0 -0
  226. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_section_division.py +0 -0
  227. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_section_division_connection.py +0 -0
  228. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_section_division_user.py +0 -0
  229. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_snippet.py +0 -0
  230. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_state.py +0 -0
  231. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/course_statistics_as_json.py +0 -0
  232. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_assignment_course_data.py +0 -0
  233. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_auto_test_data.py +0 -0
  234. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_comment_data.py +0 -0
  235. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_comment_reply_data.py +0 -0
  236. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_course_data.py +0 -0
  237. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_division_section_data.py +0 -0
  238. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_group_group_set_data.py +0 -0
  239. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_group_set_course_data.py +0 -0
  240. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_lti_data.py +0 -0
  241. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
  242. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_proxy_submission_data.py +0 -0
  243. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_repository_git_provider_data.py +0 -0
  244. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_role_course_data.py +0 -0
  245. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_section_course_data.py +0 -0
  246. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_snippet_course_data.py +0 -0
  247. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_snippet_data.py +0 -0
  248. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_sso_provider_data.py +0 -0
  249. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/create_tenant_data.py +0 -0
  250. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/csv_large_file_limit_setting.py +0 -0
  251. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
  252. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/currency.py +0 -0
  253. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_as_json.py +0 -0
  254. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_data.py +0 -0
  255. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_extra.py +0 -0
  256. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_input_as_json.py +0 -0
  257. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_log.py +0 -0
  258. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/custom_output_log_base.py +0 -0
  259. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/deleted_comment_reply.py +0 -0
  260. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/deletion_type.py +0 -0
  261. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/directory_with_children.py +0 -0
  262. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/disabled_setting_exception.py +0 -0
  263. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
  264. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/editor_enabled_setting.py +0 -0
  265. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/email_notification_types.py +0 -0
  266. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/email_students_enabled_setting.py +0 -0
  267. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/email_users_course_data.py +0 -0
  268. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/exam_login_max_length_setting.py +0 -0
  269. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/export_assignment_csv_data.py +0 -0
  270. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/export_assignment_data.py +0 -0
  271. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/export_assignment_files_data.py +0 -0
  272. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_auto_test_result.py +0 -0
  273. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_auto_test_run.py +0 -0
  274. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_course.py +0 -0
  275. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_course_registration_link.py +0 -0
  276. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_course_section.py +0 -0
  277. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_group.py +0 -0
  278. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_job.py +0 -0
  279. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
  280. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_transaction.py +0 -0
  281. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_user.py +0 -0
  282. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extended_work.py +0 -0
  283. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extract_file_tree_directory.py +0 -0
  284. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/extract_file_tree_file.py +0 -0
  285. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/failed_to_send_email_exception.py +0 -0
  286. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/feedback_base.py +0 -0
  287. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
  288. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/feedback_with_replies.py +0 -0
  289. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/feedback_without_replies.py +0 -0
  290. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/file_deletion.py +0 -0
  291. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/file_rule.py +0 -0
  292. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/file_rule_input_data.py +0 -0
  293. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/file_tree.py +0 -0
  294. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/file_type.py +0 -0
  295. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/finalized_lti1p1_provider.py +0 -0
  296. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/finalized_lti1p3_provider.py +0 -0
  297. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
  298. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/fixed_availability.py +0 -0
  299. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/fixed_grade_availability.py +0 -0
  300. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/fixture_like.py +0 -0
  301. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/fraction.py +0 -0
  302. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/general_feedback_comment_base.py +0 -0
  303. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
  304. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/general_feedback_extra.py +0 -0
  305. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/git_repositories_page.py +0 -0
  306. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/git_repository_like.py +0 -0
  307. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/git_user_info.py +0 -0
  308. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
  309. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/grade_history.py +0 -0
  310. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/grade_origin.py +0 -0
  311. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
  312. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/group.py +0 -0
  313. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
  314. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/group_set.py +0 -0
  315. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/groups_enabled_setting.py +0 -0
  316. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/has_unread_notifcation_json.py +0 -0
  317. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/health_information.py +0 -0
  318. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/ignore_handling.py +0 -0
  319. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/ignored_files_exception.py +0 -0
  320. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/import_into_assignment_data.py +0 -0
  321. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/import_into_course_data.py +0 -0
  322. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
  323. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/inline_feedback_comment_base.py +0 -0
  324. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
  325. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/inline_feedback_extra.py +0 -0
  326. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
  327. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/invalid_group_exception.py +0 -0
  328. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/invalid_io_cases_exception.py +0 -0
  329. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/invalid_options_exception.py +0 -0
  330. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_as_json.py +0 -0
  331. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_base_data.py +0 -0
  332. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_data.py +0 -0
  333. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_extra.py +0 -0
  334. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_input_as_json.py +0 -0
  335. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_input_case.py +0 -0
  336. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_log.py +0 -0
  337. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_option.py +0 -0
  338. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_step_log.py +0 -0
  339. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/io_test_step_log_base.py +0 -0
  340. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
  341. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/job.py +0 -0
  342. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/json_create_auto_test.py +0 -0
  343. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/json_create_tenant.py +0 -0
  344. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/json_patch_auto_test.py +0 -0
  345. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
  346. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_as_json.py +0 -0
  347. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_base_data.py +0 -0
  348. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_data.py +0 -0
  349. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_extra.py +0 -0
  350. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_input_as_json.py +0 -0
  351. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_log.py +0 -0
  352. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/junit_test_log_base.py +0 -0
  353. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
  354. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/legacy_features.py +0 -0
  355. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/line_range.py +0 -0
  356. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/linter_comment.py +0 -0
  357. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/linters_enabled_setting.py +0 -0
  358. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lms_capabilities.py +0 -0
  359. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/login_token_before_time_setting.py +0 -0
  360. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/login_user_data.py +0 -0
  361. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/logout_response.py +0 -0
  362. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/logout_user_data.py +0 -0
  363. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p1_provider.py +0 -0
  364. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p1_provider_data.py +0 -0
  365. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
  366. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p3_provider.py +0 -0
  367. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
  368. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
  369. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_enabled_setting.py +0 -0
  370. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
  371. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
  372. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
  373. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_provider_base.py +0 -0
  374. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
  375. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_document_update_size_setting.py +0 -0
  376. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
  377. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
  378. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_file_size_setting.py +0 -0
  379. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_large_upload_size_setting.py +0 -0
  380. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_lines_setting.py +0 -0
  381. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_mirror_file_age_setting.py +0 -0
  382. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_normal_upload_size_setting.py +0 -0
  383. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_number_of_files_setting.py +0 -0
  384. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
  385. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/max_user_setting_amount_setting.py +0 -0
  386. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/min_password_score_setting.py +0 -0
  387. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/mirror_file_result.py +0 -0
  388. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/missing_cookie_error.py +0 -0
  389. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/missing_file.py +0 -0
  390. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
  391. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
  392. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
  393. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
  394. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
  395. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
  396. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
  397. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
  398. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
  399. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
  400. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
  401. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
  402. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
  403. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
  404. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
  405. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
  406. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/no_permissions.py +0 -0
  407. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/non_deleted_comment_reply.py +0 -0
  408. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
  409. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
  410. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/non_present_preference.py +0 -0
  411. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification.py +0 -0
  412. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
  413. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
  414. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_poll_time_setting.py +0 -0
  415. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_reasons.py +0 -0
  416. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_setting.py +0 -0
  417. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notification_setting_option.py +0 -0
  418. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/notifications_json.py +0 -0
  419. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/oauth_provider.py +0 -0
  420. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/oauth_token.py +0 -0
  421. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/option.py +0 -0
  422. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/options_input_data.py +0 -0
  423. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
  424. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/parse_api_exception.py +0 -0
  425. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
  426. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
  427. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_all_notification_data.py +0 -0
  428. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_assignment_data.py +0 -0
  429. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_auto_test_data.py +0 -0
  430. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_comment_reply_data.py +0 -0
  431. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_course_data.py +0 -0
  432. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_grader_submission_data.py +0 -0
  433. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_notification_data.py +0 -0
  434. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
  435. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_provider_lti_data.py +0 -0
  436. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_role_course_data.py +0 -0
  437. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_role_data.py +0 -0
  438. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_role_tenant_data.py +0 -0
  439. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
  440. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
  441. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_section_data.py +0 -0
  442. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_settings_tenant_data.py +0 -0
  443. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_site_settings_data.py +0 -0
  444. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_snippet_course_data.py +0 -0
  445. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_snippet_data.py +0 -0
  446. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_submission_data.py +0 -0
  447. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
  448. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
  449. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/patch_user_data.py +0 -0
  450. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
  451. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
  452. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/permission_exception.py +0 -0
  453. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
  454. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
  455. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_case.py +0 -0
  456. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
  457. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_run.py +0 -0
  458. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
  459. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
  460. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/plagiarism_state.py +0 -0
  461. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/post_oauth_token_data.py +0 -0
  462. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/present_preference.py +0 -0
  463. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/proxy.py +0 -0
  464. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/put_description_assignment_data.py +0 -0
  465. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/put_enroll_link_course_data.py +0 -0
  466. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/put_price_course_data.py +0 -0
  467. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/put_price_tenant_data.py +0 -0
  468. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/put_rubric_assignment_data.py +0 -0
  469. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/quality_comment_severity.py +0 -0
  470. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
  471. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/quality_test_log.py +0 -0
  472. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/quality_test_log_base.py +0 -0
  473. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/register_enabled_setting.py +0 -0
  474. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/register_user_data.py +0 -0
  475. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/register_user_with_link_course_data.py +0 -0
  476. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/release_info.py +0 -0
  477. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/release_message_max_time_setting.py +0 -0
  478. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rename_group_group_data.py +0 -0
  479. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/render_html_enabled_setting.py +0 -0
  480. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
  481. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/reset_token_time_setting.py +0 -0
  482. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_get_auto_test_get.py +0 -0
  483. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
  484. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_post_login_link_login.py +0 -0
  485. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_post_section_create_division.py +0 -0
  486. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_post_user_login.py +0 -0
  487. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/result_data_post_user_register.py +0 -0
  488. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/role_as_json_with_perms.py +0 -0
  489. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/root_file_trees_json.py +0 -0
  490. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_description_type.py +0 -0
  491. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
  492. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_item.py +0 -0
  493. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_item_input_as_json.py +0 -0
  494. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_lock_reason.py +0 -0
  495. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_row_base.py +0 -0
  496. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
  497. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
  498. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rubrics_enabled_setting.py +0 -0
  499. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/rule_type.py +0 -0
  500. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/run_program_as_json.py +0 -0
  501. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/run_program_data.py +0 -0
  502. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/run_program_extra.py +0 -0
  503. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/run_program_input_as_json.py +0 -0
  504. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/run_program_log.py +0 -0
  505. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/saml2_provider_json.py +0 -0
  506. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/saml_ui_info.py +0 -0
  507. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
  508. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/send_registration_email_setting.py +0 -0
  509. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
  510. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
  511. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/server_time_sync_interval_setting.py +0 -0
  512. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/setting_token_time_setting.py +0 -0
  513. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/setup_oauth_result.py +0 -0
  514. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
  515. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/site_email_setting.py +0 -0
  516. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/snippet.py +0 -0
  517. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
  518. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
  519. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
  520. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
  521. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_data.py +0 -0
  522. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
  523. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/started_transaction.py +0 -0
  524. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/student_payment_enabled_setting.py +0 -0
  525. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/submission_validator_input_data.py +0 -0
  526. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/submissions_page_v2_enabled_setting.py +0 -0
  527. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
  528. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/task_result_state.py +0 -0
  529. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tax_behavior.py +0 -0
  530. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_coupon.py +0 -0
  531. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_coupon_usage.py +0 -0
  532. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_coupon_with_code.py +0 -0
  533. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_coupon_without_code.py +0 -0
  534. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_course_statistics.py +0 -0
  535. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_of_tenant_price.py +0 -0
  536. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_permissions.py +0 -0
  537. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_price.py +0 -0
  538. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
  539. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/tenant_statistics.py +0 -0
  540. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
  541. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/timed_availability.py +0 -0
  542. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/timeframe_like.py +0 -0
  543. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/token_revoked_exception.py +0 -0
  544. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/transaction.py +0 -0
  545. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/transaction_state.py +0 -0
  546. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/types.py +0 -0
  547. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
  548. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/update_set_auto_test_data.py +0 -0
  549. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
  550. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/update_suite_auto_test_data.py +0 -0
  551. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
  552. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/upload_submission_assignment_data.py +0 -0
  553. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/user.py +0 -0
  554. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/user_course.py +0 -0
  555. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/user_info_with_role.py +0 -0
  556. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/user_input.py +0 -0
  557. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/user_without_group.py +0 -0
  558. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/weak_password_exception.py +0 -0
  559. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/weak_password_feedback.py +0 -0
  560. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/webhook_base.py +0 -0
  561. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
  562. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
  563. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/work.py +0 -0
  564. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/work_origin.py +0 -0
  565. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/work_rubric_item.py +0 -0
  566. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/work_rubric_result_as_json.py +0 -0
  567. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
  568. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/parsers.py +0 -0
  569. {codegrade-16.1.41/cg_dt_utils → codegrade-16.1.45/codegrade}/py.typed +0 -0
  570. {codegrade-16.1.41 → codegrade-16.1.45}/codegrade/utils.py +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codegrade
3
- Version: 16.1.41
3
+ Version: 16.1.45
4
4
  Summary: A client library for accessing CodeGrade
5
5
  License: AGPL-3.0-only OR BSD-3-Clause-Clear
6
- Requires-Python: >=3.7.0,<4.0
6
+ Requires-Python: >=3.8.0,<4.0
7
7
  Classifier: License :: Other/Proprietary License
8
8
  Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.7
10
9
  Classifier: Programming Language :: Python :: 3.8
11
10
  Classifier: Programming Language :: Python :: 3.9
12
11
  Classifier: Programming Language :: Python :: 3.10
@@ -33,7 +33,7 @@ def attr_callback(ctx: MethodContext, typ: str) -> Type:
33
33
  assert isinstance(ctx.type, Instance)
34
34
  base, = ctx.type.args
35
35
  assert isinstance(base, Instance)
36
- if not base.has_readable_member(attr_value):
36
+ if not base.type.has_readable_member(attr_value):
37
37
  ctx.api.fail(
38
38
  'The {} has no attribute named {}'.format(base, attr_value),
39
39
  ctx.context,
@@ -400,7 +400,7 @@ class _SimpleUnion(t.Generic[_SimpleUnionT], Parser[_SimpleUnionT]):
400
400
  if isinstance(value, bool) and bool not in self.typs:
401
401
  self._raise(value)
402
402
  if isinstance(value, self.typs):
403
- return value # type: ignore
403
+ return value
404
404
  # Also allow integers as floats
405
405
  if float in self.typs and isinstance(value, int):
406
406
  return float(value) # type: ignore
@@ -226,12 +226,23 @@ def _get_args_typeddict(
226
226
  get_doc: t.Callable[[str], str] = lambda _: '',
227
227
  ) -> t.Sequence[t.Union[RequiredArgument, OptionalArgument]]:
228
228
  args: t.List[t.Union[RequiredArgument, OptionalArgument]] = []
229
- annotations = t.get_type_hints(ctx.typ)
229
+ annotations = t.get_type_hints(ctx.typ, include_extras=True)
230
+ required_keys = set(ctx.typ.__required_keys__)
230
231
 
231
232
  for key, subtyp in annotations.items():
232
- sub_parse = ctx.recurse_with_guard(subtyp)
233
233
  doc = get_doc(key)
234
- if key in ctx.typ.__required_keys__:
234
+ origin = t.get_origin(subtyp)
235
+ # The reason for these checks:
236
+ # https://docs.python.org/3/library/typing.html#typing.TypedDict.__optional_keys__
237
+ if origin in (t.NotRequired, t.Required):
238
+ required = origin == t.Required
239
+ subtyp = subtyp.__args__[0]
240
+ else:
241
+ required = key in required_keys
242
+
243
+ sub_parse = ctx.recurse_with_guard(subtyp)
244
+
245
+ if required:
235
246
  args.append(
236
247
  RequiredArgument(key, sub_parse, doc) # type: ignore[misc]
237
248
  )
@@ -594,7 +594,8 @@ class DiscriminatedUnion(t.Generic[_T], Parser[_T]):
594
594
  arguments = first._arguments # pylint: disable=protected-access
595
595
  possible_keys = {
596
596
  arg.key: {value: first}
597
- for arg in arguments for value in _is_possible(arg)
597
+ for arg in arguments
598
+ for value in _is_possible(arg)
598
599
  }
599
600
  for parser in rest:
600
601
  if not isinstance(parser, (BaseFixedMapping, FixedMapping)):
@@ -123,9 +123,10 @@ class MultipartUploadWithData(t.Generic[_T]):
123
123
  _maybe_raise_schema(self.__generate_schema)
124
124
 
125
125
  body = None
126
- if 'json' in flask.request.files:
127
- body = _json.load(flask.request.files['json'])
128
- if not body:
126
+ request = flask.request
127
+ if 'json' in request.files:
128
+ body = _json.load(request.files['json'])
129
+ if not body and request.is_json:
129
130
  body = flask.request.get_json()
130
131
 
131
132
  result = self.__parser.try_parse_and_log(
@@ -29,8 +29,17 @@ class _SwaggerFunc:
29
29
 
30
30
  _SWAGGER_FUNCS: t.Dict[str, t.Dict[t.Optional[str], _SwaggerFunc]] = {}
31
31
 
32
- _NameT = t.Union[str, t.Mapping[Literal['GET', 'POST', 'PATCH', 'DELETE', # pylint: disable=invalid-name
33
- 'PUT'], str]]
32
+ _NameT = t.Union[ # pylint: disable=invalid-name
33
+ str, t.Mapping[
34
+ Literal[
35
+ 'GET',
36
+ 'POST',
37
+ 'PATCH',
38
+ 'DELETE',
39
+ 'PUT',
40
+ ],
41
+ str,
42
+ ]]
34
43
 
35
44
 
36
45
  def swaggerize(
@@ -7,7 +7,7 @@ from functools import wraps
7
7
  from .client import AuthenticatedClient, Client
8
8
 
9
9
  __all__ = ("login", "AuthenticatedClient", "Client", "login_from_cli")
10
- __version__ = "16.1.41"
10
+ __version__ = "16.1.45"
11
11
 
12
12
 
13
13
  @wraps(AuthenticatedClient.get)
@@ -414,6 +414,52 @@ class AssignmentService(t.Generic[_ClientT]):
414
414
  ),
415
415
  )
416
416
 
417
+ def get_description(
418
+ self: "AssignmentService[codegrade.client.AuthenticatedClient]",
419
+ *,
420
+ assignment_id: "int",
421
+ extra_parameters: t.Optional[
422
+ t.Mapping[str, t.Union[str, bool, int, float]]
423
+ ] = None,
424
+ ) -> "bytes":
425
+ """Get the description for this assignment.
426
+
427
+ :param assignment_id: The id of the assignment;
428
+ :param extra_parameters: The extra query parameters you might want to
429
+ add. By default no extra query parameters are added.
430
+
431
+ :returns: A public link that allows users to download the file or the
432
+ file itself as a stream of octets
433
+ """
434
+
435
+ url = "/api/v1/assignments/{assignmentId}/description".format(
436
+ assignmentId=assignment_id
437
+ )
438
+ params = extra_parameters or {}
439
+
440
+ with self.__client as client:
441
+ resp = client.http.get(url=url, params=params)
442
+ utils.log_warnings(resp)
443
+
444
+ if utils.response_code_matches(resp.status_code, 200):
445
+ # fmt: off
446
+ # fmt: on
447
+ return parsers.ResponsePropertyParser("content", bytes).try_parse(
448
+ resp
449
+ )
450
+
451
+ from ..models.any_error import AnyError
452
+
453
+ raise utils.get_error(
454
+ resp,
455
+ (
456
+ (
457
+ (400, 409, 401, 403, 404, 429, 500),
458
+ utils.unpack_union(AnyError),
459
+ ),
460
+ ),
461
+ )
462
+
417
463
  def put_description(
418
464
  self: "AssignmentService[codegrade.client.AuthenticatedClient]",
419
465
  multipart_data: t.Union[dict, list, "PutDescriptionAssignmentData"],
@@ -972,6 +1018,53 @@ class AssignmentService(t.Generic[_ClientT]):
972
1018
  ),
973
1019
  )
974
1020
 
1021
+ def get_template_file(
1022
+ self: "AssignmentService[codegrade.client.AuthenticatedClient]",
1023
+ *,
1024
+ assignment_id: "int",
1025
+ file_id: "str",
1026
+ extra_parameters: t.Optional[
1027
+ t.Mapping[str, t.Union[str, bool, int, float]]
1028
+ ] = None,
1029
+ ) -> "bytes":
1030
+ """Get the content of a single file of an assignment template.
1031
+
1032
+ :param assignment_id: The id of the assignment.
1033
+ :param file_id: The id of the file.
1034
+ :param extra_parameters: The extra query parameters you might want to
1035
+ add. By default no extra query parameters are added.
1036
+
1037
+ :returns: The contents of the requested file.
1038
+ """
1039
+
1040
+ url = "/api/v1/assignments/{assignmentId}/template/{fileId}".format(
1041
+ assignmentId=assignment_id, fileId=file_id
1042
+ )
1043
+ params = extra_parameters or {}
1044
+
1045
+ with self.__client as client:
1046
+ resp = client.http.get(url=url, params=params)
1047
+ utils.log_warnings(resp)
1048
+
1049
+ if utils.response_code_matches(resp.status_code, 200):
1050
+ # fmt: off
1051
+ # fmt: on
1052
+ return parsers.ResponsePropertyParser("content", bytes).try_parse(
1053
+ resp
1054
+ )
1055
+
1056
+ from ..models.any_error import AnyError
1057
+
1058
+ raise utils.get_error(
1059
+ resp,
1060
+ (
1061
+ (
1062
+ (400, 409, 401, 403, 404, 429, 500),
1063
+ utils.unpack_union(AnyError),
1064
+ ),
1065
+ ),
1066
+ )
1067
+
975
1068
  def get_timeframes(
976
1069
  self: "AssignmentService[codegrade.client.AuthenticatedClient]",
977
1070
  *,
@@ -58,7 +58,8 @@ class TenantService(t.Generic[_ClientT]):
58
58
  :param extra_parameters: The extra query parameters you might want to
59
59
  add. By default no extra query parameters are added.
60
60
 
61
- :returns: All the tenants of this instance.
61
+ :returns: All the tenants of this instance that the user is allowed to
62
+ see.
62
63
  """
63
64
 
64
65
  url = "/api/v1/tenants/"
@@ -526,8 +526,9 @@ class Client(_BaseClient):
526
526
  return httpx.Client(
527
527
  base_url=self.base_url,
528
528
  headers={
529
- "User-Agent": "CodeGradeAPI/16.1.41",
529
+ "User-Agent": "CodeGradeAPI/16.1.45",
530
530
  },
531
+ follow_redirects=True,
531
532
  )
532
533
 
533
534
 
@@ -545,8 +546,9 @@ class AuthenticatedClient(_BaseClient):
545
546
  base_url=self.base_url,
546
547
  headers={
547
548
  "Authorization": f"Bearer {self.token}",
548
- "User-Agent": "CodeGradeAPI/16.1.41",
549
+ "User-Agent": "CodeGradeAPI/16.1.45",
549
550
  },
551
+ follow_redirects=True,
550
552
  )
551
553
 
552
554
  @staticmethod
@@ -170,6 +170,9 @@ from .check_points_data import CheckPointsData
170
170
  from .check_points_extra import CheckPointsExtra
171
171
  from .check_points_input_as_json import CheckPointsInputAsJSON
172
172
  from .clone_result import CloneResult
173
+ from .code_editor_output_viewer_title_setting import (
174
+ CodeEditorOutputViewerTitleSetting,
175
+ )
173
176
  from .code_quality_as_json import CodeQualityAsJSON
174
177
  from .code_quality_base_data import CodeQualityBaseData
175
178
  from .code_quality_data import CodeQualityData
@@ -328,6 +331,9 @@ from .group_set import GroupSet
328
331
  from .groups_enabled_setting import GroupsEnabledSetting
329
332
  from .has_unread_notifcation_json import HasUnreadNotifcationJSON
330
333
  from .health_information import HealthInformation
334
+ from .hide_code_editor_output_viewer_with_only_quiz_steps_setting import (
335
+ HideCodeEditorOutputViewerWithOnlyQuizStepsSetting,
336
+ )
331
337
  from .ignore_handling import IgnoreHandling
332
338
  from .ignored_files_exception import IgnoredFilesException
333
339
  from .import_into_assignment_data import ImportIntoAssignmentData
@@ -525,6 +531,7 @@ from .patch_ui_preference_user_setting_data import (
525
531
  )
526
532
  from .patch_user_data import PatchUserData
527
533
  from .pay_with_coupon_course_price_data import PayWithCouponCoursePriceData
534
+ from .pearson_templates_setting import PearsonTemplatesSetting
528
535
  from .peer_feedback_enabled_setting import PeerFeedbackEnabledSetting
529
536
  from .permission_exception import PermissionException
530
537
  from .plagiarism_bulk_export_enabled_setting import (
@@ -129,6 +129,8 @@ class AllSiteSettings(FrontendSiteSettings):
129
129
  #: a single tenant, and disable this feature after you've gotten the data
130
130
  #: you need.
131
131
  lti_launch_data_logging: Maybe["bool"] = Nothing
132
+ #: Whether or not pearson templates should be enabled.
133
+ pearson_templates: Maybe["bool"] = Nothing
132
134
 
133
135
  raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
134
136
 
@@ -440,6 +442,11 @@ class AllSiteSettings(FrontendSiteSettings):
440
442
  " this feature after you've gotten the data you need."
441
443
  ),
442
444
  ),
445
+ rqa.OptionalArgument(
446
+ "PEARSON_TEMPLATES",
447
+ rqa.SimpleValue.bool,
448
+ doc="Whether or not pearson templates should be enabled.",
449
+ ),
443
450
  )
444
451
  ).use_readable_describe(True)
445
452
  )
@@ -542,6 +549,7 @@ class AllSiteSettings(FrontendSiteSettings):
542
549
  self.lti_launch_data_logging = maybe_from_nullable(
543
550
  self.lti_launch_data_logging
544
551
  )
552
+ self.pearson_templates = maybe_from_nullable(self.pearson_templates)
545
553
 
546
554
  def to_dict(self) -> t.Dict[str, t.Any]:
547
555
  res: t.Dict[str, t.Any] = {}
@@ -589,6 +597,10 @@ class AllSiteSettings(FrontendSiteSettings):
589
597
  res["NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME"] = to_dict(
590
598
  self.new_auto_test_test_max_command_time.value
591
599
  )
600
+ if self.code_editor_output_viewer_title.is_just:
601
+ res["CODE_EDITOR_OUTPUT_VIEWER_TITLE"] = to_dict(
602
+ self.code_editor_output_viewer_title.value
603
+ )
592
604
  if self.exam_login_max_length.is_just:
593
605
  res["EXAM_LOGIN_MAX_LENGTH"] = to_dict(
594
606
  self.exam_login_max_length.value
@@ -851,6 +863,12 @@ class AllSiteSettings(FrontendSiteSettings):
851
863
  )
852
864
  if self.atv2_quizzes.is_just:
853
865
  res["ATV2_QUIZZES"] = to_dict(self.atv2_quizzes.value)
866
+ if self.hide_code_editor_output_viewer_with_only_quiz_steps.is_just:
867
+ res[
868
+ "HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS"
869
+ ] = to_dict(
870
+ self.hide_code_editor_output_viewer_with_only_quiz_steps.value
871
+ )
854
872
  if self.auto_test_heartbeat_interval.is_just:
855
873
  res["AUTO_TEST_HEARTBEAT_INTERVAL"] = to_dict(
856
874
  self.auto_test_heartbeat_interval.value
@@ -981,6 +999,8 @@ class AllSiteSettings(FrontendSiteSettings):
981
999
  res["LTI_LAUNCH_DATA_LOGGING"] = to_dict(
982
1000
  self.lti_launch_data_logging.value
983
1001
  )
1002
+ if self.pearson_templates.is_just:
1003
+ res["PEARSON_TEMPLATES"] = to_dict(self.pearson_templates.value)
984
1004
  return res
985
1005
 
986
1006
  @classmethod
@@ -1001,6 +1021,7 @@ class AllSiteSettings(FrontendSiteSettings):
1001
1021
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1002
1022
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1003
1023
  new_auto_test_test_max_command_time=parsed.NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME,
1024
+ code_editor_output_viewer_title=parsed.CODE_EDITOR_OUTPUT_VIEWER_TITLE,
1004
1025
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1005
1026
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1006
1027
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1072,6 +1093,7 @@ class AllSiteSettings(FrontendSiteSettings):
1072
1093
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1073
1094
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
1074
1095
  atv2_quizzes=parsed.ATV2_QUIZZES,
1096
+ hide_code_editor_output_viewer_with_only_quiz_steps=parsed.HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS,
1075
1097
  auto_test_heartbeat_interval=parsed.AUTO_TEST_HEARTBEAT_INTERVAL,
1076
1098
  auto_test_heartbeat_max_missed=parsed.AUTO_TEST_HEARTBEAT_MAX_MISSED,
1077
1099
  auto_test_max_jobs_per_runner=parsed.AUTO_TEST_MAX_JOBS_PER_RUNNER,
@@ -1106,6 +1128,7 @@ class AllSiteSettings(FrontendSiteSettings):
1106
1128
  lti_1p3_parse_most_privileged_role=parsed.LTI_1P3_PARSE_MOST_PRIVILEGED_ROLE,
1107
1129
  lti_first_launch_content_id_enabled=parsed.LTI_FIRST_LAUNCH_CONTENT_ID_ENABLED,
1108
1130
  lti_launch_data_logging=parsed.LTI_LAUNCH_DATA_LOGGING,
1131
+ pearson_templates=parsed.PEARSON_TEMPLATES,
1109
1132
  )
1110
1133
  res.raw_data = d
1111
1134
  return res
@@ -22,7 +22,7 @@ class BaseLTI1p3Provider(BaseLTIProvider):
22
22
  """The base representation of an LTI 1.3 provider."""
23
23
 
24
24
  #: The LMS that is connected as this LTI provider.
25
- lms: "t.Literal['Blackboard', 'Brightspace', 'Canvas', 'Moodle']"
25
+ lms: "t.Literal['Blackboard', 'Brightspace', 'Canvas', 'Moodle', 'Revel']"
26
26
  #: The capabilities of this LMS
27
27
  capabilities: "LMSCapabilities"
28
28
  #: The LTI version used.
@@ -40,7 +40,11 @@ class BaseLTI1p3Provider(BaseLTIProvider):
40
40
  rqa.RequiredArgument(
41
41
  "lms",
42
42
  rqa.StringEnum(
43
- "Blackboard", "Brightspace", "Canvas", "Moodle"
43
+ "Blackboard",
44
+ "Brightspace",
45
+ "Canvas",
46
+ "Moodle",
47
+ "Revel",
44
48
  ),
45
49
  doc="The LMS that is connected as this LTI provider.",
46
50
  ),
@@ -0,0 +1,57 @@
1
+ """The module that defines the ``CodeEditorOutputViewerTitleSetting`` model.
2
+
3
+ SPDX-License-Identifier: AGPL-3.0-only OR BSD-3-Clause-Clear
4
+ """
5
+
6
+ import typing as t
7
+ from dataclasses import dataclass, field
8
+
9
+ import cg_request_args as rqa
10
+
11
+ from ..utils import to_dict
12
+
13
+
14
+ @dataclass
15
+ class CodeEditorOutputViewerTitleSetting:
16
+ """ """
17
+
18
+ name: "t.Literal['CODE_EDITOR_OUTPUT_VIEWER_TITLE']"
19
+ value: "t.Optional[str]"
20
+
21
+ raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
22
+
23
+ data_parser: t.ClassVar = rqa.Lazy(
24
+ lambda: rqa.FixedMapping(
25
+ rqa.RequiredArgument(
26
+ "name",
27
+ rqa.StringEnum("CODE_EDITOR_OUTPUT_VIEWER_TITLE"),
28
+ doc="",
29
+ ),
30
+ rqa.RequiredArgument(
31
+ "value",
32
+ rqa.Nullable(rqa.SimpleValue.str),
33
+ doc="",
34
+ ),
35
+ ).use_readable_describe(True)
36
+ )
37
+
38
+ def to_dict(self) -> t.Dict[str, t.Any]:
39
+ res: t.Dict[str, t.Any] = {
40
+ "name": to_dict(self.name),
41
+ "value": to_dict(self.value),
42
+ }
43
+ return res
44
+
45
+ @classmethod
46
+ def from_dict(
47
+ cls: t.Type["CodeEditorOutputViewerTitleSetting"],
48
+ d: t.Dict[str, t.Any],
49
+ ) -> "CodeEditorOutputViewerTitleSetting":
50
+ parsed = cls.data_parser.try_parse(d)
51
+
52
+ res = cls(
53
+ name=parsed.name,
54
+ value=parsed.value,
55
+ )
56
+ res.raw_data = d
57
+ return res
@@ -85,6 +85,7 @@ class ExtendedTenant(Tenant):
85
85
  "statistics": to_dict(self.statistics),
86
86
  "abbreviated_name": to_dict(self.abbreviated_name),
87
87
  "order_category": to_dict(self.order_category),
88
+ "is_hidden": to_dict(self.is_hidden),
88
89
  "netloc": to_dict(self.netloc),
89
90
  }
90
91
  return res
@@ -106,6 +107,7 @@ class ExtendedTenant(Tenant):
106
107
  statistics=parsed.statistics,
107
108
  abbreviated_name=parsed.abbreviated_name,
108
109
  order_category=parsed.order_category,
110
+ is_hidden=parsed.is_hidden,
109
111
  netloc=parsed.netloc,
110
112
  )
111
113
  res.raw_data = d
@@ -49,6 +49,9 @@ class FrontendSiteSettings:
49
49
  #: The maximum time a command may run in the test part of AutoTest 2.0.
50
50
  #: This is also the default value for timeout steps.
51
51
  new_auto_test_test_max_command_time: Maybe["datetime.timedelta"] = Nothing
52
+ #: Title for the output viewer in the code editor when we run the ATv2
53
+ #: config.
54
+ code_editor_output_viewer_title: Maybe["str"] = Nothing
52
55
  #: The maximum time-delta an exam may take. Increasing this value also
53
56
  #: increases the maximum amount of time the login tokens send via email are
54
57
  #: valid. Therefore, you should make this too long.
@@ -280,6 +283,11 @@ class FrontendSiteSettings:
280
283
  #: Whether it should be possible to create AutoTest v2 quiz and question
281
284
  #: blocks.
282
285
  atv2_quizzes: Maybe["bool"] = Nothing
286
+ #: Whether we will hide all of the steps in the code editor sidebar output
287
+ #: viewer if we have in a quiz-only atv2 config.
288
+ hide_code_editor_output_viewer_with_only_quiz_steps: Maybe[
289
+ "bool"
290
+ ] = Nothing
283
291
 
284
292
  raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
285
293
 
@@ -358,6 +366,14 @@ class FrontendSiteSettings:
358
366
  " steps."
359
367
  ),
360
368
  ),
369
+ rqa.OptionalArgument(
370
+ "CODE_EDITOR_OUTPUT_VIEWER_TITLE",
371
+ rqa.SimpleValue.str,
372
+ doc=(
373
+ "Title for the output viewer in the code editor when we"
374
+ " run the ATv2 config."
375
+ ),
376
+ ),
361
377
  rqa.OptionalArgument(
362
378
  "EXAM_LOGIN_MAX_LENGTH",
363
379
  rqa.RichValue.TimeDelta,
@@ -947,6 +963,15 @@ class FrontendSiteSettings:
947
963
  " and question blocks."
948
964
  ),
949
965
  ),
966
+ rqa.OptionalArgument(
967
+ "HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS",
968
+ rqa.SimpleValue.bool,
969
+ doc=(
970
+ "Whether we will hide all of the steps in the code editor"
971
+ " sidebar output viewer if we have in a quiz-only atv2"
972
+ " config."
973
+ ),
974
+ ),
950
975
  ).use_readable_describe(True)
951
976
  )
952
977
 
@@ -985,6 +1010,9 @@ class FrontendSiteSettings:
985
1010
  self.new_auto_test_test_max_command_time = maybe_from_nullable(
986
1011
  self.new_auto_test_test_max_command_time
987
1012
  )
1013
+ self.code_editor_output_viewer_title = maybe_from_nullable(
1014
+ self.code_editor_output_viewer_title
1015
+ )
988
1016
  self.exam_login_max_length = maybe_from_nullable(
989
1017
  self.exam_login_max_length
990
1018
  )
@@ -1180,6 +1208,11 @@ class FrontendSiteSettings:
1180
1208
  self.simple_submission_mode_enabled
1181
1209
  )
1182
1210
  self.atv2_quizzes = maybe_from_nullable(self.atv2_quizzes)
1211
+ self.hide_code_editor_output_viewer_with_only_quiz_steps = (
1212
+ maybe_from_nullable(
1213
+ self.hide_code_editor_output_viewer_with_only_quiz_steps
1214
+ )
1215
+ )
1183
1216
 
1184
1217
  def to_dict(self) -> t.Dict[str, t.Any]:
1185
1218
  res: t.Dict[str, t.Any] = {}
@@ -1227,6 +1260,10 @@ class FrontendSiteSettings:
1227
1260
  res["NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME"] = to_dict(
1228
1261
  self.new_auto_test_test_max_command_time.value
1229
1262
  )
1263
+ if self.code_editor_output_viewer_title.is_just:
1264
+ res["CODE_EDITOR_OUTPUT_VIEWER_TITLE"] = to_dict(
1265
+ self.code_editor_output_viewer_title.value
1266
+ )
1230
1267
  if self.exam_login_max_length.is_just:
1231
1268
  res["EXAM_LOGIN_MAX_LENGTH"] = to_dict(
1232
1269
  self.exam_login_max_length.value
@@ -1489,6 +1526,12 @@ class FrontendSiteSettings:
1489
1526
  )
1490
1527
  if self.atv2_quizzes.is_just:
1491
1528
  res["ATV2_QUIZZES"] = to_dict(self.atv2_quizzes.value)
1529
+ if self.hide_code_editor_output_viewer_with_only_quiz_steps.is_just:
1530
+ res[
1531
+ "HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS"
1532
+ ] = to_dict(
1533
+ self.hide_code_editor_output_viewer_with_only_quiz_steps.value
1534
+ )
1492
1535
  return res
1493
1536
 
1494
1537
  @classmethod
@@ -1509,6 +1552,7 @@ class FrontendSiteSettings:
1509
1552
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1510
1553
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1511
1554
  new_auto_test_test_max_command_time=parsed.NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME,
1555
+ code_editor_output_viewer_title=parsed.CODE_EDITOR_OUTPUT_VIEWER_TITLE,
1512
1556
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1513
1557
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1514
1558
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1580,6 +1624,7 @@ class FrontendSiteSettings:
1580
1624
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1581
1625
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
1582
1626
  atv2_quizzes=parsed.ATV2_QUIZZES,
1627
+ hide_code_editor_output_viewer_with_only_quiz_steps=parsed.HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS,
1583
1628
  )
1584
1629
  res.raw_data = d
1585
1630
  return res
@@ -91,6 +91,13 @@ class GlobalPermMap:
91
91
  #: themselves. You will always need permission to view an item to be able
92
92
  #: to delete it.
93
93
  can_delete_community_library_items: "bool"
94
+ #: Users with this global permission can list hidden tenants. All users can
95
+ #: still retrieve hidden tenants if they know the id. This permission only
96
+ #: has effect on the global level, not tenant level.
97
+ can_list_hidden_tenants: "bool"
98
+ #: Users with this permission can create, edit, and delete Pearson
99
+ #: templates, questions, and books.
100
+ can_manage_pearson_templates: "bool"
94
101
 
95
102
  raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
96
103
 
@@ -323,6 +330,24 @@ class GlobalPermMap:
323
330
  " item to be able to delete it."
324
331
  ),
325
332
  ),
333
+ rqa.RequiredArgument(
334
+ "can_list_hidden_tenants",
335
+ rqa.SimpleValue.bool,
336
+ doc=(
337
+ "Users with this global permission can list hidden"
338
+ " tenants. All users can still retrieve hidden tenants if"
339
+ " they know the id. This permission only has effect on the"
340
+ " global level, not tenant level."
341
+ ),
342
+ ),
343
+ rqa.RequiredArgument(
344
+ "can_manage_pearson_templates",
345
+ rqa.SimpleValue.bool,
346
+ doc=(
347
+ "Users with this permission can create, edit, and delete"
348
+ " Pearson templates, questions, and books."
349
+ ),
350
+ ),
326
351
  ).use_readable_describe(True)
327
352
  )
328
353
 
@@ -376,6 +401,10 @@ class GlobalPermMap:
376
401
  "can_delete_community_library_items": to_dict(
377
402
  self.can_delete_community_library_items
378
403
  ),
404
+ "can_list_hidden_tenants": to_dict(self.can_list_hidden_tenants),
405
+ "can_manage_pearson_templates": to_dict(
406
+ self.can_manage_pearson_templates
407
+ ),
379
408
  }
380
409
  return res
381
410
 
@@ -414,6 +443,8 @@ class GlobalPermMap:
414
443
  can_view_all_community_library_items=parsed.can_view_all_community_library_items,
415
444
  can_create_community_library_items=parsed.can_create_community_library_items,
416
445
  can_delete_community_library_items=parsed.can_delete_community_library_items,
446
+ can_list_hidden_tenants=parsed.can_list_hidden_tenants,
447
+ can_manage_pearson_templates=parsed.can_manage_pearson_templates,
417
448
  )
418
449
  res.raw_data = d
419
450
  return res
@@ -40,3 +40,5 @@ class GlobalPermission(str, Enum):
40
40
  )
41
41
  can_create_community_library_items = "can_create_community_library_items"
42
42
  can_delete_community_library_items = "can_delete_community_library_items"
43
+ can_list_hidden_tenants = "can_list_hidden_tenants"
44
+ can_manage_pearson_templates = "can_manage_pearson_templates"