codegrade 16.1.60__tar.gz → 16.1.63__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 (587) hide show
  1. {codegrade-16.1.60 → codegrade-16.1.63}/PKG-INFO +1 -1
  2. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/__init__.py +2 -1
  3. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_convert.py +11 -0
  4. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_mapping.py +3 -3
  5. codegrade-16.1.63/cg_request_args/_set.py +34 -0
  6. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_swaggerize.py +68 -42
  7. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/__init__.py +1 -1
  8. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/course.py +2 -1
  9. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/file.py +56 -0
  10. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/oauth_provider.py +72 -0
  11. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/permission.py +2 -1
  12. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/task_result.py +1 -1
  13. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/user.py +53 -1
  14. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/client.py +2 -2
  15. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/__init__.py +7 -1
  16. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/all_site_settings.py +26 -16
  17. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment.py +10 -10
  18. codegrade-16.1.63/codegrade/models/code_editor_start_on_assignment_description_setting.py +57 -0
  19. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/frontend_site_settings.py +52 -12
  20. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_assignment_data.py +4 -4
  21. codegrade-16.1.63/codegrade/models/removed_permissions.py +56 -0
  22. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_login_link_login.py +3 -3
  23. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_user_login.py +3 -3
  24. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_user_register.py +3 -3
  25. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/saml2_provider_json.py +1 -1
  26. codegrade-16.1.63/codegrade/models/session_restriction_context.py +53 -0
  27. codegrade-16.1.63/codegrade/models/session_restriction_data.py +76 -0
  28. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/site_setting_input.py +8 -0
  29. codegrade-16.1.63/codegrade/models/student_view_enabled_setting.py +56 -0
  30. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/submission_validator_input_data.py +2 -2
  31. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_suite_auto_test_base_data.py +1 -1
  32. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_suite_auto_test_data.py +3 -1
  33. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_login_response.py +3 -3
  34. {codegrade-16.1.60 → codegrade-16.1.63}/pyproject.toml +1 -1
  35. {codegrade-16.1.60 → codegrade-16.1.63}/setup.py +1 -1
  36. codegrade-16.1.60/codegrade/models/session_restrictions.py +0 -58
  37. {codegrade-16.1.60 → codegrade-16.1.63}/README.md +0 -0
  38. {codegrade-16.1.60 → codegrade-16.1.63}/cg_dt_utils/__init__.py +0 -0
  39. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/__init__.py +0 -0
  40. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_just.py +0 -0
  41. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_maybe.py +0 -0
  42. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_nothing.py +0 -0
  43. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_type_helpers.py +0 -0
  44. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/cg_maybe_plugin.py +0 -0
  45. {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/utils.py +0 -0
  46. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_any_value.py +0 -0
  47. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_base.py +0 -0
  48. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_enum.py +0 -0
  49. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_form.py +0 -0
  50. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_lazy.py +0 -0
  51. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_list.py +0 -0
  52. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_literal.py +0 -0
  53. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_multipart.py +0 -0
  54. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_nullable.py +0 -0
  55. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_parse_utils.py +0 -0
  56. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_query.py +0 -0
  57. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_rich_value.py +0 -0
  58. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_swagger_utils.py +0 -0
  59. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_utils.py +0 -0
  60. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/exceptions.py +0 -0
  61. {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/request_args_plugin.py +0 -0
  62. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/__init__.py +0 -0
  63. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/about.py +0 -0
  64. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/assignment.py +0 -0
  65. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/auto_test.py +0 -0
  66. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/comment.py +0 -0
  67. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/course_price.py +0 -0
  68. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/git_provider.py +0 -0
  69. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/group.py +0 -0
  70. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/group_set.py +0 -0
  71. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/login_link.py +0 -0
  72. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/lti.py +0 -0
  73. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/notification.py +0 -0
  74. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/oauth_token.py +0 -0
  75. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/plagiarism.py +0 -0
  76. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/role.py +0 -0
  77. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/saml.py +0 -0
  78. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/section.py +0 -0
  79. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/site_settings.py +0 -0
  80. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/snippet.py +0 -0
  81. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/sso_provider.py +0 -0
  82. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/submission.py +0 -0
  83. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/tenant.py +0 -0
  84. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/transaction.py +0 -0
  85. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/user_setting.py +0 -0
  86. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/webhook.py +0 -0
  87. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/errors.py +0 -0
  88. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_base_price.py +0 -0
  89. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_saml_ui_logo_info.py +0 -0
  90. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
  91. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/about.py +0 -0
  92. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/abstract_role.py +0 -0
  93. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/add_users_section_data.py +0 -0
  94. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/all_auto_test_results.py +0 -0
  95. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/always_update_pii_with_lti_setting.py +0 -0
  96. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/analytics_enabled_setting.py +0 -0
  97. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_auto_test_step_as_json.py +0 -0
  98. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_error.py +0 -0
  99. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
  100. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
  101. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/api_codes.py +0 -0
  102. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_anonymization_algo.py +0 -0
  103. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
  104. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
  105. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_description_enabled_setting.py +0 -0
  106. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
  107. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_done_type.py +0 -0
  108. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_export_column.py +0 -0
  109. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_feedback.py +0 -0
  110. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_grader.py +0 -0
  111. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
  112. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_kind.py +0 -0
  113. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_login_link.py +0 -0
  114. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
  115. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
  116. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
  117. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
  118. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
  119. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_point_decimals_setting.py +0 -0
  120. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_points_grading_settings.py +0 -0
  121. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_section_timeframe.py +0 -0
  122. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_state_enum.py +0 -0
  123. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_submission_mode.py +0 -0
  124. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_template.py +0 -0
  125. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_timeframes.py +0 -0
  126. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
  127. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test.py +0 -0
  128. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
  129. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
  130. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
  131. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_enabled_setting.py +0 -0
  132. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_fixture.py +0 -0
  133. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_global_setup_output.py +0 -0
  134. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_global_setup_script.py +0 -0
  135. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
  136. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
  137. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
  138. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
  139. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
  140. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
  141. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
  142. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
  143. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
  144. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
  145. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
  146. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_quality_comment.py +0 -0
  147. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result.py +0 -0
  148. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result_state.py +0 -0
  149. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
  150. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_run.py +0 -0
  151. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
  152. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_runner.py +0 -0
  153. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_runner_state.py +0 -0
  154. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_set.py +0 -0
  155. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base.py +0 -0
  156. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base_as_json.py +0 -0
  157. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
  158. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_log_base.py +0 -0
  159. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_result.py +0 -0
  160. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_result_state.py +0 -0
  161. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_validation_exception.py +0 -0
  162. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_suite.py +0 -0
  163. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
  164. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
  165. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
  166. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_about.py +0 -0
  167. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_auto_test_quality_comment.py +0 -0
  168. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base.py +0 -0
  169. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
  170. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
  171. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_reply.py +0 -0
  172. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_course_coupon.py +0 -0
  173. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_directory.py +0 -0
  174. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_error.py +0 -0
  175. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_file.py +0 -0
  176. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lms_capabilities.py +0 -0
  177. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti1p1_provider.py +0 -0
  178. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti1p3_provider.py +0 -0
  179. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti_provider.py +0 -0
  180. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_notification.py +0 -0
  181. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_release_info.py +0 -0
  182. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_rubric_item.py +0 -0
  183. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_tenant_coupon.py +0 -0
  184. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
  185. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/bulk_enroll_course_data.py +0 -0
  186. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
  187. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/cg_ignore_version.py +0 -0
  188. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/change_user_role_course_data.py +0 -0
  189. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_as_json.py +0 -0
  190. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_data.py +0 -0
  191. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_extra.py +0 -0
  192. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_input_as_json.py +0 -0
  193. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/clone_result.py +0 -0
  194. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_editor_output_viewer_title_setting.py +0 -0
  195. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_as_json.py +0 -0
  196. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_base_data.py +0 -0
  197. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_data.py +0 -0
  198. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_extra.py +0 -0
  199. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_input_as_json.py +0 -0
  200. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_penalties.py +0 -0
  201. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/column_range.py +0 -0
  202. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_base.py +0 -0
  203. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply.py +0 -0
  204. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply_edit.py +0 -0
  205. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply_type.py +0 -0
  206. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_type.py +0 -0
  207. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/community_library_publishing_setting.py +0 -0
  208. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/community_library_setting.py +0 -0
  209. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/connect_repository_git_provider_data.py +0 -0
  210. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/copy_auto_test_data.py +0 -0
  211. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/copy_rubric_assignment_data.py +0 -0
  212. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_data_parser.py +0 -0
  213. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_with_code.py +0 -0
  214. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_without_code.py +0 -0
  215. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course.py +0 -0
  216. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_bulk_enroll_result.py +0 -0
  217. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
  218. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_coupon.py +0 -0
  219. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_coupon_usage.py +0 -0
  220. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
  221. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
  222. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_of_course_price.py +0 -0
  223. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
  224. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_perm_map.py +0 -0
  225. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_permission.py +0 -0
  226. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_price.py +0 -0
  227. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_register_enabled_setting.py +0 -0
  228. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_registration_link.py +0 -0
  229. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_role.py +0 -0
  230. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_role_as_json_with_perms.py +0 -0
  231. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section.py +0 -0
  232. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division.py +0 -0
  233. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division_connection.py +0 -0
  234. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division_user.py +0 -0
  235. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_snippet.py +0 -0
  236. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_state.py +0 -0
  237. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_statistics_as_json.py +0 -0
  238. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_assignment_course_data.py +0 -0
  239. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_auto_test_data.py +0 -0
  240. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_comment_data.py +0 -0
  241. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_comment_reply_data.py +0 -0
  242. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_course_data.py +0 -0
  243. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_division_section_data.py +0 -0
  244. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_group_group_set_data.py +0 -0
  245. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_group_set_course_data.py +0 -0
  246. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_lti_data.py +0 -0
  247. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
  248. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_proxy_submission_data.py +0 -0
  249. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_repository_git_provider_data.py +0 -0
  250. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_role_course_data.py +0 -0
  251. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_section_course_data.py +0 -0
  252. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_snippet_course_data.py +0 -0
  253. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_snippet_data.py +0 -0
  254. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_sso_provider_data.py +0 -0
  255. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_tenant_data.py +0 -0
  256. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/csv_large_file_limit_setting.py +0 -0
  257. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
  258. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/currency.py +0 -0
  259. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_as_json.py +0 -0
  260. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_data.py +0 -0
  261. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_extra.py +0 -0
  262. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_input_as_json.py +0 -0
  263. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_log.py +0 -0
  264. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_log_base.py +0 -0
  265. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_course_ta_role_setting.py +0 -0
  266. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_course_teacher_role_setting.py +0 -0
  267. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_submission_page_tab_setting.py +0 -0
  268. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/deleted_comment_reply.py +0 -0
  269. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/deletion_type.py +0 -0
  270. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/directory_with_children.py +0 -0
  271. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/disabled_setting_exception.py +0 -0
  272. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/display_grades_enabled_setting.py +0 -0
  273. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
  274. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/editor_enabled_setting.py +0 -0
  275. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_notification_types.py +0 -0
  276. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_students_enabled_setting.py +0 -0
  277. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_users_course_data.py +0 -0
  278. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/exam_login_max_length_setting.py +0 -0
  279. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_csv_data.py +0 -0
  280. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_data.py +0 -0
  281. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_files_data.py +0 -0
  282. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_auto_test_result.py +0 -0
  283. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_auto_test_run.py +0 -0
  284. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course.py +0 -0
  285. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course_registration_link.py +0 -0
  286. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course_section.py +0 -0
  287. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_group.py +0 -0
  288. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_job.py +0 -0
  289. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
  290. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_tenant.py +0 -0
  291. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_transaction.py +0 -0
  292. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_user.py +0 -0
  293. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_work.py +0 -0
  294. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extract_file_tree_directory.py +0 -0
  295. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extract_file_tree_file.py +0 -0
  296. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/failed_to_send_email_exception.py +0 -0
  297. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_base.py +0 -0
  298. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
  299. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_with_replies.py +0 -0
  300. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_without_replies.py +0 -0
  301. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_deletion.py +0 -0
  302. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_rule.py +0 -0
  303. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_rule_input_data.py +0 -0
  304. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_tree.py +0 -0
  305. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_type.py +0 -0
  306. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/finalized_lti1p1_provider.py +0 -0
  307. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/finalized_lti1p3_provider.py +0 -0
  308. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
  309. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixed_availability.py +0 -0
  310. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixed_grade_availability.py +0 -0
  311. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixture_like.py +0 -0
  312. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fraction.py +0 -0
  313. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_comment_base.py +0 -0
  314. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
  315. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_extra.py +0 -0
  316. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_repositories_page.py +0 -0
  317. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_repository_like.py +0 -0
  318. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_user_info.py +0 -0
  319. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
  320. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/global_perm_map.py +0 -0
  321. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/global_permission.py +0 -0
  322. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grade_history.py +0 -0
  323. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grade_origin.py +0 -0
  324. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
  325. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group.py +0 -0
  326. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
  327. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group_set.py +0 -0
  328. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/groups_enabled_setting.py +0 -0
  329. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/has_unread_notifcation_json.py +0 -0
  330. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/health_information.py +0 -0
  331. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_code_editor_filetree_controls_with_only_quiz_steps_setting.py +0 -0
  332. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +0 -0
  333. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_empty_rubric_row_description_setting.py +0 -0
  334. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_no_deadline_enabled_setting.py +0 -0
  335. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hubspot_syncing_enabled_setting.py +0 -0
  336. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/ignore_handling.py +0 -0
  337. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/ignored_files_exception.py +0 -0
  338. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/import_into_assignment_data.py +0 -0
  339. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/import_into_course_data.py +0 -0
  340. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
  341. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_comment_base.py +0 -0
  342. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
  343. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_extra.py +0 -0
  344. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
  345. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_group_exception.py +0 -0
  346. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_io_cases_exception.py +0 -0
  347. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_options_exception.py +0 -0
  348. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_as_json.py +0 -0
  349. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_base_data.py +0 -0
  350. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_data.py +0 -0
  351. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_extra.py +0 -0
  352. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_input_as_json.py +0 -0
  353. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_input_case.py +0 -0
  354. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_log.py +0 -0
  355. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_option.py +0 -0
  356. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_step_log.py +0 -0
  357. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_step_log_base.py +0 -0
  358. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
  359. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/job.py +0 -0
  360. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_create_auto_test.py +0 -0
  361. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_create_tenant.py +0 -0
  362. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_patch_auto_test.py +0 -0
  363. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
  364. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_as_json.py +0 -0
  365. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_base_data.py +0 -0
  366. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_data.py +0 -0
  367. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_extra.py +0 -0
  368. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_input_as_json.py +0 -0
  369. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_log.py +0 -0
  370. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_log_base.py +0 -0
  371. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
  372. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/legacy_features.py +0 -0
  373. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/line_range.py +0 -0
  374. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/linter_comment.py +0 -0
  375. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/linters_enabled_setting.py +0 -0
  376. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lms_capabilities.py +0 -0
  377. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/login_token_before_time_setting.py +0 -0
  378. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/login_user_data.py +0 -0
  379. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/logout_response.py +0 -0
  380. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/logout_user_data.py +0 -0
  381. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p1_provider.py +0 -0
  382. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p1_provider_data.py +0 -0
  383. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_nonce_and_state_validation_enabled_setting.py +0 -0
  384. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
  385. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_prevent_nonce_reuse_enabled_setting.py +0 -0
  386. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider.py +0 -0
  387. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider_data.py +0 -0
  388. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
  389. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
  390. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_enabled_setting.py +0 -0
  391. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
  392. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
  393. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
  394. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_provider_base.py +0 -0
  395. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
  396. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_document_update_size_setting.py +0 -0
  397. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
  398. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
  399. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_file_size_setting.py +0 -0
  400. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_large_upload_size_setting.py +0 -0
  401. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_lines_setting.py +0 -0
  402. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_normal_upload_size_setting.py +0 -0
  403. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_number_of_files_setting.py +0 -0
  404. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
  405. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_user_setting_amount_setting.py +0 -0
  406. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/min_password_score_setting.py +0 -0
  407. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/mirror_file_result.py +0 -0
  408. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/missing_cookie_error.py +0 -0
  409. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/missing_file.py +0 -0
  410. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/name_and_email_from_nrps_only_setting.py +0 -0
  411. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
  412. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
  413. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
  414. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
  415. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
  416. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
  417. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
  418. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
  419. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
  420. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
  421. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
  422. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
  423. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
  424. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
  425. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
  426. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
  427. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/no_permissions.py +0 -0
  428. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_deleted_comment_reply.py +0 -0
  429. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
  430. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
  431. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_present_preference.py +0 -0
  432. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification.py +0 -0
  433. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
  434. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
  435. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_poll_time_setting.py +0 -0
  436. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_reasons.py +0 -0
  437. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_setting.py +0 -0
  438. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_setting_option.py +0 -0
  439. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notifications_json.py +0 -0
  440. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/oauth_provider.py +0 -0
  441. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/oauth_token.py +0 -0
  442. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/option.py +0 -0
  443. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/options_input_data.py +0 -0
  444. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
  445. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/parse_api_exception.py +0 -0
  446. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
  447. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
  448. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_all_notification_data.py +0 -0
  449. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_auto_test_data.py +0 -0
  450. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_comment_reply_data.py +0 -0
  451. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_course_data.py +0 -0
  452. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_grader_submission_data.py +0 -0
  453. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_notification_data.py +0 -0
  454. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
  455. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_provider_lti_data.py +0 -0
  456. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_course_data.py +0 -0
  457. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_data.py +0 -0
  458. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_tenant_data.py +0 -0
  459. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
  460. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
  461. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_section_data.py +0 -0
  462. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_settings_tenant_data.py +0 -0
  463. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_site_settings_data.py +0 -0
  464. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_snippet_course_data.py +0 -0
  465. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_snippet_data.py +0 -0
  466. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_submission_data.py +0 -0
  467. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
  468. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_tenant_data.py +0 -0
  469. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
  470. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_user_data.py +0 -0
  471. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
  472. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/pearson_templates_setting.py +0 -0
  473. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
  474. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/permission_exception.py +0 -0
  475. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
  476. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
  477. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_case.py +0 -0
  478. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
  479. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run.py +0 -0
  480. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
  481. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
  482. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_state.py +0 -0
  483. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/post_oauth_token_data.py +0 -0
  484. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/present_preference.py +0 -0
  485. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/proxy.py +0 -0
  486. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_description_assignment_data.py +0 -0
  487. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_enroll_link_course_data.py +0 -0
  488. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_price_course_data.py +0 -0
  489. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_price_tenant_data.py +0 -0
  490. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_rubric_assignment_data.py +0 -0
  491. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_comment_severity.py +0 -0
  492. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
  493. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_test_log.py +0 -0
  494. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_test_log_base.py +0 -0
  495. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_enabled_setting.py +0 -0
  496. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_user_data.py +0 -0
  497. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_user_with_link_course_data.py +0 -0
  498. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/release_info.py +0 -0
  499. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/release_message_max_time_setting.py +0 -0
  500. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rename_group_group_data.py +0 -0
  501. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/render_html_enabled_setting.py +0 -0
  502. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
  503. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/reset_token_time_setting.py +0 -0
  504. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_get_auto_test_get.py +0 -0
  505. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
  506. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_section_create_division.py +0 -0
  507. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/retry_group_submission_grade_passback_enabled_setting.py +0 -0
  508. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/role_as_json_with_perms.py +0 -0
  509. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/root_file_trees_json.py +0 -0
  510. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_description_type.py +0 -0
  511. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
  512. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_item.py +0 -0
  513. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_item_input_as_json.py +0 -0
  514. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_lock_reason.py +0 -0
  515. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base.py +0 -0
  516. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
  517. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
  518. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubrics_enabled_setting.py +0 -0
  519. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rule_type.py +0 -0
  520. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_as_json.py +0 -0
  521. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_data.py +0 -0
  522. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_extra.py +0 -0
  523. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_input_as_json.py +0 -0
  524. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_log.py +0 -0
  525. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/saml_ui_info.py +0 -0
  526. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
  527. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/send_registration_email_setting.py +0 -0
  528. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
  529. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
  530. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_sync_interval_setting.py +0 -0
  531. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/setting_token_time_setting.py +0 -0
  532. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/setup_oauth_result.py +0 -0
  533. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
  534. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/simple_submission_navigate_to_latest_editor_session_setting.py +0 -0
  535. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/site_email_setting.py +0 -0
  536. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/snippet.py +0 -0
  537. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
  538. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
  539. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
  540. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
  541. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_data.py +0 -0
  542. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
  543. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/started_transaction.py +0 -0
  544. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/student_payment_enabled_setting.py +0 -0
  545. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
  546. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/task_result_state.py +0 -0
  547. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tax_behavior.py +0 -0
  548. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant.py +0 -0
  549. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon.py +0 -0
  550. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_usage.py +0 -0
  551. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_with_code.py +0 -0
  552. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_without_code.py +0 -0
  553. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_course_statistics.py +0 -0
  554. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_of_tenant_price.py +0 -0
  555. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_permissions.py +0 -0
  556. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_price.py +0 -0
  557. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
  558. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_statistics.py +0 -0
  559. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
  560. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/timed_availability.py +0 -0
  561. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/timeframe_like.py +0 -0
  562. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/token_revoked_exception.py +0 -0
  563. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/transaction.py +0 -0
  564. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/transaction_state.py +0 -0
  565. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/types.py +0 -0
  566. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
  567. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_set_auto_test_data.py +0 -0
  568. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
  569. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/upload_submission_assignment_data.py +0 -0
  570. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user.py +0 -0
  571. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_course.py +0 -0
  572. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_info_with_role.py +0 -0
  573. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_input.py +0 -0
  574. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_without_group.py +0 -0
  575. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/weak_password_exception.py +0 -0
  576. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/weak_password_feedback.py +0 -0
  577. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_base.py +0 -0
  578. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
  579. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
  580. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work.py +0 -0
  581. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_origin.py +0 -0
  582. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_item.py +0 -0
  583. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_result_as_json.py +0 -0
  584. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
  585. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/parsers.py +0 -0
  586. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/py.typed +0 -0
  587. {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codegrade
3
- Version: 16.1.60
3
+ Version: 16.1.63
4
4
  Summary: A client library for accessing CodeGrade
5
5
  License: AGPL-3.0-only OR BSD-3-Clause-Clear
6
6
  Requires-Python: >=3.8.0,<4.0
@@ -1,6 +1,7 @@
1
1
  """This module defines parsers and validators for JSON data.
2
2
  """
3
3
 
4
+ from ._set import Set
4
5
  from ._base import Union, Parser, SimpleValue
5
6
  from ._enum import EnumValue, StringEnum
6
7
  from ._form import FormURLEncoded
@@ -21,6 +22,6 @@ from ._multipart import (
21
22
  )
22
23
  from .exceptions import ParseError, SimpleParseError, MultipleParseErrors
23
24
  from ._rich_value import RichValue
24
- from ._swaggerize import swaggerize, process_query_params
25
+ from ._swaggerize import swaggerize
25
26
  from ._parse_utils import Transform
26
27
  from ._swagger_utils import OpenAPISchema
@@ -12,6 +12,7 @@ import dataclasses
12
12
 
13
13
  from cg_dt_utils import DatetimeWithTimezone
14
14
 
15
+ from ._set import Set
15
16
  from ._base import Parser, SimpleValue
16
17
  from ._enum import EnumValue, StringEnum
17
18
  from ._lazy import Lazy
@@ -423,3 +424,13 @@ def _convert_two_tuple(ctx: ConvertCtx) -> Parser:
423
424
  ctx.update_type(ctx.typ.__args__[0]).convert(),
424
425
  ctx.update_type(ctx.typ.__args__[1]).convert(),
425
426
  ).use_readable_describe(ctx.readable)
427
+
428
+
429
+ @as_converter(
430
+ lambda x: x.origin == set,
431
+ )
432
+ def _convert_set(ctx: ConvertCtx) -> Parser:
433
+ ctx.assert_not_query()
434
+ return Set(
435
+ ctx.update_type(ctx.typ.__args__[0]).convert(),
436
+ ).use_readable_describe(ctx.readable)
@@ -209,14 +209,14 @@ class _BaseFixedMapping(t.Generic[_BaseDictT]):
209
209
  content = ', '.join(args)
210
210
  return 'Mapping[{}]'.format(content)
211
211
 
212
- def to_open_api_as_query(
213
- self, schema: OpenAPISchema
212
+ def to_open_api_as_parameters(
213
+ self,
214
+ schema: OpenAPISchema,
214
215
  ) -> t.Sequence[t.Mapping[str, t.Any]]:
215
216
  """Convert this mapping to a OpenAPI object as if it were used as a
216
217
  query string.
217
218
  """
218
219
  return [{
219
- 'in': 'query',
220
220
  'name': arg.key,
221
221
  'schema': arg.to_open_api(schema),
222
222
  'description': schema.make_comment(arg.doc),
@@ -0,0 +1,34 @@
1
+ """This module contains parsers for sets.
2
+ """
3
+ import typing as t
4
+
5
+ from ._base import Parser
6
+ from ._list import List
7
+ from ._utils import T_COV as _T_COV
8
+ from ._swagger_utils import OpenAPISchema
9
+
10
+ __all__ = ('Set', )
11
+
12
+
13
+ class Set(t.Generic[_T_COV], Parser[set[_T_COV]]):
14
+ """A parser for a list homogeneous values.
15
+ """
16
+ __slots__ = ('__list_parser', )
17
+
18
+ def __init__(self, el_type: Parser[_T_COV]):
19
+ super().__init__()
20
+ self.__list_parser = List(el_type).add_open_api_metadata(
21
+ 'x-is-set-type',
22
+ True,
23
+ )
24
+
25
+ def describe(self) -> str:
26
+ return self.__list_parser.describe()
27
+
28
+ def _to_open_api(self, schema: OpenAPISchema) -> t.Mapping[str, t.Any]:
29
+ return self.__list_parser.to_open_api(schema)
30
+
31
+ def try_parse(self, value: object) -> set[_T_COV]:
32
+ if isinstance(value, set):
33
+ value = list(value)
34
+ return set(self.__list_parser.try_parse(value))
@@ -5,26 +5,23 @@ import inspect
5
5
  import functools
6
6
  import dataclasses
7
7
 
8
+ from ._utils import T as _T
8
9
  from ._utils import Literal
9
10
  from ._mapping import BaseFixedMapping
10
11
 
11
12
  __all__ = ('swaggerize', )
12
13
 
14
+ _P = t.ParamSpec('_P')
13
15
  _CallableT = t.TypeVar('_CallableT', bound=t.Callable)
14
16
 
15
17
 
16
- @dataclasses.dataclass(frozen=True)
18
+ @dataclasses.dataclass(frozen=True, slots=True, kw_only=True)
17
19
  class _SwaggerFunc:
18
- __slots__ = (
19
- 'operation_name',
20
- 'no_data',
21
- 'func',
22
- 'query_parser',
23
- )
24
20
  operation_name: str
25
21
  no_data: bool
26
22
  func: t.Callable
27
23
  query_parser: t.Optional['BaseFixedMapping']
24
+ header_parser: t.Optional['BaseFixedMapping']
28
25
 
29
26
 
30
27
  _SWAGGER_FUNCS: t.Dict[str, t.Dict[t.Optional[str], _SwaggerFunc]] = {}
@@ -42,11 +39,23 @@ _NameT = t.Union[ # pylint: disable=invalid-name
42
39
  ]]
43
40
 
44
41
 
42
+ def _get_headers(wanted: list[str]) -> dict[str, str]:
43
+ import flask # pylint: disable=import-outside-toplevel
44
+ headers = flask.request.headers
45
+ result = {}
46
+ for key in wanted:
47
+ try:
48
+ result[key] = headers[key]
49
+ except KeyError:
50
+ pass
51
+ return result
52
+
53
+
45
54
  def swaggerize(
46
55
  operation_name: _NameT,
47
56
  *,
48
57
  no_data: bool = False,
49
- ) -> t.Callable[[_CallableT], _CallableT]:
58
+ ) -> t.Callable[[t.Callable[_P, _T]], t.Callable[_P, _T]]:
50
59
  """Mark this function as a function that should be included in the open api
51
60
  docs.
52
61
 
@@ -57,15 +66,25 @@ def swaggerize(
57
66
  don't the function should contain a call to ``from_flask`` as the first
58
67
  statement of the function.
59
68
  """
60
- def __wrapper(func: _CallableT) -> _CallableT:
69
+ def __wrapper(func: t.Callable[_P, _T]) -> t.Callable[_P, _T]:
61
70
  if func.__name__ in _SWAGGER_FUNCS: # pragma: no cover
62
71
  raise AssertionError(
63
- 'The function {} was already registered.'.format(
64
- func.__name__
65
- )
72
+ f'The function {func.__name__} was already registered.'
66
73
  )
67
- wrapped_func = process_query_params(func)
68
- query_parser = wrapped_func.__cg_query_parser__ # type: ignore
74
+
75
+ import flask # pylint: disable=import-outside-toplevel
76
+ wrapped_func, query_parser = _process_params(
77
+ func,
78
+ 'Query',
79
+ lambda _: flask.request.args,
80
+ prefix_to_add='',
81
+ )
82
+ wrapped_func, header_parser = _process_params(
83
+ wrapped_func,
84
+ 'Header',
85
+ _get_headers,
86
+ prefix_to_add='cg_',
87
+ )
69
88
 
70
89
  func_dict = _SWAGGER_FUNCS.setdefault(func.__name__, {})
71
90
  if isinstance(operation_name, str):
@@ -73,7 +92,8 @@ def swaggerize(
73
92
  operation_name=operation_name,
74
93
  no_data=no_data,
75
94
  func=func,
76
- query_parser=query_parser
95
+ query_parser=query_parser,
96
+ header_parser=header_parser,
77
97
  )
78
98
  else:
79
99
  for method, name in operation_name.items():
@@ -81,7 +101,8 @@ def swaggerize(
81
101
  operation_name=name,
82
102
  no_data=no_data,
83
103
  func=func,
84
- query_parser=query_parser
104
+ query_parser=query_parser,
105
+ header_parser=header_parser,
85
106
  )
86
107
 
87
108
  return wrapped_func
@@ -89,47 +110,52 @@ def swaggerize(
89
110
  return __wrapper
90
111
 
91
112
 
92
- def process_query_params(func: _CallableT) -> _CallableT:
113
+ def _process_params(
114
+ func: t.Callable[_P, _T],
115
+ what: str,
116
+ get_params: t.Callable[[list[str]], object],
117
+ prefix_to_add: str,
118
+ ) -> tuple[t.Callable[_P, _T], None | BaseFixedMapping[t.Any]]:
93
119
  """Process query parameters of the given function.
94
120
 
95
121
  All parameters prefixed with ``query_`` are retrieved and parsed from the
96
122
  query parameters.
97
123
  """
124
+ prefix = f'{what.lower()}_'
125
+ prefix_len = len(prefix)
126
+ parameters = [
127
+ value for value in inspect.signature(func).parameters.values()
128
+ if value.name.startswith(prefix)
129
+ ]
130
+ if not parameters:
131
+ return func, None
132
+ wanted_keys = [
133
+ f'{prefix_to_add}{value.name[prefix_len:]}' for value in parameters
134
+ ]
98
135
  query_params = [
99
136
  inspect.Parameter(
100
- name=value.name[len('query_'):],
137
+ name=f'{prefix_to_add}{value.name[prefix_len:]}',
101
138
  kind=value.kind,
102
139
  default=value.default,
103
140
  annotation=value.annotation,
104
- ) for value in inspect.signature(func).parameters.values()
105
- if value.name.startswith('query_')
141
+ ) for value in parameters
106
142
  ]
107
- if not query_params:
108
- query_parser = None
109
- else:
110
- query_parser = BaseFixedMapping.from_function_parameters_list(
111
- query_params,
112
- from_query=True,
113
- )
114
-
115
- func.__cg_query_parser__ = query_parser # type: ignore
116
- if query_parser is None:
117
- return func
118
143
 
119
- # We need flask in ``__inner``, but importing it here is faster
120
-
121
- import flask # pylint: disable=import-outside-toplevel
144
+ query_parser = BaseFixedMapping.from_function_parameters_list(
145
+ query_params,
146
+ from_query=True,
147
+ )
122
148
 
123
- # Mypy know that this is never ``None`` so we can use it without check.
124
- _parser = query_parser
149
+ log_msg = f'{what} parameters processed'
125
150
 
126
151
  @functools.wraps(func)
127
- def __inner(*args: t.Any, **kwargs: t.Any) -> t.Any:
128
- for key, value in _parser.try_parse_and_log(
129
- flask.request.args,
130
- msg='Query parameters processed',
152
+ def __inner(*args: _P.args, **kwargs: _P.kwargs) -> _T:
153
+ data = get_params(wanted_keys)
154
+ for key, value in query_parser.try_parse_and_log(
155
+ data,
156
+ msg=log_msg,
131
157
  ).items():
132
- kwargs[f'query_{key}'] = value
158
+ kwargs[f'{prefix}{key[len(prefix_to_add):]}'] = value
133
159
  return func(*args, **kwargs)
134
160
 
135
- return t.cast(_CallableT, __inner)
161
+ return __inner, query_parser
@@ -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.60"
10
+ __version__ = "16.1.63"
11
11
 
12
12
 
13
13
  @wraps(AuthenticatedClient.get)
@@ -1646,7 +1646,8 @@ class CourseService(t.Generic[_ClientT]):
1646
1646
  course.
1647
1647
 
1648
1648
  This will return the permission as if you have already paid, even if
1649
- this is not the case.
1649
+ this is not the case. We will also not check any restrictions of the
1650
+ current session.
1650
1651
 
1651
1652
  :param course_id: The id of the course of which the permissions should
1652
1653
  be retrieved.
@@ -14,6 +14,8 @@ from .. import parsers, utils
14
14
  if t.TYPE_CHECKING or os.getenv("CG_EAGERIMPORT", False):
15
15
  import codegrade
16
16
 
17
+ from ..models.mirror_file_result import MirrorFileResult
18
+
17
19
 
18
20
  _ClientT = t.TypeVar("_ClientT", bound="codegrade.client._BaseClient")
19
21
 
@@ -85,3 +87,57 @@ class FileService(t.Generic[_ClientT]):
85
87
  ),
86
88
  ),
87
89
  )
90
+
91
+ def upload(
92
+ self: "FileService[codegrade.client.AuthenticatedClient]",
93
+ *,
94
+ max_age: Maybe["int"] = Nothing,
95
+ filename: "str" = "uploaded_file",
96
+ extra_parameters: t.Optional[
97
+ t.Mapping[str, t.Union[str, bool, int, float]]
98
+ ] = None,
99
+ ) -> "MirrorFileResult":
100
+ """Temporarily store some data on the server.
101
+
102
+ :param max_age: The maximum amount of time (in seconds) this file will
103
+ stay valid and can be retrieved.
104
+ :param filename: The name of the uploaded file.
105
+ :param extra_parameters: The extra query parameters you might want to
106
+ add. By default no extra query parameters are added.
107
+
108
+ :returns: The data for the file you can download on our server.
109
+ """
110
+
111
+ url = "/api/v1/files/"
112
+ params: t.Dict[str, t.Any] = {
113
+ **(extra_parameters or {}),
114
+ "filename": utils.to_dict(filename),
115
+ }
116
+ maybe_from_nullable(t.cast(t.Any, max_age)).if_just(
117
+ lambda val: params.__setitem__("max_age", val)
118
+ )
119
+
120
+ with self.__client as client:
121
+ resp = client.http.post(url=url, params=params)
122
+ utils.log_warnings(resp)
123
+
124
+ if utils.response_code_matches(resp.status_code, 200):
125
+ # fmt: off
126
+ from ..models.mirror_file_result import MirrorFileResult
127
+
128
+ # fmt: on
129
+ return parsers.JsonResponseParser(
130
+ parsers.ParserFor.make(MirrorFileResult)
131
+ ).try_parse(resp)
132
+
133
+ from ..models.any_error import AnyError
134
+
135
+ raise utils.get_error(
136
+ resp,
137
+ (
138
+ (
139
+ (400, 409, 401, 403, 404, 429, 500),
140
+ utils.unpack_union(AnyError),
141
+ ),
142
+ ),
143
+ )
@@ -7,6 +7,7 @@ import typing as t
7
7
 
8
8
  import cg_request_args as rqa
9
9
  from cg_maybe import Maybe, Nothing
10
+ from cg_maybe.utils import maybe_from_nullable
10
11
 
11
12
  from .. import parsers, utils
12
13
 
@@ -168,3 +169,74 @@ class OAuthProviderService(t.Generic[_ClientT]):
168
169
  ),
169
170
  ),
170
171
  )
172
+
173
+ def callback(
174
+ self,
175
+ *,
176
+ provider_id: "str",
177
+ state: Maybe["str"] = Nothing,
178
+ code: Maybe["str"] = Nothing,
179
+ error: Maybe["str"] = Nothing,
180
+ error_description: Maybe["str"] = Nothing,
181
+ extra_parameters: t.Optional[
182
+ t.Mapping[str, t.Union[str, bool, int, float]]
183
+ ] = None,
184
+ ) -> "bytes":
185
+ """The method that is used by OAuth providers after they completed the
186
+ login flow.
187
+
188
+ For the precise meaning of the query parameters see RFC 6749.
189
+
190
+ :param provider_id: The id of the OAuthProvider that completed the
191
+ flow.
192
+ :param state: The state.
193
+ :param code: The code.
194
+ :param error: The error.
195
+ :param error_description: The description of the error.
196
+ :param extra_parameters: The extra query parameters you might want to
197
+ add. By default no extra query parameters are added.
198
+
199
+ :returns: A response that is not in any defined format.
200
+ """
201
+
202
+ url = "/api/v1/oauth_providers/{providerId}/callback".format(
203
+ providerId=provider_id
204
+ )
205
+ params: t.Dict[str, t.Any] = {
206
+ **(extra_parameters or {}),
207
+ }
208
+ maybe_from_nullable(t.cast(t.Any, state)).if_just(
209
+ lambda val: params.__setitem__("state", val)
210
+ )
211
+ maybe_from_nullable(t.cast(t.Any, code)).if_just(
212
+ lambda val: params.__setitem__("code", val)
213
+ )
214
+ maybe_from_nullable(t.cast(t.Any, error)).if_just(
215
+ lambda val: params.__setitem__("error", val)
216
+ )
217
+ maybe_from_nullable(t.cast(t.Any, error_description)).if_just(
218
+ lambda val: params.__setitem__("error_description", val)
219
+ )
220
+
221
+ with self.__client as client:
222
+ resp = client.http.get(url=url, params=params)
223
+ utils.log_warnings(resp)
224
+
225
+ if utils.response_code_matches(resp.status_code, 200):
226
+ # fmt: off
227
+ # fmt: on
228
+ return parsers.ResponsePropertyParser("content", bytes).try_parse(
229
+ resp
230
+ )
231
+
232
+ from ..models.any_error import AnyError
233
+
234
+ raise utils.get_error(
235
+ resp,
236
+ (
237
+ (
238
+ (400, 409, 401, 403, 404, 429, 500),
239
+ utils.unpack_union(AnyError),
240
+ ),
241
+ ),
242
+ )
@@ -39,7 +39,8 @@ class PermissionService(t.Generic[_ClientT]):
39
39
 
40
40
  :param type: The type of permissions to get. This can be `global` or
41
41
  `course`. If `course` is passed this will return the permissions as
42
- if you have already paid, even if this is not the case.
42
+ if you have already paid, even if this is not the case. It will
43
+ also not take any restrictions of this session into consideration.
43
44
  :param extra_parameters: The extra query parameters you might want to
44
45
  add. By default no extra query parameters are added.
45
46
 
@@ -191,7 +191,7 @@ class TaskResultService(t.Generic[_ClientT]):
191
191
  ) -> "None":
192
192
  """Revoke a task result.
193
193
 
194
- The revoked task must be in the \"not\_started\" state.
194
+ The revoked task must be in the \"not_started\" state.
195
195
 
196
196
  :param task_result_id: The task result to revoke.
197
197
  :param extra_parameters: The extra query parameters you might want to
@@ -26,8 +26,10 @@ if t.TYPE_CHECKING or os.getenv("CG_EAGERIMPORT", False):
26
26
  from ..models.result_data_post_user_register import (
27
27
  ResultDataPostUserRegister,
28
28
  )
29
+ from ..models.session_restriction_data import SessionRestrictionData
29
30
  from ..models.tenant_coupon_usage import TenantCouponUsage
30
31
  from ..models.user import User
32
+ from ..models.user_login_response import UserLoginResponse
31
33
 
32
34
 
33
35
  _ClientT = t.TypeVar("_ClientT", bound="codegrade.client._BaseClient")
@@ -199,7 +201,7 @@ class UserService(t.Generic[_ClientT]):
199
201
  ) -> "t.Union[ExtendedUser, User, t.Mapping[str, str]]":
200
202
  """Get the info of the currently logged in user.
201
203
 
202
- :param type: If this is `roles` a mapping between course\_id and role
204
+ :param type: If this is `roles` a mapping between course_id and role
203
205
  name will be returned, if this is `extended` an `ExtendedUser`
204
206
  instead of a `User` will be returned.
205
207
  :param extended: If `true` this has the same effect as setting `type`
@@ -364,6 +366,56 @@ class UserService(t.Generic[_ClientT]):
364
366
  ),
365
367
  )
366
368
 
369
+ def restrict(
370
+ self: "UserService[codegrade.client.AuthenticatedClient]",
371
+ json_body: t.Union[dict, list, "SessionRestrictionData"],
372
+ *,
373
+ extra_parameters: t.Optional[
374
+ t.Mapping[str, t.Union[str, bool, int, float]]
375
+ ] = None,
376
+ ) -> "UserLoginResponse":
377
+ """Revoke a given token.
378
+
379
+ :param json_body: The body of the request. See
380
+ :class:`.SessionRestrictionData` for information about the possible
381
+ fields. You can provide this data as a
382
+ :class:`.SessionRestrictionData` or as a dictionary.
383
+ :param extra_parameters: The extra query parameters you might want to
384
+ add. By default no extra query parameters are added.
385
+
386
+ :returns: An new token that has the given restrictions added.
387
+ """
388
+
389
+ url = "/api/v1/token/restrict"
390
+ params = extra_parameters or {}
391
+
392
+ with self.__client as client:
393
+ resp = client.http.post(
394
+ url=url, json=utils.to_dict(json_body), params=params
395
+ )
396
+ utils.log_warnings(resp)
397
+
398
+ if utils.response_code_matches(resp.status_code, 200):
399
+ # fmt: off
400
+ from ..models.user_login_response import UserLoginResponse
401
+
402
+ # fmt: on
403
+ return parsers.JsonResponseParser(
404
+ parsers.ParserFor.make(UserLoginResponse)
405
+ ).try_parse(resp)
406
+
407
+ from ..models.any_error import AnyError
408
+
409
+ raise utils.get_error(
410
+ resp,
411
+ (
412
+ (
413
+ (400, 409, 401, 403, 404, 429, 500),
414
+ utils.unpack_union(AnyError),
415
+ ),
416
+ ),
417
+ )
418
+
367
419
  def logout(
368
420
  self,
369
421
  multipart_data: t.Union[dict, list, "LogoutUserData"],
@@ -538,7 +538,7 @@ class Client(_BaseClient):
538
538
  return httpx.Client(
539
539
  base_url=self.base_url,
540
540
  headers={
541
- "User-Agent": "CodeGradeAPI/16.1.60",
541
+ "User-Agent": "CodeGradeAPI/16.1.63",
542
542
  },
543
543
  follow_redirects=True,
544
544
  )
@@ -558,7 +558,7 @@ class AuthenticatedClient(_BaseClient):
558
558
  base_url=self.base_url,
559
559
  headers={
560
560
  "Authorization": f"Bearer {self.token}",
561
- "User-Agent": "CodeGradeAPI/16.1.60",
561
+ "User-Agent": "CodeGradeAPI/16.1.63",
562
562
  },
563
563
  follow_redirects=True,
564
564
  )
@@ -174,6 +174,9 @@ from .clone_result import CloneResult
174
174
  from .code_editor_output_viewer_title_setting import (
175
175
  CodeEditorOutputViewerTitleSetting,
176
176
  )
177
+ from .code_editor_start_on_assignment_description_setting import (
178
+ CodeEditorStartOnAssignmentDescriptionSetting,
179
+ )
177
180
  from .code_quality_as_json import CodeQualityAsJSON
178
181
  from .code_quality_base_data import CodeQualityBaseData
179
182
  from .code_quality_data import CodeQualityData
@@ -595,6 +598,7 @@ from .register_user_data import RegisterUserData
595
598
  from .register_user_with_link_course_data import RegisterUserWithLinkCourseData
596
599
  from .release_info import ReleaseInfo
597
600
  from .release_message_max_time_setting import ReleaseMessageMaxTimeSetting
601
+ from .removed_permissions import RemovedPermissions
598
602
  from .rename_group_group_data import RenameGroupGroupData
599
603
  from .render_html_enabled_setting import RenderHtmlEnabledSetting
600
604
  from .repository_connection_limit_reached_exception import (
@@ -642,7 +646,8 @@ from .server_time_correction_enabled_setting import (
642
646
  )
643
647
  from .server_time_diff_tolerance_setting import ServerTimeDiffToleranceSetting
644
648
  from .server_time_sync_interval_setting import ServerTimeSyncIntervalSetting
645
- from .session_restrictions import SessionRestrictions
649
+ from .session_restriction_context import SessionRestrictionContext
650
+ from .session_restriction_data import SessionRestrictionData
646
651
  from .setting_token_time_setting import SettingTokenTimeSetting
647
652
  from .setup_oauth_result import SetupOAuthResult
648
653
  from .simple_submission_mode_enabled_setting import (
@@ -670,6 +675,7 @@ from .start_payment_course_price_redirect_data import (
670
675
  )
671
676
  from .started_transaction import StartedTransaction
672
677
  from .student_payment_enabled_setting import StudentPaymentEnabledSetting
678
+ from .student_view_enabled_setting import StudentViewEnabledSetting
673
679
  from .submission_validator_input_data import SubmissionValidatorInputData
674
680
  from .submissions_per_page_enabled_setting import (
675
681
  SubmissionsPerPageEnabledSetting,