codegrade 16.1.41__tar.gz → 16.1.46__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 (571) hide show
  1. {codegrade-16.1.41 → codegrade-16.1.46}/PKG-INFO +2 -3
  2. {codegrade-16.1.41 → codegrade-16.1.46}/cg_dt_utils/__init__.py +6 -1
  3. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/cg_maybe_plugin.py +1 -1
  4. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_base.py +1 -1
  5. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_convert.py +14 -3
  6. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_mapping.py +2 -1
  7. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_multipart.py +4 -3
  8. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_swaggerize.py +11 -2
  9. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/__init__.py +1 -1
  10. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/assignment.py +93 -0
  11. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/tenant.py +2 -1
  12. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/client.py +4 -2
  13. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/__init__.py +10 -0
  14. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/all_site_settings.py +30 -0
  15. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_lti1p3_provider.py +6 -2
  16. codegrade-16.1.46/codegrade/models/code_editor_output_viewer_title_setting.py +57 -0
  17. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_tenant.py +2 -0
  18. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/frontend_site_settings.py +77 -0
  19. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/global_perm_map.py +31 -0
  20. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/global_permission.py +2 -0
  21. codegrade-16.1.46/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +59 -0
  22. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p3_provider_data.py +2 -2
  23. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_tenant_data.py +11 -0
  24. codegrade-16.1.46/codegrade/models/pearson_templates_setting.py +56 -0
  25. codegrade-16.1.46/codegrade/models/simple_submission_navigate_to_latest_editor_session_setting.py +59 -0
  26. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/site_setting_input.py +18 -0
  27. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant.py +14 -0
  28. {codegrade-16.1.41 → codegrade-16.1.46}/pyproject.toml +6 -6
  29. {codegrade-16.1.41 → codegrade-16.1.46}/setup.py +2 -2
  30. codegrade-16.1.41/cg_maybe/py.typed +0 -0
  31. codegrade-16.1.41/cg_request_args/py.typed +0 -0
  32. codegrade-16.1.41/codegrade/py.typed +0 -0
  33. {codegrade-16.1.41 → codegrade-16.1.46}/README.md +0 -0
  34. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/__init__.py +0 -0
  35. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/_just.py +0 -0
  36. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/_maybe.py +0 -0
  37. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/_nothing.py +0 -0
  38. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/_type_helpers.py +0 -0
  39. {codegrade-16.1.41 → codegrade-16.1.46}/cg_maybe/utils.py +0 -0
  40. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/__init__.py +0 -0
  41. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_any_value.py +0 -0
  42. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_enum.py +0 -0
  43. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_form.py +0 -0
  44. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_lazy.py +0 -0
  45. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_list.py +0 -0
  46. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_literal.py +0 -0
  47. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_nullable.py +0 -0
  48. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_parse_utils.py +0 -0
  49. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_query.py +0 -0
  50. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_rich_value.py +0 -0
  51. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_swagger_utils.py +0 -0
  52. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/_utils.py +0 -0
  53. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/exceptions.py +0 -0
  54. {codegrade-16.1.41 → codegrade-16.1.46}/cg_request_args/request_args_plugin.py +0 -0
  55. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/__init__.py +0 -0
  56. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/about.py +0 -0
  57. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/auto_test.py +0 -0
  58. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/comment.py +0 -0
  59. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/course.py +0 -0
  60. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/course_price.py +0 -0
  61. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/file.py +0 -0
  62. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/git_provider.py +0 -0
  63. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/group.py +0 -0
  64. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/group_set.py +0 -0
  65. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/login_link.py +0 -0
  66. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/lti.py +0 -0
  67. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/notification.py +0 -0
  68. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/oauth_provider.py +0 -0
  69. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/oauth_token.py +0 -0
  70. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/permission.py +0 -0
  71. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/plagiarism.py +0 -0
  72. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/role.py +0 -0
  73. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/section.py +0 -0
  74. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/site_settings.py +0 -0
  75. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/snippet.py +0 -0
  76. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/sso_provider.py +0 -0
  77. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/submission.py +0 -0
  78. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/task_result.py +0 -0
  79. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/transaction.py +0 -0
  80. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/user.py +0 -0
  81. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/user_setting.py +0 -0
  82. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/_api/webhook.py +0 -0
  83. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/errors.py +0 -0
  84. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/_base_price.py +0 -0
  85. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/_saml_ui_logo_info.py +0 -0
  86. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
  87. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/about.py +0 -0
  88. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/abstract_role.py +0 -0
  89. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/add_users_section_data.py +0 -0
  90. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/all_auto_test_results.py +0 -0
  91. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/any_auto_test_step_as_json.py +0 -0
  92. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/any_error.py +0 -0
  93. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
  94. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
  95. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/api_codes.py +0 -0
  96. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment.py +0 -0
  97. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_anonymization_algo.py +0 -0
  98. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
  99. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
  100. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_description_enabled_setting.py +0 -0
  101. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
  102. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_done_type.py +0 -0
  103. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_export_column.py +0 -0
  104. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_feedback.py +0 -0
  105. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_grader.py +0 -0
  106. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
  107. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_kind.py +0 -0
  108. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_login_link.py +0 -0
  109. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
  110. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
  111. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
  112. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
  113. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
  114. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_point_decimals_setting.py +0 -0
  115. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_points_grading_settings.py +0 -0
  116. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_section_timeframe.py +0 -0
  117. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_state_enum.py +0 -0
  118. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_submission_mode.py +0 -0
  119. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_template.py +0 -0
  120. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/assignment_timeframes.py +0 -0
  121. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
  122. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/atv2_quizzes_setting.py +0 -0
  123. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test.py +0 -0
  124. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
  125. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
  126. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
  127. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_enabled_setting.py +0 -0
  128. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_fixture.py +0 -0
  129. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_global_setup_output.py +0 -0
  130. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_global_setup_script.py +0 -0
  131. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
  132. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
  133. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
  134. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
  135. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
  136. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
  137. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
  138. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
  139. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
  140. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
  141. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
  142. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_quality_comment.py +0 -0
  143. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_result.py +0 -0
  144. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_result_state.py +0 -0
  145. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
  146. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_run.py +0 -0
  147. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
  148. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_runner.py +0 -0
  149. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_runner_state.py +0 -0
  150. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_set.py +0 -0
  151. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_base.py +0 -0
  152. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_base_as_json.py +0 -0
  153. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
  154. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_log_base.py +0 -0
  155. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_result.py +0 -0
  156. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_result_state.py +0 -0
  157. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_step_validation_exception.py +0 -0
  158. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_suite.py +0 -0
  159. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
  160. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
  161. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
  162. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_about.py +0 -0
  163. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_auto_test_quality_comment.py +0 -0
  164. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_comment_base.py +0 -0
  165. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
  166. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
  167. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_comment_reply.py +0 -0
  168. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_course_coupon.py +0 -0
  169. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_directory.py +0 -0
  170. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_error.py +0 -0
  171. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_file.py +0 -0
  172. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_lms_capabilities.py +0 -0
  173. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_lti1p1_provider.py +0 -0
  174. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_lti_provider.py +0 -0
  175. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_notification.py +0 -0
  176. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_release_info.py +0 -0
  177. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_rubric_item.py +0 -0
  178. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/base_tenant_coupon.py +0 -0
  179. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
  180. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/bulk_enroll_course_data.py +0 -0
  181. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
  182. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/cg_ignore_version.py +0 -0
  183. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/change_user_role_course_data.py +0 -0
  184. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/check_points_as_json.py +0 -0
  185. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/check_points_data.py +0 -0
  186. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/check_points_extra.py +0 -0
  187. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/check_points_input_as_json.py +0 -0
  188. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/clone_result.py +0 -0
  189. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_as_json.py +0 -0
  190. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_base_data.py +0 -0
  191. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_data.py +0 -0
  192. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_extra.py +0 -0
  193. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_input_as_json.py +0 -0
  194. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/code_quality_penalties.py +0 -0
  195. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/column_range.py +0 -0
  196. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/comment_base.py +0 -0
  197. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/comment_reply.py +0 -0
  198. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/comment_reply_edit.py +0 -0
  199. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/comment_reply_type.py +0 -0
  200. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/comment_type.py +0 -0
  201. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/community_library_publishing_setting.py +0 -0
  202. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/community_library_setting.py +0 -0
  203. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/connect_repository_git_provider_data.py +0 -0
  204. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/copy_auto_test_data.py +0 -0
  205. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/copy_rubric_assignment_data.py +0 -0
  206. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/coupon_data_parser.py +0 -0
  207. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/coupon_with_code.py +0 -0
  208. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/coupon_without_code.py +0 -0
  209. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course.py +0 -0
  210. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_bulk_enroll_result.py +0 -0
  211. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
  212. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_coupon.py +0 -0
  213. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_coupon_usage.py +0 -0
  214. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
  215. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
  216. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_of_course_price.py +0 -0
  217. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
  218. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_perm_map.py +0 -0
  219. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_permission.py +0 -0
  220. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_price.py +0 -0
  221. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_register_enabled_setting.py +0 -0
  222. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_register_response.py +0 -0
  223. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_registration_link.py +0 -0
  224. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_role.py +0 -0
  225. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_role_as_json_with_perms.py +0 -0
  226. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_section.py +0 -0
  227. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_section_division.py +0 -0
  228. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_section_division_connection.py +0 -0
  229. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_section_division_user.py +0 -0
  230. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_snippet.py +0 -0
  231. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_state.py +0 -0
  232. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/course_statistics_as_json.py +0 -0
  233. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_assignment_course_data.py +0 -0
  234. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_auto_test_data.py +0 -0
  235. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_comment_data.py +0 -0
  236. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_comment_reply_data.py +0 -0
  237. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_course_data.py +0 -0
  238. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_division_section_data.py +0 -0
  239. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_group_group_set_data.py +0 -0
  240. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_group_set_course_data.py +0 -0
  241. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_lti_data.py +0 -0
  242. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
  243. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_proxy_submission_data.py +0 -0
  244. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_repository_git_provider_data.py +0 -0
  245. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_role_course_data.py +0 -0
  246. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_section_course_data.py +0 -0
  247. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_snippet_course_data.py +0 -0
  248. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_snippet_data.py +0 -0
  249. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_sso_provider_data.py +0 -0
  250. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/create_tenant_data.py +0 -0
  251. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/csv_large_file_limit_setting.py +0 -0
  252. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
  253. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/currency.py +0 -0
  254. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_as_json.py +0 -0
  255. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_data.py +0 -0
  256. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_extra.py +0 -0
  257. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_input_as_json.py +0 -0
  258. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_log.py +0 -0
  259. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/custom_output_log_base.py +0 -0
  260. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/deleted_comment_reply.py +0 -0
  261. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/deletion_type.py +0 -0
  262. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/directory_with_children.py +0 -0
  263. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/disabled_setting_exception.py +0 -0
  264. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
  265. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/editor_enabled_setting.py +0 -0
  266. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/email_notification_types.py +0 -0
  267. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/email_students_enabled_setting.py +0 -0
  268. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/email_users_course_data.py +0 -0
  269. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/exam_login_max_length_setting.py +0 -0
  270. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/export_assignment_csv_data.py +0 -0
  271. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/export_assignment_data.py +0 -0
  272. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/export_assignment_files_data.py +0 -0
  273. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_auto_test_result.py +0 -0
  274. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_auto_test_run.py +0 -0
  275. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_course.py +0 -0
  276. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_course_registration_link.py +0 -0
  277. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_course_section.py +0 -0
  278. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_group.py +0 -0
  279. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_job.py +0 -0
  280. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
  281. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_transaction.py +0 -0
  282. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_user.py +0 -0
  283. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extended_work.py +0 -0
  284. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extract_file_tree_directory.py +0 -0
  285. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/extract_file_tree_file.py +0 -0
  286. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/failed_to_send_email_exception.py +0 -0
  287. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/feedback_base.py +0 -0
  288. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
  289. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/feedback_with_replies.py +0 -0
  290. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/feedback_without_replies.py +0 -0
  291. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/file_deletion.py +0 -0
  292. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/file_rule.py +0 -0
  293. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/file_rule_input_data.py +0 -0
  294. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/file_tree.py +0 -0
  295. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/file_type.py +0 -0
  296. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/finalized_lti1p1_provider.py +0 -0
  297. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/finalized_lti1p3_provider.py +0 -0
  298. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
  299. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/fixed_availability.py +0 -0
  300. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/fixed_grade_availability.py +0 -0
  301. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/fixture_like.py +0 -0
  302. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/fraction.py +0 -0
  303. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/general_feedback_comment_base.py +0 -0
  304. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
  305. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/general_feedback_extra.py +0 -0
  306. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/git_repositories_page.py +0 -0
  307. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/git_repository_like.py +0 -0
  308. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/git_user_info.py +0 -0
  309. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
  310. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/grade_history.py +0 -0
  311. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/grade_origin.py +0 -0
  312. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
  313. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/group.py +0 -0
  314. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
  315. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/group_set.py +0 -0
  316. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/groups_enabled_setting.py +0 -0
  317. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/has_unread_notifcation_json.py +0 -0
  318. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/health_information.py +0 -0
  319. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/ignore_handling.py +0 -0
  320. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/ignored_files_exception.py +0 -0
  321. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/import_into_assignment_data.py +0 -0
  322. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/import_into_course_data.py +0 -0
  323. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
  324. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/inline_feedback_comment_base.py +0 -0
  325. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
  326. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/inline_feedback_extra.py +0 -0
  327. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
  328. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/invalid_group_exception.py +0 -0
  329. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/invalid_io_cases_exception.py +0 -0
  330. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/invalid_options_exception.py +0 -0
  331. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_as_json.py +0 -0
  332. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_base_data.py +0 -0
  333. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_data.py +0 -0
  334. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_extra.py +0 -0
  335. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_input_as_json.py +0 -0
  336. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_input_case.py +0 -0
  337. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_log.py +0 -0
  338. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_option.py +0 -0
  339. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_step_log.py +0 -0
  340. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/io_test_step_log_base.py +0 -0
  341. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
  342. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/job.py +0 -0
  343. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/json_create_auto_test.py +0 -0
  344. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/json_create_tenant.py +0 -0
  345. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/json_patch_auto_test.py +0 -0
  346. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
  347. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_as_json.py +0 -0
  348. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_base_data.py +0 -0
  349. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_data.py +0 -0
  350. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_extra.py +0 -0
  351. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_input_as_json.py +0 -0
  352. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_log.py +0 -0
  353. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/junit_test_log_base.py +0 -0
  354. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
  355. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/legacy_features.py +0 -0
  356. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/line_range.py +0 -0
  357. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/linter_comment.py +0 -0
  358. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/linters_enabled_setting.py +0 -0
  359. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lms_capabilities.py +0 -0
  360. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/login_token_before_time_setting.py +0 -0
  361. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/login_user_data.py +0 -0
  362. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/logout_response.py +0 -0
  363. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/logout_user_data.py +0 -0
  364. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p1_provider.py +0 -0
  365. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p1_provider_data.py +0 -0
  366. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
  367. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p3_provider.py +0 -0
  368. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
  369. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
  370. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_enabled_setting.py +0 -0
  371. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
  372. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
  373. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
  374. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_provider_base.py +0 -0
  375. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
  376. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_document_update_size_setting.py +0 -0
  377. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
  378. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
  379. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_file_size_setting.py +0 -0
  380. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_large_upload_size_setting.py +0 -0
  381. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_lines_setting.py +0 -0
  382. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_mirror_file_age_setting.py +0 -0
  383. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_normal_upload_size_setting.py +0 -0
  384. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_number_of_files_setting.py +0 -0
  385. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
  386. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/max_user_setting_amount_setting.py +0 -0
  387. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/min_password_score_setting.py +0 -0
  388. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/mirror_file_result.py +0 -0
  389. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/missing_cookie_error.py +0 -0
  390. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/missing_file.py +0 -0
  391. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
  392. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
  393. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
  394. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
  395. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
  396. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
  397. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
  398. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
  399. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
  400. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
  401. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
  402. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
  403. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
  404. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
  405. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
  406. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
  407. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/no_permissions.py +0 -0
  408. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/non_deleted_comment_reply.py +0 -0
  409. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
  410. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
  411. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/non_present_preference.py +0 -0
  412. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification.py +0 -0
  413. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
  414. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
  415. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_poll_time_setting.py +0 -0
  416. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_reasons.py +0 -0
  417. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_setting.py +0 -0
  418. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notification_setting_option.py +0 -0
  419. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/notifications_json.py +0 -0
  420. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/oauth_provider.py +0 -0
  421. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/oauth_token.py +0 -0
  422. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/option.py +0 -0
  423. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/options_input_data.py +0 -0
  424. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
  425. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/parse_api_exception.py +0 -0
  426. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
  427. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
  428. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_all_notification_data.py +0 -0
  429. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_assignment_data.py +0 -0
  430. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_auto_test_data.py +0 -0
  431. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_comment_reply_data.py +0 -0
  432. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_course_data.py +0 -0
  433. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_grader_submission_data.py +0 -0
  434. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_notification_data.py +0 -0
  435. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
  436. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_provider_lti_data.py +0 -0
  437. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_role_course_data.py +0 -0
  438. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_role_data.py +0 -0
  439. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_role_tenant_data.py +0 -0
  440. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
  441. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
  442. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_section_data.py +0 -0
  443. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_settings_tenant_data.py +0 -0
  444. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_site_settings_data.py +0 -0
  445. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_snippet_course_data.py +0 -0
  446. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_snippet_data.py +0 -0
  447. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_submission_data.py +0 -0
  448. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
  449. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
  450. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/patch_user_data.py +0 -0
  451. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
  452. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
  453. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/permission_exception.py +0 -0
  454. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
  455. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
  456. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_case.py +0 -0
  457. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
  458. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_run.py +0 -0
  459. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
  460. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
  461. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/plagiarism_state.py +0 -0
  462. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/post_oauth_token_data.py +0 -0
  463. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/present_preference.py +0 -0
  464. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/proxy.py +0 -0
  465. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/put_description_assignment_data.py +0 -0
  466. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/put_enroll_link_course_data.py +0 -0
  467. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/put_price_course_data.py +0 -0
  468. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/put_price_tenant_data.py +0 -0
  469. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/put_rubric_assignment_data.py +0 -0
  470. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/quality_comment_severity.py +0 -0
  471. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
  472. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/quality_test_log.py +0 -0
  473. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/quality_test_log_base.py +0 -0
  474. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/register_enabled_setting.py +0 -0
  475. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/register_user_data.py +0 -0
  476. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/register_user_with_link_course_data.py +0 -0
  477. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/release_info.py +0 -0
  478. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/release_message_max_time_setting.py +0 -0
  479. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rename_group_group_data.py +0 -0
  480. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/render_html_enabled_setting.py +0 -0
  481. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
  482. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/reset_token_time_setting.py +0 -0
  483. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_get_auto_test_get.py +0 -0
  484. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
  485. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_post_login_link_login.py +0 -0
  486. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_post_section_create_division.py +0 -0
  487. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_post_user_login.py +0 -0
  488. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/result_data_post_user_register.py +0 -0
  489. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/role_as_json_with_perms.py +0 -0
  490. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/root_file_trees_json.py +0 -0
  491. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_description_type.py +0 -0
  492. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
  493. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_item.py +0 -0
  494. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_item_input_as_json.py +0 -0
  495. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_lock_reason.py +0 -0
  496. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_row_base.py +0 -0
  497. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
  498. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
  499. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rubrics_enabled_setting.py +0 -0
  500. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/rule_type.py +0 -0
  501. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/run_program_as_json.py +0 -0
  502. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/run_program_data.py +0 -0
  503. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/run_program_extra.py +0 -0
  504. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/run_program_input_as_json.py +0 -0
  505. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/run_program_log.py +0 -0
  506. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/saml2_provider_json.py +0 -0
  507. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/saml_ui_info.py +0 -0
  508. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
  509. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/send_registration_email_setting.py +0 -0
  510. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
  511. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
  512. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/server_time_sync_interval_setting.py +0 -0
  513. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/setting_token_time_setting.py +0 -0
  514. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/setup_oauth_result.py +0 -0
  515. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
  516. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/site_email_setting.py +0 -0
  517. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/snippet.py +0 -0
  518. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
  519. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
  520. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
  521. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
  522. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/start_payment_course_price_data.py +0 -0
  523. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
  524. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/started_transaction.py +0 -0
  525. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/student_payment_enabled_setting.py +0 -0
  526. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/submission_validator_input_data.py +0 -0
  527. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/submissions_page_v2_enabled_setting.py +0 -0
  528. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
  529. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/task_result_state.py +0 -0
  530. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tax_behavior.py +0 -0
  531. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_coupon.py +0 -0
  532. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_coupon_usage.py +0 -0
  533. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_coupon_with_code.py +0 -0
  534. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_coupon_without_code.py +0 -0
  535. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_course_statistics.py +0 -0
  536. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_of_tenant_price.py +0 -0
  537. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_permissions.py +0 -0
  538. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_price.py +0 -0
  539. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
  540. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/tenant_statistics.py +0 -0
  541. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
  542. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/timed_availability.py +0 -0
  543. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/timeframe_like.py +0 -0
  544. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/token_revoked_exception.py +0 -0
  545. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/transaction.py +0 -0
  546. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/transaction_state.py +0 -0
  547. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/types.py +0 -0
  548. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
  549. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/update_set_auto_test_data.py +0 -0
  550. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
  551. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/update_suite_auto_test_data.py +0 -0
  552. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
  553. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/upload_submission_assignment_data.py +0 -0
  554. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/user.py +0 -0
  555. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/user_course.py +0 -0
  556. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/user_info_with_role.py +0 -0
  557. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/user_input.py +0 -0
  558. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/user_without_group.py +0 -0
  559. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/weak_password_exception.py +0 -0
  560. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/weak_password_feedback.py +0 -0
  561. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/webhook_base.py +0 -0
  562. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
  563. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
  564. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/work.py +0 -0
  565. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/work_origin.py +0 -0
  566. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/work_rubric_item.py +0 -0
  567. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/work_rubric_result_as_json.py +0 -0
  568. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
  569. {codegrade-16.1.41 → codegrade-16.1.46}/codegrade/parsers.py +0 -0
  570. {codegrade-16.1.41/cg_dt_utils → codegrade-16.1.46/codegrade}/py.typed +0 -0
  571. {codegrade-16.1.41 → codegrade-16.1.46}/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.46
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
@@ -43,7 +43,12 @@ if t.TYPE_CHECKING: # pragma: no cover
43
43
  def __ge__(self, other: 'DatetimeWithTimezone') -> bool:
44
44
  ...
45
45
 
46
- def isoformat(self) -> str:
46
+ def isoformat(
47
+ self,
48
+ *,
49
+ timespec: t.Literal['auto', 'microseconds', 'milliseconds',
50
+ 'seconds'] = 'auto'
51
+ ) -> str:
47
52
  ...
48
53
 
49
54
  def timestamp(self) -> float:
@@ -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.46"
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.46",
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.46",
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 (
@@ -613,6 +620,9 @@ from .setup_oauth_result import SetupOAuthResult
613
620
  from .simple_submission_mode_enabled_setting import (
614
621
  SimpleSubmissionModeEnabledSetting,
615
622
  )
623
+ from .simple_submission_navigate_to_latest_editor_session_setting import (
624
+ SimpleSubmissionNavigateToLatestEditorSessionSetting,
625
+ )
616
626
  from .site_email_setting import SiteEmailSetting
617
627
  from .site_setting_input import SiteSettingInput
618
628
  from .snippet import Snippet
@@ -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,18 @@ 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
+ )
872
+ if self.simple_submission_navigate_to_latest_editor_session.is_just:
873
+ res[
874
+ "SIMPLE_SUBMISSION_NAVIGATE_TO_LATEST_EDITOR_SESSION"
875
+ ] = to_dict(
876
+ self.simple_submission_navigate_to_latest_editor_session.value
877
+ )
854
878
  if self.auto_test_heartbeat_interval.is_just:
855
879
  res["AUTO_TEST_HEARTBEAT_INTERVAL"] = to_dict(
856
880
  self.auto_test_heartbeat_interval.value
@@ -981,6 +1005,8 @@ class AllSiteSettings(FrontendSiteSettings):
981
1005
  res["LTI_LAUNCH_DATA_LOGGING"] = to_dict(
982
1006
  self.lti_launch_data_logging.value
983
1007
  )
1008
+ if self.pearson_templates.is_just:
1009
+ res["PEARSON_TEMPLATES"] = to_dict(self.pearson_templates.value)
984
1010
  return res
985
1011
 
986
1012
  @classmethod
@@ -1001,6 +1027,7 @@ class AllSiteSettings(FrontendSiteSettings):
1001
1027
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1002
1028
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1003
1029
  new_auto_test_test_max_command_time=parsed.NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME,
1030
+ code_editor_output_viewer_title=parsed.CODE_EDITOR_OUTPUT_VIEWER_TITLE,
1004
1031
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1005
1032
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1006
1033
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1072,6 +1099,8 @@ class AllSiteSettings(FrontendSiteSettings):
1072
1099
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1073
1100
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
1074
1101
  atv2_quizzes=parsed.ATV2_QUIZZES,
1102
+ hide_code_editor_output_viewer_with_only_quiz_steps=parsed.HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS,
1103
+ simple_submission_navigate_to_latest_editor_session=parsed.SIMPLE_SUBMISSION_NAVIGATE_TO_LATEST_EDITOR_SESSION,
1075
1104
  auto_test_heartbeat_interval=parsed.AUTO_TEST_HEARTBEAT_INTERVAL,
1076
1105
  auto_test_heartbeat_max_missed=parsed.AUTO_TEST_HEARTBEAT_MAX_MISSED,
1077
1106
  auto_test_max_jobs_per_runner=parsed.AUTO_TEST_MAX_JOBS_PER_RUNNER,
@@ -1106,6 +1135,7 @@ class AllSiteSettings(FrontendSiteSettings):
1106
1135
  lti_1p3_parse_most_privileged_role=parsed.LTI_1P3_PARSE_MOST_PRIVILEGED_ROLE,
1107
1136
  lti_first_launch_content_id_enabled=parsed.LTI_FIRST_LAUNCH_CONTENT_ID_ENABLED,
1108
1137
  lti_launch_data_logging=parsed.LTI_LAUNCH_DATA_LOGGING,
1138
+ pearson_templates=parsed.PEARSON_TEMPLATES,
1109
1139
  )
1110
1140
  res.raw_data = d
1111
1141
  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,19 @@ 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
291
+ #: Whether we update the simple submission mode navigation to check if we
292
+ #: have an editor session which is later than the submission when we launch
293
+ #: the assignment. This feature is only available when the simple
294
+ #: submission mode is enabled. Be mindful of turning this on when the
295
+ #: tenant uses deadlines.
296
+ simple_submission_navigate_to_latest_editor_session: Maybe[
297
+ "bool"
298
+ ] = Nothing
283
299
 
284
300
  raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
285
301
 
@@ -358,6 +374,14 @@ class FrontendSiteSettings:
358
374
  " steps."
359
375
  ),
360
376
  ),
377
+ rqa.OptionalArgument(
378
+ "CODE_EDITOR_OUTPUT_VIEWER_TITLE",
379
+ rqa.SimpleValue.str,
380
+ doc=(
381
+ "Title for the output viewer in the code editor when we"
382
+ " run the ATv2 config."
383
+ ),
384
+ ),
361
385
  rqa.OptionalArgument(
362
386
  "EXAM_LOGIN_MAX_LENGTH",
363
387
  rqa.RichValue.TimeDelta,
@@ -947,6 +971,27 @@ class FrontendSiteSettings:
947
971
  " and question blocks."
948
972
  ),
949
973
  ),
974
+ rqa.OptionalArgument(
975
+ "HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS",
976
+ rqa.SimpleValue.bool,
977
+ doc=(
978
+ "Whether we will hide all of the steps in the code editor"
979
+ " sidebar output viewer if we have in a quiz-only atv2"
980
+ " config."
981
+ ),
982
+ ),
983
+ rqa.OptionalArgument(
984
+ "SIMPLE_SUBMISSION_NAVIGATE_TO_LATEST_EDITOR_SESSION",
985
+ rqa.SimpleValue.bool,
986
+ doc=(
987
+ "Whether we update the simple submission mode navigation"
988
+ " to check if we have an editor session which is later"
989
+ " than the submission when we launch the assignment. This"
990
+ " feature is only available when the simple submission"
991
+ " mode is enabled. Be mindful of turning this on when the"
992
+ " tenant uses deadlines."
993
+ ),
994
+ ),
950
995
  ).use_readable_describe(True)
951
996
  )
952
997
 
@@ -985,6 +1030,9 @@ class FrontendSiteSettings:
985
1030
  self.new_auto_test_test_max_command_time = maybe_from_nullable(
986
1031
  self.new_auto_test_test_max_command_time
987
1032
  )
1033
+ self.code_editor_output_viewer_title = maybe_from_nullable(
1034
+ self.code_editor_output_viewer_title
1035
+ )
988
1036
  self.exam_login_max_length = maybe_from_nullable(
989
1037
  self.exam_login_max_length
990
1038
  )
@@ -1180,6 +1228,16 @@ class FrontendSiteSettings:
1180
1228
  self.simple_submission_mode_enabled
1181
1229
  )
1182
1230
  self.atv2_quizzes = maybe_from_nullable(self.atv2_quizzes)
1231
+ self.hide_code_editor_output_viewer_with_only_quiz_steps = (
1232
+ maybe_from_nullable(
1233
+ self.hide_code_editor_output_viewer_with_only_quiz_steps
1234
+ )
1235
+ )
1236
+ self.simple_submission_navigate_to_latest_editor_session = (
1237
+ maybe_from_nullable(
1238
+ self.simple_submission_navigate_to_latest_editor_session
1239
+ )
1240
+ )
1183
1241
 
1184
1242
  def to_dict(self) -> t.Dict[str, t.Any]:
1185
1243
  res: t.Dict[str, t.Any] = {}
@@ -1227,6 +1285,10 @@ class FrontendSiteSettings:
1227
1285
  res["NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME"] = to_dict(
1228
1286
  self.new_auto_test_test_max_command_time.value
1229
1287
  )
1288
+ if self.code_editor_output_viewer_title.is_just:
1289
+ res["CODE_EDITOR_OUTPUT_VIEWER_TITLE"] = to_dict(
1290
+ self.code_editor_output_viewer_title.value
1291
+ )
1230
1292
  if self.exam_login_max_length.is_just:
1231
1293
  res["EXAM_LOGIN_MAX_LENGTH"] = to_dict(
1232
1294
  self.exam_login_max_length.value
@@ -1489,6 +1551,18 @@ class FrontendSiteSettings:
1489
1551
  )
1490
1552
  if self.atv2_quizzes.is_just:
1491
1553
  res["ATV2_QUIZZES"] = to_dict(self.atv2_quizzes.value)
1554
+ if self.hide_code_editor_output_viewer_with_only_quiz_steps.is_just:
1555
+ res[
1556
+ "HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS"
1557
+ ] = to_dict(
1558
+ self.hide_code_editor_output_viewer_with_only_quiz_steps.value
1559
+ )
1560
+ if self.simple_submission_navigate_to_latest_editor_session.is_just:
1561
+ res[
1562
+ "SIMPLE_SUBMISSION_NAVIGATE_TO_LATEST_EDITOR_SESSION"
1563
+ ] = to_dict(
1564
+ self.simple_submission_navigate_to_latest_editor_session.value
1565
+ )
1492
1566
  return res
1493
1567
 
1494
1568
  @classmethod
@@ -1509,6 +1583,7 @@ class FrontendSiteSettings:
1509
1583
  new_auto_test_current_initial_build_ids=parsed.NEW_AUTO_TEST_CURRENT_INITIAL_BUILD_IDS,
1510
1584
  new_auto_test_build_max_command_time=parsed.NEW_AUTO_TEST_BUILD_MAX_COMMAND_TIME,
1511
1585
  new_auto_test_test_max_command_time=parsed.NEW_AUTO_TEST_TEST_MAX_COMMAND_TIME,
1586
+ code_editor_output_viewer_title=parsed.CODE_EDITOR_OUTPUT_VIEWER_TITLE,
1512
1587
  exam_login_max_length=parsed.EXAM_LOGIN_MAX_LENGTH,
1513
1588
  login_token_before_time=parsed.LOGIN_TOKEN_BEFORE_TIME,
1514
1589
  reset_token_time=parsed.RESET_TOKEN_TIME,
@@ -1580,6 +1655,8 @@ class FrontendSiteSettings:
1580
1655
  submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
1581
1656
  simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
1582
1657
  atv2_quizzes=parsed.ATV2_QUIZZES,
1658
+ hide_code_editor_output_viewer_with_only_quiz_steps=parsed.HIDE_CODE_EDITOR_OUTPUT_VIEWER_WITH_ONLY_QUIZ_STEPS,
1659
+ simple_submission_navigate_to_latest_editor_session=parsed.SIMPLE_SUBMISSION_NAVIGATE_TO_LATEST_EDITOR_SESSION,
1583
1660
  )
1584
1661
  res.raw_data = d
1585
1662
  return res