codegrade 16.1.40__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.40 → codegrade-16.1.45}/PKG-INFO +2 -3
  2. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/cg_maybe_plugin.py +1 -1
  3. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_base.py +1 -1
  4. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_convert.py +14 -3
  5. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_mapping.py +2 -1
  6. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_multipart.py +4 -3
  7. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_swaggerize.py +11 -2
  8. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/__init__.py +1 -1
  9. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/assignment.py +93 -0
  10. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/tenant.py +2 -1
  11. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/client.py +4 -2
  12. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/__init__.py +8 -0
  13. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/all_site_settings.py +26 -0
  14. codegrade-16.1.45/codegrade/models/atv2_quizzes_setting.py +56 -0
  15. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_lti1p3_provider.py +6 -2
  16. codegrade-16.1.45/codegrade/models/code_editor_output_viewer_title_setting.py +57 -0
  17. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_tenant.py +2 -0
  18. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/frontend_site_settings.py +60 -0
  19. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/global_perm_map.py +31 -0
  20. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/global_permission.py +2 -0
  21. codegrade-16.1.45/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +59 -0
  22. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p3_provider_data.py +2 -2
  23. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_tenant_data.py +11 -0
  24. codegrade-16.1.45/codegrade/models/pearson_templates_setting.py +56 -0
  25. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/site_setting_input.py +16 -0
  26. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant.py +14 -0
  27. {codegrade-16.1.40 → codegrade-16.1.45}/pyproject.toml +6 -6
  28. {codegrade-16.1.40 → codegrade-16.1.45}/setup.py +2 -2
  29. codegrade-16.1.40/cg_maybe/py.typed +0 -0
  30. codegrade-16.1.40/cg_request_args/py.typed +0 -0
  31. codegrade-16.1.40/codegrade/py.typed +0 -0
  32. {codegrade-16.1.40 → codegrade-16.1.45}/README.md +0 -0
  33. {codegrade-16.1.40 → codegrade-16.1.45}/cg_dt_utils/__init__.py +0 -0
  34. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/__init__.py +0 -0
  35. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/_just.py +0 -0
  36. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/_maybe.py +0 -0
  37. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/_nothing.py +0 -0
  38. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/_type_helpers.py +0 -0
  39. {codegrade-16.1.40 → codegrade-16.1.45}/cg_maybe/utils.py +0 -0
  40. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/__init__.py +0 -0
  41. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_any_value.py +0 -0
  42. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_enum.py +0 -0
  43. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_form.py +0 -0
  44. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_lazy.py +0 -0
  45. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_list.py +0 -0
  46. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_literal.py +0 -0
  47. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_nullable.py +0 -0
  48. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_parse_utils.py +0 -0
  49. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_query.py +0 -0
  50. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_rich_value.py +0 -0
  51. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_swagger_utils.py +0 -0
  52. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/_utils.py +0 -0
  53. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/exceptions.py +0 -0
  54. {codegrade-16.1.40 → codegrade-16.1.45}/cg_request_args/request_args_plugin.py +0 -0
  55. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/__init__.py +0 -0
  56. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/about.py +0 -0
  57. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/auto_test.py +0 -0
  58. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/comment.py +0 -0
  59. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/course.py +0 -0
  60. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/course_price.py +0 -0
  61. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/file.py +0 -0
  62. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/git_provider.py +0 -0
  63. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/group.py +0 -0
  64. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/group_set.py +0 -0
  65. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/login_link.py +0 -0
  66. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/lti.py +0 -0
  67. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/notification.py +0 -0
  68. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/oauth_provider.py +0 -0
  69. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/oauth_token.py +0 -0
  70. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/permission.py +0 -0
  71. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/plagiarism.py +0 -0
  72. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/role.py +0 -0
  73. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/section.py +0 -0
  74. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/site_settings.py +0 -0
  75. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/snippet.py +0 -0
  76. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/sso_provider.py +0 -0
  77. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/submission.py +0 -0
  78. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/task_result.py +0 -0
  79. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/transaction.py +0 -0
  80. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/user.py +0 -0
  81. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/user_setting.py +0 -0
  82. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/_api/webhook.py +0 -0
  83. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/errors.py +0 -0
  84. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/_base_price.py +0 -0
  85. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/_saml_ui_logo_info.py +0 -0
  86. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
  87. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/about.py +0 -0
  88. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/abstract_role.py +0 -0
  89. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/add_users_section_data.py +0 -0
  90. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/all_auto_test_results.py +0 -0
  91. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/any_auto_test_step_as_json.py +0 -0
  92. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/any_error.py +0 -0
  93. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
  94. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
  95. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/api_codes.py +0 -0
  96. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment.py +0 -0
  97. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_anonymization_algo.py +0 -0
  98. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
  99. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
  100. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_description_enabled_setting.py +0 -0
  101. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
  102. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_done_type.py +0 -0
  103. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_export_column.py +0 -0
  104. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_feedback.py +0 -0
  105. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_grader.py +0 -0
  106. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
  107. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_kind.py +0 -0
  108. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_login_link.py +0 -0
  109. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
  110. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
  111. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
  112. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
  113. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
  114. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_point_decimals_setting.py +0 -0
  115. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_points_grading_settings.py +0 -0
  116. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_section_timeframe.py +0 -0
  117. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_state_enum.py +0 -0
  118. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_submission_mode.py +0 -0
  119. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_template.py +0 -0
  120. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/assignment_timeframes.py +0 -0
  121. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
  122. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test.py +0 -0
  123. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
  124. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
  125. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
  126. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_enabled_setting.py +0 -0
  127. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_fixture.py +0 -0
  128. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_global_setup_output.py +0 -0
  129. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_global_setup_script.py +0 -0
  130. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
  131. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
  132. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
  133. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
  134. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
  135. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
  136. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
  137. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
  138. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
  139. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
  140. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
  141. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_quality_comment.py +0 -0
  142. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_result.py +0 -0
  143. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_result_state.py +0 -0
  144. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
  145. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_run.py +0 -0
  146. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
  147. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_runner.py +0 -0
  148. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_runner_state.py +0 -0
  149. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_set.py +0 -0
  150. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_base.py +0 -0
  151. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_base_as_json.py +0 -0
  152. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
  153. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_log_base.py +0 -0
  154. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_result.py +0 -0
  155. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_result_state.py +0 -0
  156. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_step_validation_exception.py +0 -0
  157. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_suite.py +0 -0
  158. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
  159. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
  160. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
  161. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_about.py +0 -0
  162. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_auto_test_quality_comment.py +0 -0
  163. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_comment_base.py +0 -0
  164. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
  165. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
  166. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_comment_reply.py +0 -0
  167. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_course_coupon.py +0 -0
  168. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_directory.py +0 -0
  169. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_error.py +0 -0
  170. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_file.py +0 -0
  171. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_lms_capabilities.py +0 -0
  172. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_lti1p1_provider.py +0 -0
  173. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_lti_provider.py +0 -0
  174. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_notification.py +0 -0
  175. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_release_info.py +0 -0
  176. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_rubric_item.py +0 -0
  177. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/base_tenant_coupon.py +0 -0
  178. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
  179. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/bulk_enroll_course_data.py +0 -0
  180. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
  181. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/cg_ignore_version.py +0 -0
  182. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/change_user_role_course_data.py +0 -0
  183. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/check_points_as_json.py +0 -0
  184. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/check_points_data.py +0 -0
  185. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/check_points_extra.py +0 -0
  186. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/check_points_input_as_json.py +0 -0
  187. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/clone_result.py +0 -0
  188. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_as_json.py +0 -0
  189. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_base_data.py +0 -0
  190. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_data.py +0 -0
  191. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_extra.py +0 -0
  192. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_input_as_json.py +0 -0
  193. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/code_quality_penalties.py +0 -0
  194. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/column_range.py +0 -0
  195. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/comment_base.py +0 -0
  196. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/comment_reply.py +0 -0
  197. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/comment_reply_edit.py +0 -0
  198. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/comment_reply_type.py +0 -0
  199. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/comment_type.py +0 -0
  200. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/community_library_publishing_setting.py +0 -0
  201. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/community_library_setting.py +0 -0
  202. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/connect_repository_git_provider_data.py +0 -0
  203. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/copy_auto_test_data.py +0 -0
  204. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/copy_rubric_assignment_data.py +0 -0
  205. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/coupon_data_parser.py +0 -0
  206. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/coupon_with_code.py +0 -0
  207. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/coupon_without_code.py +0 -0
  208. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course.py +0 -0
  209. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_bulk_enroll_result.py +0 -0
  210. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
  211. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_coupon.py +0 -0
  212. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_coupon_usage.py +0 -0
  213. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
  214. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
  215. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_of_course_price.py +0 -0
  216. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
  217. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_perm_map.py +0 -0
  218. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_permission.py +0 -0
  219. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_price.py +0 -0
  220. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_register_enabled_setting.py +0 -0
  221. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_register_response.py +0 -0
  222. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_registration_link.py +0 -0
  223. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_role.py +0 -0
  224. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_role_as_json_with_perms.py +0 -0
  225. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_section.py +0 -0
  226. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_section_division.py +0 -0
  227. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_section_division_connection.py +0 -0
  228. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_section_division_user.py +0 -0
  229. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_snippet.py +0 -0
  230. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_state.py +0 -0
  231. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/course_statistics_as_json.py +0 -0
  232. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_assignment_course_data.py +0 -0
  233. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_auto_test_data.py +0 -0
  234. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_comment_data.py +0 -0
  235. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_comment_reply_data.py +0 -0
  236. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_course_data.py +0 -0
  237. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_division_section_data.py +0 -0
  238. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_group_group_set_data.py +0 -0
  239. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_group_set_course_data.py +0 -0
  240. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_lti_data.py +0 -0
  241. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
  242. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_proxy_submission_data.py +0 -0
  243. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_repository_git_provider_data.py +0 -0
  244. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_role_course_data.py +0 -0
  245. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_section_course_data.py +0 -0
  246. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_snippet_course_data.py +0 -0
  247. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_snippet_data.py +0 -0
  248. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_sso_provider_data.py +0 -0
  249. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/create_tenant_data.py +0 -0
  250. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/csv_large_file_limit_setting.py +0 -0
  251. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
  252. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/currency.py +0 -0
  253. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_as_json.py +0 -0
  254. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_data.py +0 -0
  255. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_extra.py +0 -0
  256. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_input_as_json.py +0 -0
  257. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_log.py +0 -0
  258. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/custom_output_log_base.py +0 -0
  259. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/deleted_comment_reply.py +0 -0
  260. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/deletion_type.py +0 -0
  261. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/directory_with_children.py +0 -0
  262. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/disabled_setting_exception.py +0 -0
  263. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
  264. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/editor_enabled_setting.py +0 -0
  265. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/email_notification_types.py +0 -0
  266. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/email_students_enabled_setting.py +0 -0
  267. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/email_users_course_data.py +0 -0
  268. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/exam_login_max_length_setting.py +0 -0
  269. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/export_assignment_csv_data.py +0 -0
  270. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/export_assignment_data.py +0 -0
  271. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/export_assignment_files_data.py +0 -0
  272. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_auto_test_result.py +0 -0
  273. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_auto_test_run.py +0 -0
  274. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_course.py +0 -0
  275. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_course_registration_link.py +0 -0
  276. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_course_section.py +0 -0
  277. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_group.py +0 -0
  278. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_job.py +0 -0
  279. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
  280. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_transaction.py +0 -0
  281. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_user.py +0 -0
  282. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extended_work.py +0 -0
  283. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extract_file_tree_directory.py +0 -0
  284. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/extract_file_tree_file.py +0 -0
  285. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/failed_to_send_email_exception.py +0 -0
  286. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/feedback_base.py +0 -0
  287. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
  288. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/feedback_with_replies.py +0 -0
  289. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/feedback_without_replies.py +0 -0
  290. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/file_deletion.py +0 -0
  291. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/file_rule.py +0 -0
  292. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/file_rule_input_data.py +0 -0
  293. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/file_tree.py +0 -0
  294. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/file_type.py +0 -0
  295. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/finalized_lti1p1_provider.py +0 -0
  296. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/finalized_lti1p3_provider.py +0 -0
  297. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
  298. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/fixed_availability.py +0 -0
  299. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/fixed_grade_availability.py +0 -0
  300. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/fixture_like.py +0 -0
  301. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/fraction.py +0 -0
  302. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/general_feedback_comment_base.py +0 -0
  303. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
  304. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/general_feedback_extra.py +0 -0
  305. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/git_repositories_page.py +0 -0
  306. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/git_repository_like.py +0 -0
  307. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/git_user_info.py +0 -0
  308. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
  309. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/grade_history.py +0 -0
  310. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/grade_origin.py +0 -0
  311. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
  312. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/group.py +0 -0
  313. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
  314. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/group_set.py +0 -0
  315. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/groups_enabled_setting.py +0 -0
  316. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/has_unread_notifcation_json.py +0 -0
  317. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/health_information.py +0 -0
  318. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/ignore_handling.py +0 -0
  319. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/ignored_files_exception.py +0 -0
  320. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/import_into_assignment_data.py +0 -0
  321. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/import_into_course_data.py +0 -0
  322. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
  323. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/inline_feedback_comment_base.py +0 -0
  324. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
  325. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/inline_feedback_extra.py +0 -0
  326. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
  327. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/invalid_group_exception.py +0 -0
  328. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/invalid_io_cases_exception.py +0 -0
  329. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/invalid_options_exception.py +0 -0
  330. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_as_json.py +0 -0
  331. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_base_data.py +0 -0
  332. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_data.py +0 -0
  333. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_extra.py +0 -0
  334. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_input_as_json.py +0 -0
  335. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_input_case.py +0 -0
  336. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_log.py +0 -0
  337. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_option.py +0 -0
  338. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_step_log.py +0 -0
  339. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/io_test_step_log_base.py +0 -0
  340. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
  341. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/job.py +0 -0
  342. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/json_create_auto_test.py +0 -0
  343. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/json_create_tenant.py +0 -0
  344. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/json_patch_auto_test.py +0 -0
  345. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
  346. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_as_json.py +0 -0
  347. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_base_data.py +0 -0
  348. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_data.py +0 -0
  349. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_extra.py +0 -0
  350. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_input_as_json.py +0 -0
  351. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_log.py +0 -0
  352. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/junit_test_log_base.py +0 -0
  353. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
  354. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/legacy_features.py +0 -0
  355. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/line_range.py +0 -0
  356. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/linter_comment.py +0 -0
  357. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/linters_enabled_setting.py +0 -0
  358. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lms_capabilities.py +0 -0
  359. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/login_token_before_time_setting.py +0 -0
  360. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/login_user_data.py +0 -0
  361. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/logout_response.py +0 -0
  362. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/logout_user_data.py +0 -0
  363. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p1_provider.py +0 -0
  364. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p1_provider_data.py +0 -0
  365. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
  366. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p3_provider.py +0 -0
  367. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
  368. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
  369. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_enabled_setting.py +0 -0
  370. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
  371. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
  372. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
  373. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_provider_base.py +0 -0
  374. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
  375. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_document_update_size_setting.py +0 -0
  376. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
  377. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
  378. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_file_size_setting.py +0 -0
  379. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_large_upload_size_setting.py +0 -0
  380. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_lines_setting.py +0 -0
  381. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_mirror_file_age_setting.py +0 -0
  382. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_normal_upload_size_setting.py +0 -0
  383. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_number_of_files_setting.py +0 -0
  384. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
  385. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/max_user_setting_amount_setting.py +0 -0
  386. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/min_password_score_setting.py +0 -0
  387. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/mirror_file_result.py +0 -0
  388. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/missing_cookie_error.py +0 -0
  389. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/missing_file.py +0 -0
  390. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
  391. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
  392. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
  393. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
  394. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
  395. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
  396. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
  397. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
  398. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
  399. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
  400. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
  401. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
  402. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
  403. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
  404. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
  405. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
  406. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/no_permissions.py +0 -0
  407. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/non_deleted_comment_reply.py +0 -0
  408. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
  409. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
  410. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/non_present_preference.py +0 -0
  411. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification.py +0 -0
  412. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
  413. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
  414. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_poll_time_setting.py +0 -0
  415. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_reasons.py +0 -0
  416. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_setting.py +0 -0
  417. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notification_setting_option.py +0 -0
  418. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/notifications_json.py +0 -0
  419. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/oauth_provider.py +0 -0
  420. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/oauth_token.py +0 -0
  421. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/option.py +0 -0
  422. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/options_input_data.py +0 -0
  423. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
  424. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/parse_api_exception.py +0 -0
  425. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
  426. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
  427. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_all_notification_data.py +0 -0
  428. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_assignment_data.py +0 -0
  429. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_auto_test_data.py +0 -0
  430. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_comment_reply_data.py +0 -0
  431. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_course_data.py +0 -0
  432. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_grader_submission_data.py +0 -0
  433. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_notification_data.py +0 -0
  434. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
  435. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_provider_lti_data.py +0 -0
  436. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_role_course_data.py +0 -0
  437. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_role_data.py +0 -0
  438. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_role_tenant_data.py +0 -0
  439. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
  440. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
  441. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_section_data.py +0 -0
  442. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_settings_tenant_data.py +0 -0
  443. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_site_settings_data.py +0 -0
  444. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_snippet_course_data.py +0 -0
  445. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_snippet_data.py +0 -0
  446. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_submission_data.py +0 -0
  447. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
  448. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
  449. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/patch_user_data.py +0 -0
  450. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
  451. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
  452. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/permission_exception.py +0 -0
  453. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
  454. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
  455. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_case.py +0 -0
  456. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
  457. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_run.py +0 -0
  458. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
  459. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
  460. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/plagiarism_state.py +0 -0
  461. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/post_oauth_token_data.py +0 -0
  462. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/present_preference.py +0 -0
  463. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/proxy.py +0 -0
  464. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/put_description_assignment_data.py +0 -0
  465. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/put_enroll_link_course_data.py +0 -0
  466. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/put_price_course_data.py +0 -0
  467. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/put_price_tenant_data.py +0 -0
  468. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/put_rubric_assignment_data.py +0 -0
  469. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/quality_comment_severity.py +0 -0
  470. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
  471. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/quality_test_log.py +0 -0
  472. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/quality_test_log_base.py +0 -0
  473. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/register_enabled_setting.py +0 -0
  474. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/register_user_data.py +0 -0
  475. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/register_user_with_link_course_data.py +0 -0
  476. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/release_info.py +0 -0
  477. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/release_message_max_time_setting.py +0 -0
  478. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rename_group_group_data.py +0 -0
  479. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/render_html_enabled_setting.py +0 -0
  480. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
  481. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/reset_token_time_setting.py +0 -0
  482. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_get_auto_test_get.py +0 -0
  483. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
  484. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_post_login_link_login.py +0 -0
  485. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_post_section_create_division.py +0 -0
  486. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_post_user_login.py +0 -0
  487. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/result_data_post_user_register.py +0 -0
  488. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/role_as_json_with_perms.py +0 -0
  489. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/root_file_trees_json.py +0 -0
  490. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_description_type.py +0 -0
  491. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
  492. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_item.py +0 -0
  493. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_item_input_as_json.py +0 -0
  494. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_lock_reason.py +0 -0
  495. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_row_base.py +0 -0
  496. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
  497. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
  498. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rubrics_enabled_setting.py +0 -0
  499. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/rule_type.py +0 -0
  500. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/run_program_as_json.py +0 -0
  501. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/run_program_data.py +0 -0
  502. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/run_program_extra.py +0 -0
  503. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/run_program_input_as_json.py +0 -0
  504. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/run_program_log.py +0 -0
  505. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/saml2_provider_json.py +0 -0
  506. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/saml_ui_info.py +0 -0
  507. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
  508. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/send_registration_email_setting.py +0 -0
  509. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
  510. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
  511. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/server_time_sync_interval_setting.py +0 -0
  512. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/setting_token_time_setting.py +0 -0
  513. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/setup_oauth_result.py +0 -0
  514. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
  515. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/site_email_setting.py +0 -0
  516. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/snippet.py +0 -0
  517. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
  518. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
  519. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
  520. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
  521. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_data.py +0 -0
  522. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
  523. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/started_transaction.py +0 -0
  524. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/student_payment_enabled_setting.py +0 -0
  525. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/submission_validator_input_data.py +0 -0
  526. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/submissions_page_v2_enabled_setting.py +0 -0
  527. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
  528. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/task_result_state.py +0 -0
  529. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tax_behavior.py +0 -0
  530. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_coupon.py +0 -0
  531. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_coupon_usage.py +0 -0
  532. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_coupon_with_code.py +0 -0
  533. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_coupon_without_code.py +0 -0
  534. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_course_statistics.py +0 -0
  535. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_of_tenant_price.py +0 -0
  536. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_permissions.py +0 -0
  537. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_price.py +0 -0
  538. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
  539. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/tenant_statistics.py +0 -0
  540. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
  541. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/timed_availability.py +0 -0
  542. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/timeframe_like.py +0 -0
  543. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/token_revoked_exception.py +0 -0
  544. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/transaction.py +0 -0
  545. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/transaction_state.py +0 -0
  546. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/types.py +0 -0
  547. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
  548. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/update_set_auto_test_data.py +0 -0
  549. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
  550. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/update_suite_auto_test_data.py +0 -0
  551. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
  552. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/upload_submission_assignment_data.py +0 -0
  553. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/user.py +0 -0
  554. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/user_course.py +0 -0
  555. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/user_info_with_role.py +0 -0
  556. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/user_input.py +0 -0
  557. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/user_without_group.py +0 -0
  558. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/weak_password_exception.py +0 -0
  559. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/weak_password_feedback.py +0 -0
  560. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/webhook_base.py +0 -0
  561. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
  562. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
  563. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/work.py +0 -0
  564. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/work_origin.py +0 -0
  565. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/work_rubric_item.py +0 -0
  566. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/work_rubric_result_as_json.py +0 -0
  567. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
  568. {codegrade-16.1.40 → codegrade-16.1.45}/codegrade/parsers.py +0 -0
  569. {codegrade-16.1.40/cg_dt_utils → codegrade-16.1.45/codegrade}/py.typed +0 -0
  570. {codegrade-16.1.40 → 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.40
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.40"
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.40",
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.40",
549
+ "User-Agent": "CodeGradeAPI/16.1.45",
549
550
  },
551
+ follow_redirects=True,
550
552
  )
551
553
 
552
554
  @staticmethod
@@ -64,6 +64,7 @@ from .assignment_submission_mode import AssignmentSubmissionMode
64
64
  from .assignment_template import AssignmentTemplate
65
65
  from .assignment_timeframes import AssignmentTimeframes
66
66
  from .at_image_caching_enabled_setting import AtImageCachingEnabledSetting
67
+ from .atv2_quizzes_setting import Atv2QuizzesSetting
67
68
  from .auto_test import AutoTest
68
69
  from .auto_test_capture_points_message_setting import (
69
70
  AutoTestCapturePointsMessageSetting,
@@ -169,6 +170,9 @@ from .check_points_data import CheckPointsData
169
170
  from .check_points_extra import CheckPointsExtra
170
171
  from .check_points_input_as_json import CheckPointsInputAsJSON
171
172
  from .clone_result import CloneResult
173
+ from .code_editor_output_viewer_title_setting import (
174
+ CodeEditorOutputViewerTitleSetting,
175
+ )
172
176
  from .code_quality_as_json import CodeQualityAsJSON
173
177
  from .code_quality_base_data import CodeQualityBaseData
174
178
  from .code_quality_data import CodeQualityData
@@ -327,6 +331,9 @@ from .group_set import GroupSet
327
331
  from .groups_enabled_setting import GroupsEnabledSetting
328
332
  from .has_unread_notifcation_json import HasUnreadNotifcationJSON
329
333
  from .health_information import HealthInformation
334
+ from .hide_code_editor_output_viewer_with_only_quiz_steps_setting import (
335
+ HideCodeEditorOutputViewerWithOnlyQuizStepsSetting,
336
+ )
330
337
  from .ignore_handling import IgnoreHandling
331
338
  from .ignored_files_exception import IgnoredFilesException
332
339
  from .import_into_assignment_data import ImportIntoAssignmentData
@@ -524,6 +531,7 @@ from .patch_ui_preference_user_setting_data import (
524
531
  )
525
532
  from .patch_user_data import PatchUserData
526
533
  from .pay_with_coupon_course_price_data import PayWithCouponCoursePriceData
534
+ from .pearson_templates_setting import PearsonTemplatesSetting
527
535
  from .peer_feedback_enabled_setting import PeerFeedbackEnabledSetting
528
536
  from .permission_exception import PermissionException
529
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
@@ -849,6 +861,14 @@ class AllSiteSettings(FrontendSiteSettings):
849
861
  res["SIMPLE_SUBMISSION_MODE_ENABLED"] = to_dict(
850
862
  self.simple_submission_mode_enabled.value
851
863
  )
864
+ if self.atv2_quizzes.is_just:
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
+ )
852
872
  if self.auto_test_heartbeat_interval.is_just:
853
873
  res["AUTO_TEST_HEARTBEAT_INTERVAL"] = to_dict(
854
874
  self.auto_test_heartbeat_interval.value
@@ -979,6 +999,8 @@ class AllSiteSettings(FrontendSiteSettings):
979
999
  res["LTI_LAUNCH_DATA_LOGGING"] = to_dict(
980
1000
  self.lti_launch_data_logging.value
981
1001
  )
1002
+ if self.pearson_templates.is_just:
1003
+ res["PEARSON_TEMPLATES"] = to_dict(self.pearson_templates.value)
982
1004
  return res
983
1005
 
984
1006
  @classmethod
@@ -999,6 +1021,7 @@ class AllSiteSettings(FrontendSiteSettings):
999
1021
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1000
1022
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1001
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,
1002
1025
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1003
1026
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1004
1027
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1069,6 +1092,8 @@ class AllSiteSettings(FrontendSiteSettings):
1069
1092
  inline_rubric_viewer_enabled=parsed.INLINE_RUBRIC_VIEWER_ENABLED,
1070
1093
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1071
1094
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
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,
1072
1097
  auto_test_heartbeat_interval=parsed.AUTO_TEST_HEARTBEAT_INTERVAL,
1073
1098
  auto_test_heartbeat_max_missed=parsed.AUTO_TEST_HEARTBEAT_MAX_MISSED,
1074
1099
  auto_test_max_jobs_per_runner=parsed.AUTO_TEST_MAX_JOBS_PER_RUNNER,
@@ -1103,6 +1128,7 @@ class AllSiteSettings(FrontendSiteSettings):
1103
1128
  lti_1p3_parse_most_privileged_role=parsed.LTI_1P3_PARSE_MOST_PRIVILEGED_ROLE,
1104
1129
  lti_first_launch_content_id_enabled=parsed.LTI_FIRST_LAUNCH_CONTENT_ID_ENABLED,
1105
1130
  lti_launch_data_logging=parsed.LTI_LAUNCH_DATA_LOGGING,
1131
+ pearson_templates=parsed.PEARSON_TEMPLATES,
1106
1132
  )
1107
1133
  res.raw_data = d
1108
1134
  return res
@@ -0,0 +1,56 @@
1
+ """The module that defines the ``Atv2QuizzesSetting`` 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 Atv2QuizzesSetting:
16
+ """ """
17
+
18
+ name: "t.Literal['ATV2_QUIZZES']"
19
+ value: "t.Optional[bool]"
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("ATV2_QUIZZES"),
28
+ doc="",
29
+ ),
30
+ rqa.RequiredArgument(
31
+ "value",
32
+ rqa.Nullable(rqa.SimpleValue.bool),
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["Atv2QuizzesSetting"], d: t.Dict[str, t.Any]
48
+ ) -> "Atv2QuizzesSetting":
49
+ parsed = cls.data_parser.try_parse(d)
50
+
51
+ res = cls(
52
+ name=parsed.name,
53
+ value=parsed.value,
54
+ )
55
+ res.raw_data = d
56
+ 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.
@@ -277,6 +280,14 @@ class FrontendSiteSettings:
277
280
  #: assignments, and hand in requirements are not available with the
278
281
  #: simplified submission mode enabled.
279
282
  simple_submission_mode_enabled: Maybe["bool"] = Nothing
283
+ #: Whether it should be possible to create AutoTest v2 quiz and question
284
+ #: blocks.
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
280
291
 
281
292
  raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
282
293
 
@@ -355,6 +366,14 @@ class FrontendSiteSettings:
355
366
  " steps."
356
367
  ),
357
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
+ ),
358
377
  rqa.OptionalArgument(
359
378
  "EXAM_LOGIN_MAX_LENGTH",
360
379
  rqa.RichValue.TimeDelta,
@@ -936,6 +955,23 @@ class FrontendSiteSettings:
936
955
  " available with the simplified submission mode enabled."
937
956
  ),
938
957
  ),
958
+ rqa.OptionalArgument(
959
+ "ATV2_QUIZZES",
960
+ rqa.SimpleValue.bool,
961
+ doc=(
962
+ "Whether it should be possible to create AutoTest v2 quiz"
963
+ " and question blocks."
964
+ ),
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
+ ),
939
975
  ).use_readable_describe(True)
940
976
  )
941
977
 
@@ -974,6 +1010,9 @@ class FrontendSiteSettings:
974
1010
  self.new_auto_test_test_max_command_time = maybe_from_nullable(
975
1011
  self.new_auto_test_test_max_command_time
976
1012
  )
1013
+ self.code_editor_output_viewer_title = maybe_from_nullable(
1014
+ self.code_editor_output_viewer_title
1015
+ )
977
1016
  self.exam_login_max_length = maybe_from_nullable(
978
1017
  self.exam_login_max_length
979
1018
  )
@@ -1168,6 +1207,12 @@ class FrontendSiteSettings:
1168
1207
  self.simple_submission_mode_enabled = maybe_from_nullable(
1169
1208
  self.simple_submission_mode_enabled
1170
1209
  )
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
+ )
1171
1216
 
1172
1217
  def to_dict(self) -> t.Dict[str, t.Any]:
1173
1218
  res: t.Dict[str, t.Any] = {}
@@ -1215,6 +1260,10 @@ class FrontendSiteSettings:
1215
1260
  res["NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME"] = to_dict(
1216
1261
  self.new_auto_test_test_max_command_time.value
1217
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
+ )
1218
1267
  if self.exam_login_max_length.is_just:
1219
1268
  res["EXAM_LOGIN_MAX_LENGTH"] = to_dict(
1220
1269
  self.exam_login_max_length.value
@@ -1475,6 +1524,14 @@ class FrontendSiteSettings:
1475
1524
  res["SIMPLE_SUBMISSION_MODE_ENABLED"] = to_dict(
1476
1525
  self.simple_submission_mode_enabled.value
1477
1526
  )
1527
+ if self.atv2_quizzes.is_just:
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
+ )
1478
1535
  return res
1479
1536
 
1480
1537
  @classmethod
@@ -1495,6 +1552,7 @@ class FrontendSiteSettings:
1495
1552
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1496
1553
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1497
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,
1498
1556
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1499
1557
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1500
1558
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1565,6 +1623,8 @@ class FrontendSiteSettings:
1565
1623
  inline_rubric_viewer_enabled=parsed.INLINE_RUBRIC_VIEWER_ENABLED,
1566
1624
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1567
1625
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
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,
1568
1628
  )
1569
1629
  res.raw_data = d
1570
1630
  return res