codegrade 16.1.9__tar.gz → 16.1.14__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 (560) hide show
  1. {codegrade-16.1.9 → codegrade-16.1.14}/PKG-INFO +2 -2
  2. {codegrade-16.1.9 → codegrade-16.1.14}/cg_dt_utils/__init__.py +1 -0
  3. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/_just.py +5 -0
  4. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/_nothing.py +8 -0
  5. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/utils.py +59 -0
  6. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/__init__.py +1 -0
  7. codegrade-16.1.14/cg_request_args/_form.py +60 -0
  8. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/__init__.py +1 -1
  9. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/about.py +1 -1
  10. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/assignment.py +145 -41
  11. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/auto_test.py +29 -29
  12. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/comment.py +7 -7
  13. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/course.py +66 -39
  14. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/course_price.py +29 -20
  15. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/file.py +1 -1
  16. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/git_provider.py +3 -3
  17. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/group.py +5 -5
  18. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/group_set.py +4 -4
  19. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/login_link.py +2 -2
  20. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/lti.py +8 -8
  21. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/notification.py +3 -3
  22. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/oauth_provider.py +3 -3
  23. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/oauth_token.py +4 -4
  24. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/permission.py +1 -1
  25. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/plagiarism.py +1 -1
  26. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/role.py +2 -2
  27. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/section.py +6 -6
  28. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/site_settings.py +2 -2
  29. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/snippet.py +4 -4
  30. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/sso_provider.py +1 -1
  31. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/submission.py +11 -11
  32. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/task_result.py +4 -4
  33. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/tenant.py +241 -29
  34. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/transaction.py +2 -2
  35. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/user.py +71 -11
  36. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/user_setting.py +4 -4
  37. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/webhook.py +1 -1
  38. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/client.py +10 -2
  39. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/__init__.py +34 -4
  40. codegrade-16.1.14/codegrade/models/all_site_settings.py +1003 -0
  41. codegrade-16.1.14/codegrade/models/allow_handin_with_unset_deadline_setting.py +57 -0
  42. codegrade-16.1.14/codegrade/models/assignment.py +543 -0
  43. codegrade-16.1.14/codegrade/models/assignment_section_timeframe.py +70 -0
  44. codegrade-16.1.14/codegrade/models/assignment_timeframes.py +61 -0
  45. codegrade-16.1.9/codegrade/models/base_coupon.py → codegrade-16.1.14/codegrade/models/base_course_coupon.py +24 -12
  46. codegrade-16.1.14/codegrade/models/base_tenant_coupon.py +105 -0
  47. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/coupon_with_code.py +7 -5
  48. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/coupon_without_code.py +7 -5
  49. codegrade-16.1.9/codegrade/models/coupon.py → codegrade-16.1.14/codegrade/models/course_coupon.py +3 -3
  50. codegrade-16.1.9/codegrade/models/coupon_usage.py → codegrade-16.1.14/codegrade/models/course_coupon_usage.py +16 -7
  51. codegrade-16.1.14/codegrade/models/course_of_tenant_coupon_usage.py +70 -0
  52. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_perm_map.py +30 -0
  53. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_permission.py +2 -0
  54. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_section.py +9 -0
  55. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_course_section.py +2 -0
  56. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_user.py +9 -3
  57. codegrade-16.1.9/codegrade/models/partial_all_site_settings.py → codegrade-16.1.14/codegrade/models/frontend_site_settings.py +104 -550
  58. codegrade-16.1.14/codegrade/models/github_template_repo_enabled_setting.py +56 -0
  59. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/health_information.py +9 -0
  60. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/json_patch_submit_types_assignment.py +26 -0
  61. codegrade-16.1.14/codegrade/models/logout_response.py +36 -0
  62. codegrade-16.1.14/codegrade/models/logout_user_data.py +49 -0
  63. codegrade-16.1.14/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +57 -0
  64. codegrade-16.1.14/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +57 -0
  65. codegrade-16.1.14/codegrade/models/sections_in_submission_list_enabled_setting.py +57 -0
  66. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/site_setting_input.py +30 -0
  67. codegrade-16.1.14/codegrade/models/staged_assignment_importer_enabled_setting.py +57 -0
  68. codegrade-16.1.14/codegrade/models/tenant_coupon.py +25 -0
  69. codegrade-16.1.14/codegrade/models/tenant_coupon_usage.py +97 -0
  70. codegrade-16.1.14/codegrade/models/tenant_coupon_with_code.py +84 -0
  71. codegrade-16.1.14/codegrade/models/tenant_coupon_without_code.py +75 -0
  72. codegrade-16.1.14/codegrade/models/timeframe_like.py +83 -0
  73. codegrade-16.1.14/codegrade/models/webhook_disabled_configuration.py +49 -0
  74. codegrade-16.1.14/codegrade/models/webhook_enabled_configuration.py +62 -0
  75. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/utils.py +14 -6
  76. {codegrade-16.1.9 → codegrade-16.1.14}/pyproject.toml +8 -11
  77. {codegrade-16.1.9 → codegrade-16.1.14}/setup.py +2 -2
  78. codegrade-16.1.9/codegrade/models/all_site_settings.py +0 -718
  79. codegrade-16.1.9/codegrade/models/assignment.py +0 -529
  80. codegrade-16.1.9/codegrade/models/frontend_site_settings.py +0 -1084
  81. {codegrade-16.1.9 → codegrade-16.1.14}/README.md +0 -0
  82. {codegrade-16.1.9 → codegrade-16.1.14}/cg_dt_utils/py.typed +0 -0
  83. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/__init__.py +0 -0
  84. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/_maybe.py +0 -0
  85. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/_type_helpers.py +0 -0
  86. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/cg_maybe_plugin.py +0 -0
  87. {codegrade-16.1.9 → codegrade-16.1.14}/cg_maybe/py.typed +0 -0
  88. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_any_value.py +0 -0
  89. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_base.py +0 -0
  90. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_convert.py +0 -0
  91. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_enum.py +0 -0
  92. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_lazy.py +0 -0
  93. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_list.py +0 -0
  94. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_literal.py +0 -0
  95. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_mapping.py +0 -0
  96. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_multipart.py +0 -0
  97. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_nullable.py +0 -0
  98. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_parse_utils.py +0 -0
  99. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_query.py +0 -0
  100. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_rich_value.py +0 -0
  101. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_swagger_utils.py +0 -0
  102. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_swaggerize.py +0 -0
  103. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/_utils.py +0 -0
  104. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/exceptions.py +0 -0
  105. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/py.typed +0 -0
  106. {codegrade-16.1.9 → codegrade-16.1.14}/cg_request_args/request_args_plugin.py +0 -0
  107. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/_api/__init__.py +0 -0
  108. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/errors.py +0 -0
  109. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/_base_price.py +0 -0
  110. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/_saml_ui_logo_info.py +0 -0
  111. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
  112. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/about.py +0 -0
  113. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/abstract_role.py +0 -0
  114. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/add_users_section_data.py +0 -0
  115. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/all_auto_test_results.py +0 -0
  116. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/any_auto_test_step_as_json.py +0 -0
  117. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/any_error.py +0 -0
  118. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
  119. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
  120. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/api_codes.py +0 -0
  121. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_anonymization_algo.py +0 -0
  122. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
  123. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
  124. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_description_enabled_setting.py +0 -0
  125. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_done_type.py +0 -0
  126. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_export_column.py +0 -0
  127. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_feedback.py +0 -0
  128. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_grader.py +0 -0
  129. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
  130. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_kind.py +0 -0
  131. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_login_link.py +0 -0
  132. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
  133. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
  134. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
  135. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
  136. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
  137. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_point_decimals_setting.py +0 -0
  138. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_points_grading_settings.py +0 -0
  139. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_state_enum.py +0 -0
  140. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/assignment_template.py +0 -0
  141. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
  142. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test.py +0 -0
  143. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
  144. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
  145. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
  146. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_enabled_setting.py +0 -0
  147. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_fixture.py +0 -0
  148. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_global_setup_output.py +0 -0
  149. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_global_setup_script.py +0 -0
  150. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
  151. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
  152. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
  153. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
  154. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
  155. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
  156. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
  157. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
  158. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
  159. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
  160. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
  161. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_quality_comment.py +0 -0
  162. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_result.py +0 -0
  163. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_result_state.py +0 -0
  164. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
  165. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_run.py +0 -0
  166. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
  167. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_runner.py +0 -0
  168. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_runner_state.py +0 -0
  169. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_set.py +0 -0
  170. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_base.py +0 -0
  171. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_base_as_json.py +0 -0
  172. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
  173. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_log_base.py +0 -0
  174. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_result.py +0 -0
  175. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_result_state.py +0 -0
  176. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_step_validation_exception.py +0 -0
  177. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_suite.py +0 -0
  178. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
  179. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
  180. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
  181. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_about.py +0 -0
  182. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_auto_test_quality_comment.py +0 -0
  183. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_comment_base.py +0 -0
  184. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
  185. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
  186. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_comment_reply.py +0 -0
  187. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_directory.py +0 -0
  188. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_error.py +0 -0
  189. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_file.py +0 -0
  190. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_lms_capabilities.py +0 -0
  191. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_lti1p1_provider.py +0 -0
  192. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_lti1p3_provider.py +0 -0
  193. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_lti_provider.py +0 -0
  194. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_notification.py +0 -0
  195. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_release_info.py +0 -0
  196. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/base_rubric_item.py +0 -0
  197. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
  198. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/bulk_enroll_course_data.py +0 -0
  199. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
  200. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/cg_ignore_version.py +0 -0
  201. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/change_user_role_course_data.py +0 -0
  202. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/check_points_as_json.py +0 -0
  203. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/check_points_data.py +0 -0
  204. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/check_points_extra.py +0 -0
  205. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/check_points_input_as_json.py +0 -0
  206. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/clone_result.py +0 -0
  207. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_as_json.py +0 -0
  208. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_base_data.py +0 -0
  209. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_data.py +0 -0
  210. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_extra.py +0 -0
  211. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_input_as_json.py +0 -0
  212. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/code_quality_penalties.py +0 -0
  213. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/column_range.py +0 -0
  214. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/comment_base.py +0 -0
  215. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/comment_reply.py +0 -0
  216. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/comment_reply_edit.py +0 -0
  217. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/comment_reply_type.py +0 -0
  218. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/comment_type.py +0 -0
  219. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/connect_repository_git_provider_data.py +0 -0
  220. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/copy_auto_test_data.py +0 -0
  221. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/copy_rubric_assignment_data.py +0 -0
  222. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/coupon_data_parser.py +0 -0
  223. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course.py +0 -0
  224. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_bulk_enroll_result.py +0 -0
  225. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
  226. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
  227. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
  228. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_of_course_price.py +0 -0
  229. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_price.py +0 -0
  230. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_register_enabled_setting.py +0 -0
  231. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_register_response.py +0 -0
  232. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_registration_link.py +0 -0
  233. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_role.py +0 -0
  234. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_role_as_json_with_perms.py +0 -0
  235. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_section_division.py +0 -0
  236. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_section_division_connection.py +0 -0
  237. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_section_division_user.py +0 -0
  238. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_snippet.py +0 -0
  239. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_state.py +0 -0
  240. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/course_statistics_as_json.py +0 -0
  241. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_assignment_course_data.py +0 -0
  242. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_auto_test_data.py +0 -0
  243. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_comment_data.py +0 -0
  244. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_comment_reply_data.py +0 -0
  245. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_course_data.py +0 -0
  246. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_division_section_data.py +0 -0
  247. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_group_group_set_data.py +0 -0
  248. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_group_set_course_data.py +0 -0
  249. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_lti_data.py +0 -0
  250. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
  251. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_proxy_submission_data.py +0 -0
  252. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_repository_git_provider_data.py +0 -0
  253. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_role_course_data.py +0 -0
  254. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_section_course_data.py +0 -0
  255. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_snippet_course_data.py +0 -0
  256. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_snippet_data.py +0 -0
  257. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_sso_provider_data.py +0 -0
  258. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/create_tenant_data.py +0 -0
  259. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/csv_large_file_limit_setting.py +0 -0
  260. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
  261. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/currency.py +0 -0
  262. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_as_json.py +0 -0
  263. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_data.py +0 -0
  264. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_extra.py +0 -0
  265. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_input_as_json.py +0 -0
  266. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_log.py +0 -0
  267. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/custom_output_log_base.py +0 -0
  268. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/deleted_comment_reply.py +0 -0
  269. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/deletion_type.py +0 -0
  270. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/directory_with_children.py +0 -0
  271. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/disabled_setting_exception.py +0 -0
  272. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
  273. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/editor_enabled_setting.py +0 -0
  274. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/email_notification_types.py +0 -0
  275. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/email_students_enabled_setting.py +0 -0
  276. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/email_users_course_data.py +0 -0
  277. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/exam_login_max_length_setting.py +0 -0
  278. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/export_assignment_csv_data.py +0 -0
  279. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/export_assignment_data.py +0 -0
  280. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/export_assignment_files_data.py +0 -0
  281. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_auto_test_result.py +0 -0
  282. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_auto_test_run.py +0 -0
  283. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_course.py +0 -0
  284. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_course_registration_link.py +0 -0
  285. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_group.py +0 -0
  286. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_job.py +0 -0
  287. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
  288. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_tenant.py +0 -0
  289. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_transaction.py +0 -0
  290. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extended_work.py +0 -0
  291. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extract_file_tree_directory.py +0 -0
  292. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/extract_file_tree_file.py +0 -0
  293. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/failed_to_send_email_exception.py +0 -0
  294. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/feedback_base.py +0 -0
  295. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
  296. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/feedback_with_replies.py +0 -0
  297. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/feedback_without_replies.py +0 -0
  298. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/file_deletion.py +0 -0
  299. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/file_rule.py +0 -0
  300. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/file_rule_input_data.py +0 -0
  301. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/file_tree.py +0 -0
  302. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/file_type.py +0 -0
  303. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/finalized_lti1p1_provider.py +0 -0
  304. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/finalized_lti1p3_provider.py +0 -0
  305. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/find_element_interval_setting.py +0 -0
  306. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/find_element_max_tries_setting.py +0 -0
  307. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
  308. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/fixed_availability.py +0 -0
  309. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/fixed_grade_availability.py +0 -0
  310. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/fixture_like.py +0 -0
  311. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/fraction.py +0 -0
  312. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/general_feedback_comment_base.py +0 -0
  313. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
  314. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/general_feedback_extra.py +0 -0
  315. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/git_repositories_page.py +0 -0
  316. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/git_repository_like.py +0 -0
  317. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/git_user_info.py +0 -0
  318. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/global_perm_map.py +0 -0
  319. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/global_permission.py +0 -0
  320. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/grade_history.py +0 -0
  321. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/grade_origin.py +0 -0
  322. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
  323. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/group.py +0 -0
  324. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
  325. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/group_set.py +0 -0
  326. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/groups_enabled_setting.py +0 -0
  327. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/has_unread_notifcation_json.py +0 -0
  328. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/ignore_handling.py +0 -0
  329. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/ignored_files_exception.py +0 -0
  330. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/import_into_assignment_data.py +0 -0
  331. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/import_into_course_data.py +0 -0
  332. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
  333. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/inline_feedback_comment_base.py +0 -0
  334. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
  335. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/inline_feedback_extra.py +0 -0
  336. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/invalid_group_exception.py +0 -0
  337. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/invalid_io_cases_exception.py +0 -0
  338. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/invalid_options_exception.py +0 -0
  339. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_as_json.py +0 -0
  340. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_base_data.py +0 -0
  341. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_data.py +0 -0
  342. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_extra.py +0 -0
  343. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_input_as_json.py +0 -0
  344. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_input_case.py +0 -0
  345. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_log.py +0 -0
  346. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_option.py +0 -0
  347. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_step_log.py +0 -0
  348. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/io_test_step_log_base.py +0 -0
  349. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
  350. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/job.py +0 -0
  351. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/json_create_auto_test.py +0 -0
  352. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/json_create_tenant.py +0 -0
  353. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/json_patch_auto_test.py +0 -0
  354. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_as_json.py +0 -0
  355. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_base_data.py +0 -0
  356. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_data.py +0 -0
  357. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_extra.py +0 -0
  358. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_input_as_json.py +0 -0
  359. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_log.py +0 -0
  360. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/junit_test_log_base.py +0 -0
  361. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
  362. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/legacy_features.py +0 -0
  363. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/line_range.py +0 -0
  364. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/linter_comment.py +0 -0
  365. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/linters_enabled_setting.py +0 -0
  366. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lms_capabilities.py +0 -0
  367. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/login_token_before_time_setting.py +0 -0
  368. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/login_user_data.py +0 -0
  369. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti1p1_provider.py +0 -0
  370. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti1p1_provider_data.py +0 -0
  371. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti1p3_provider.py +0 -0
  372. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti1p3_provider_data.py +0 -0
  373. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
  374. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti_enabled_setting.py +0 -0
  375. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
  376. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/lti_provider_base.py +0 -0
  377. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_document_update_size_setting.py +0 -0
  378. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
  379. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
  380. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_file_size_setting.py +0 -0
  381. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_large_upload_size_setting.py +0 -0
  382. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_lines_setting.py +0 -0
  383. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_mirror_file_age_setting.py +0 -0
  384. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_normal_upload_size_setting.py +0 -0
  385. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_number_of_files_setting.py +0 -0
  386. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
  387. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/max_user_setting_amount_setting.py +0 -0
  388. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_evaluation_time_chunk_size_setting.py +0 -0
  389. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_evaluation_time_limit_setting.py +0 -0
  390. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_event_buffer_size_setting.py +0 -0
  391. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_gathering_enabled_setting.py +0 -0
  392. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_gathering_event_interval_setting.py +0 -0
  393. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_gathering_expressions_setting.py +0 -0
  394. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/metric_gathering_time_interval_setting.py +0 -0
  395. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/min_password_score_setting.py +0 -0
  396. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/mirror_file_result.py +0 -0
  397. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/missing_cookie_error.py +0 -0
  398. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/missing_file.py +0 -0
  399. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
  400. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
  401. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
  402. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
  403. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
  404. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
  405. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
  406. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
  407. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
  408. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
  409. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
  410. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
  411. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
  412. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/no_permissions.py +0 -0
  413. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/non_deleted_comment_reply.py +0 -0
  414. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
  415. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
  416. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/non_present_preference.py +0 -0
  417. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification.py +0 -0
  418. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
  419. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
  420. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_poll_time_setting.py +0 -0
  421. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_reasons.py +0 -0
  422. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_setting.py +0 -0
  423. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notification_setting_option.py +0 -0
  424. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/notifications_json.py +0 -0
  425. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/oauth_provider.py +0 -0
  426. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/oauth_token.py +0 -0
  427. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/option.py +0 -0
  428. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/options_input_data.py +0 -0
  429. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/parse_api_exception.py +0 -0
  430. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
  431. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
  432. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_all_notification_data.py +0 -0
  433. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_assignment_data.py +0 -0
  434. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_auto_test_data.py +0 -0
  435. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_comment_reply_data.py +0 -0
  436. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_course_data.py +0 -0
  437. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_grader_submission_data.py +0 -0
  438. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_notification_data.py +0 -0
  439. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
  440. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_provider_lti_data.py +0 -0
  441. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_role_course_data.py +0 -0
  442. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_role_data.py +0 -0
  443. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_role_tenant_data.py +0 -0
  444. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
  445. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
  446. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_section_data.py +0 -0
  447. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_settings_tenant_data.py +0 -0
  448. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_site_settings_data.py +0 -0
  449. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_snippet_course_data.py +0 -0
  450. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_snippet_data.py +0 -0
  451. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_submission_data.py +0 -0
  452. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
  453. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_tenant_data.py +0 -0
  454. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
  455. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/patch_user_data.py +0 -0
  456. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
  457. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
  458. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/permission_exception.py +0 -0
  459. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/plagiarism_run.py +0 -0
  460. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
  461. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
  462. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/plagiarism_state.py +0 -0
  463. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/post_oauth_token_data.py +0 -0
  464. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/present_preference.py +0 -0
  465. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/proxy.py +0 -0
  466. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/put_description_assignment_data.py +0 -0
  467. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/put_enroll_link_course_data.py +0 -0
  468. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/put_price_course_data.py +0 -0
  469. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/put_price_tenant_data.py +0 -0
  470. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/put_rubric_assignment_data.py +0 -0
  471. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/quality_comment_severity.py +0 -0
  472. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/quality_test_log.py +0 -0
  473. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/quality_test_log_base.py +0 -0
  474. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/register_enabled_setting.py +0 -0
  475. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/register_user_data.py +0 -0
  476. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/register_user_with_link_course_data.py +0 -0
  477. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/release_info.py +0 -0
  478. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/release_message_max_time_setting.py +0 -0
  479. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rename_group_group_data.py +0 -0
  480. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/render_html_enabled_setting.py +0 -0
  481. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
  482. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/reset_token_time_setting.py +0 -0
  483. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_get_auto_test_get.py +0 -0
  484. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
  485. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_post_login_link_login.py +0 -0
  486. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_post_section_create_division.py +0 -0
  487. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_post_user_login.py +0 -0
  488. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/result_data_post_user_register.py +0 -0
  489. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/role_as_json_with_perms.py +0 -0
  490. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/root_file_trees_json.py +0 -0
  491. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_description_type.py +0 -0
  492. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
  493. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_item.py +0 -0
  494. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_item_input_as_json.py +0 -0
  495. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_lock_reason.py +0 -0
  496. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_row_base.py +0 -0
  497. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
  498. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
  499. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rubrics_enabled_setting.py +0 -0
  500. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/rule_type.py +0 -0
  501. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/run_program_as_json.py +0 -0
  502. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/run_program_data.py +0 -0
  503. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/run_program_extra.py +0 -0
  504. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/run_program_input_as_json.py +0 -0
  505. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/run_program_log.py +0 -0
  506. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/saml2_provider_json.py +0 -0
  507. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/saml_ui_info.py +0 -0
  508. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/send_registration_email_setting.py +0 -0
  509. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
  510. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
  511. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/server_time_sync_interval_setting.py +0 -0
  512. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/setting_token_time_setting.py +0 -0
  513. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/setup_oauth_result.py +0 -0
  514. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/site_email_setting.py +0 -0
  515. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/snippet.py +0 -0
  516. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
  517. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
  518. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/start_payment_course_price_data.py +0 -0
  519. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
  520. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/started_transaction.py +0 -0
  521. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/student_payment_enabled_setting.py +0 -0
  522. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/submission_validator_input_data.py +0 -0
  523. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/task_result_state.py +0 -0
  524. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tax_behavior.py +0 -0
  525. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant.py +0 -0
  526. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_course_statistics.py +0 -0
  527. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_of_tenant_price.py +0 -0
  528. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_permissions.py +0 -0
  529. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_price.py +0 -0
  530. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
  531. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tenant_statistics.py +0 -0
  532. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
  533. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/timed_availability.py +0 -0
  534. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/token_revoked_exception.py +0 -0
  535. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tour_configurations_setting.py +0 -0
  536. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/tour_polling_interval_setting.py +0 -0
  537. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/transaction.py +0 -0
  538. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/transaction_state.py +0 -0
  539. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/types.py +0 -0
  540. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
  541. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/update_set_auto_test_data.py +0 -0
  542. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
  543. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/update_suite_auto_test_data.py +0 -0
  544. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
  545. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/upload_submission_assignment_data.py +0 -0
  546. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/user.py +0 -0
  547. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/user_course.py +0 -0
  548. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/user_info_with_role.py +0 -0
  549. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/user_input.py +0 -0
  550. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/user_without_group.py +0 -0
  551. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/weak_password_exception.py +0 -0
  552. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/weak_password_feedback.py +0 -0
  553. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/webhook_base.py +0 -0
  554. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/work.py +0 -0
  555. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/work_origin.py +0 -0
  556. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/work_rubric_item.py +0 -0
  557. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/work_rubric_result_as_json.py +0 -0
  558. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
  559. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/parsers.py +0 -0
  560. {codegrade-16.1.9 → codegrade-16.1.14}/codegrade/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codegrade
3
- Version: 16.1.9
3
+ Version: 16.1.14
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.6.1,<4.0
@@ -15,7 +15,7 @@ Requires-Dist: dataclasses (>=0.8,<0.9) ; python_version >= "3.6" and python_ver
15
15
  Requires-Dist: httpx (>=0.19.0,<1.0.0)
16
16
  Requires-Dist: python-dateutil (>=2.8.1,<3.0.0)
17
17
  Requires-Dist: structlog (>=20.1.0,<21.0.0)
18
- Requires-Dist: typing-extensions (>=3.7.4.3,<4.0.0.0)
18
+ Requires-Dist: typing-extensions (>=4.0.0.0,<5.0.0.0)
19
19
  Requires-Dist: validate-email (>=1.3,<2.0)
20
20
  Project-URL: Documentation, https://python.api.codegrade.com
21
21
  Description-Content-Type: text/markdown
@@ -195,6 +195,7 @@ else:
195
195
  return dt
196
196
 
197
197
  DatetimeWithTimezone.max = datetime.datetime.max.replace(tzinfo=_utc)
198
+ DatetimeWithTimezone.min = datetime.datetime.min.replace(tzinfo=_utc)
198
199
 
199
200
 
200
201
  class Months(enum.IntEnum):
@@ -339,6 +339,11 @@ class Just(t.Generic[_T]):
339
339
  """
340
340
  return self.value == val
341
341
 
342
+ def __eq__(self, other: object) -> bool:
343
+ if isinstance(other, Just):
344
+ return self.value == other.value
345
+ return NotImplemented
346
+
342
347
  def ne( # pylint: disable=invalid-name
343
348
  self: 'Just[_Y]',
344
349
  val: _Y,
@@ -24,6 +24,9 @@ class _Nothing(t.Generic[_T]):
24
24
  """
25
25
  __slots__ = ()
26
26
 
27
+ def __hash__(self) -> int:
28
+ return hash('cg_maybe.Nothing')
29
+
27
30
  is_just: Literal[False] = False
28
31
  is_nothing: Literal[True] = True
29
32
 
@@ -108,6 +111,11 @@ class _Nothing(t.Generic[_T]):
108
111
  def __repr__(self) -> str:
109
112
  return 'Nothing'
110
113
 
114
+ def __eq__(self, other: object) -> bool:
115
+ if isinstance(other, _Nothing):
116
+ return True
117
+ return NotImplemented
118
+
111
119
  def __structlog__(self) -> t.Mapping[str, object]:
112
120
  return {'type': 'Nothing'}
113
121
 
@@ -8,6 +8,7 @@ from ._just import Just
8
8
  from ._maybe import Maybe
9
9
  from ._nothing import Nothing
10
10
  from ._type_helpers import Literal
11
+ from ._type_helpers import SupportsLessThan as _SupportsLessThan
11
12
 
12
13
  _S = t.TypeVar('_S')
13
14
  _T = t.TypeVar('_T')
@@ -161,3 +162,61 @@ def encase(
161
162
  return Nothing
162
163
  else:
163
164
  return Just(val)
165
+
166
+
167
+ def min(items: t.Iterator[_SupportsLessThan[_T]]) -> Maybe[_T]: # pylint: disable=redefined-builtin
168
+ """Get the minimum value for a iterator.
169
+
170
+ >>> min([])
171
+ Nothing
172
+ >>> min([1, 2, 3])
173
+ Just(1)
174
+ >>> min([3, 1, 2])
175
+ Just(1)
176
+
177
+ :param items: The item to get the minimum for.
178
+ :returns: Maybe the minimum item, if the sequence was not empty.
179
+ """
180
+ best: None | _SupportsLessThan = None
181
+ done_any = False
182
+ for item in items:
183
+ done_any = True
184
+ if best is None or item < best:
185
+ best = item
186
+
187
+ if done_any:
188
+ # At this point best can be `None`, if any item in `items` was
189
+ # none. But it should never be unset.
190
+ return Just(t.cast(_T, best))
191
+
192
+ return Nothing
193
+
194
+
195
+ def max(items: t.Iterator[_SupportsLessThan[_T]]) -> Maybe[_T]: # pylint: disable=redefined-builtin
196
+ """Get the maximum value for a iterator.
197
+
198
+ >>> max([])
199
+ Nothing
200
+ >>> max([1, 2, 3])
201
+ Just(3)
202
+ >>> max([3, 1, 2])
203
+ Just(3)
204
+ >>> max([2, 3, 1])
205
+ Just(3)
206
+
207
+ :param items: The item to get the maximum for.
208
+ :returns: Maybe the maximum item, if the sequence was not empty.
209
+ """
210
+ best: None | _SupportsLessThan = None
211
+ done_any = False
212
+ for item in items:
213
+ done_any = True
214
+ if best is None or item > best:
215
+ best = item
216
+
217
+ if done_any:
218
+ # At this point best can be `None`, if any item in `items` was
219
+ # none. But it should never be unset.
220
+ return Just(t.cast(_T, best))
221
+
222
+ return Nothing
@@ -5,6 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR BSD-3-Clause-Clear
5
5
 
6
6
  from ._base import Union, Parser, SimpleValue
7
7
  from ._enum import EnumValue, StringEnum
8
+ from ._form import FormURLEncoded
8
9
  from ._lazy import Lazy
9
10
  from ._list import List, TwoTuple
10
11
  from ._query import QueryParam
@@ -0,0 +1,60 @@
1
+ """This module contains logic to parse flaks x-www-form-urlencoded requests.
2
+ """
3
+ import typing as t
4
+
5
+ from ._base import Parser as _Parser
6
+ from ._utils import USE_SLOTS as _USE_SLOTS
7
+ from ._utils import T as _T
8
+ from ._swagger_utils import Schema as _Schema
9
+ from ._swagger_utils import OpenAPISchema as _OpenAPISchema
10
+ from ._swagger_utils import maybe_raise_schema as _maybe_raise_schema
11
+
12
+ try:
13
+ import flask
14
+ except ImportError: # pragma: no cover
15
+ pass
16
+
17
+ if t.TYPE_CHECKING: # pragma: no cover
18
+ # pylint: disable=unused-import
19
+ from werkzeug.datastructures import FileStorage
20
+
21
+ from ._base import LogReplacer as _LogReplacer
22
+
23
+
24
+ class FormURLEncoded(t.Generic[_T]):
25
+ """This class helps you parse JSON and files from the same request.
26
+ """
27
+ if _USE_SLOTS:
28
+ __slots__ = ('__parser', )
29
+
30
+ def __init__(
31
+ self,
32
+ parser: _Parser[_T],
33
+ ) -> None:
34
+ self.__parser = parser
35
+
36
+ def __generate_schema(self, open_api: _OpenAPISchema) -> _Schema:
37
+ json_schema = self.__parser.to_open_api(open_api)
38
+ return _Schema(
39
+ typ='multipart/form-data',
40
+ schema=json_schema,
41
+ )
42
+
43
+ def from_flask(
44
+ self,
45
+ *,
46
+ log_replacer: '_LogReplacer' = None,
47
+ ) -> _T:
48
+ """Parse a multipart request from the current flask request.
49
+
50
+ :param log_replacer: If passed this function should remove any
51
+ sensitive data from the logs.
52
+
53
+ :returns: A tuple, where the first item is the parsed JSON (according
54
+ to the given parser), and the second argument is a list of
55
+ the parsed files.
56
+ """
57
+ _maybe_raise_schema(self.__generate_schema)
58
+
59
+ body = flask.request.form
60
+ return self.__parser.try_parse_and_log(body, log_replacer=log_replacer)
@@ -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.9"
10
+ __version__ = "16.1.14"
11
11
 
12
12
 
13
13
  @wraps(AuthenticatedClient.get)
@@ -75,7 +75,7 @@ class AboutService(t.Generic[_ClientT]):
75
75
  resp,
76
76
  (
77
77
  (
78
- (400, 409, 401, 403, 404, "5XX"),
78
+ (400, 409, 401, 403, 404, 429, "5XX"),
79
79
  utils.unpack_union(AnyError),
80
80
  ),
81
81
  ),
@@ -25,6 +25,7 @@ if t.TYPE_CHECKING or os.getenv("CG_EAGERIMPORT", False):
25
25
  AssignmentPeerFeedbackSettings,
26
26
  )
27
27
  from ..models.assignment_template import AssignmentTemplate
28
+ from ..models.assignment_timeframes import AssignmentTimeframes
28
29
  from ..models.auto_test import AutoTest
29
30
  from ..models.comment_base import CommentBase
30
31
  from ..models.copy_rubric_assignment_data import CopyRubricAssignmentData
@@ -106,7 +107,7 @@ class AssignmentService(t.Generic[_ClientT]):
106
107
  resp,
107
108
  (
108
109
  (
109
- (400, 409, 401, 403, 404, "5XX"),
110
+ (400, 409, 401, 403, 404, 429, "5XX"),
110
111
  utils.unpack_union(AnyError),
111
112
  ),
112
113
  ),
@@ -160,7 +161,7 @@ class AssignmentService(t.Generic[_ClientT]):
160
161
  resp,
161
162
  (
162
163
  (
163
- (400, 409, 401, 403, 404, "5XX"),
164
+ (400, 409, 401, 403, 404, 429, "5XX"),
164
165
  utils.unpack_union(AnyError),
165
166
  ),
166
167
  ),
@@ -204,7 +205,7 @@ class AssignmentService(t.Generic[_ClientT]):
204
205
  resp,
205
206
  (
206
207
  (
207
- (400, 409, 401, 403, 404, "5XX"),
208
+ (400, 409, 401, 403, 404, 429, "5XX"),
208
209
  utils.unpack_union(AnyError),
209
210
  ),
210
211
  ),
@@ -263,7 +264,7 @@ class AssignmentService(t.Generic[_ClientT]):
263
264
  resp,
264
265
  (
265
266
  (
266
- (400, 409, 401, 403, 404, "5XX"),
267
+ (400, 409, 401, 403, 404, 429, "5XX"),
267
268
  utils.unpack_union(AnyError),
268
269
  ),
269
270
  ),
@@ -310,7 +311,7 @@ class AssignmentService(t.Generic[_ClientT]):
310
311
  resp,
311
312
  (
312
313
  (
313
- (400, 409, 401, 403, 404, "5XX"),
314
+ (400, 409, 401, 403, 404, 429, "5XX"),
314
315
  utils.unpack_union(AnyError),
315
316
  ),
316
317
  ),
@@ -353,7 +354,7 @@ class AssignmentService(t.Generic[_ClientT]):
353
354
  resp,
354
355
  (
355
356
  (
356
- (400, 409, 401, 403, 404, "5XX"),
357
+ (400, 409, 401, 403, 404, 429, "5XX"),
357
358
  utils.unpack_union(AnyError),
358
359
  ),
359
360
  ),
@@ -407,7 +408,7 @@ class AssignmentService(t.Generic[_ClientT]):
407
408
  resp,
408
409
  (
409
410
  (
410
- (400, 409, 401, 403, 404, "5XX"),
411
+ (400, 409, 401, 403, 404, 429, "5XX"),
411
412
  utils.unpack_union(AnyError),
412
413
  ),
413
414
  ),
@@ -440,11 +441,11 @@ class AssignmentService(t.Generic[_ClientT]):
440
441
  )
441
442
  params = extra_parameters or {}
442
443
 
444
+ data, files = utils.to_multipart(utils.to_dict(multipart_data))
445
+
443
446
  with self.__client as client:
444
447
  resp = client.http.put(
445
- url=url,
446
- files=utils.to_multipart(utils.to_dict(multipart_data)),
447
- params=params,
448
+ url=url, files=files, data=data, params=params
448
449
  )
449
450
  utils.log_warnings(resp)
450
451
 
@@ -459,7 +460,7 @@ class AssignmentService(t.Generic[_ClientT]):
459
460
  resp,
460
461
  (
461
462
  (
462
- (400, 409, 401, 403, 404, "5XX"),
463
+ (400, 409, 401, 403, 404, 429, "5XX"),
463
464
  utils.unpack_union(AnyError),
464
465
  ),
465
466
  ),
@@ -502,7 +503,7 @@ class AssignmentService(t.Generic[_ClientT]):
502
503
  resp,
503
504
  (
504
505
  (
505
- (400, 409, 401, 403, 404, "5XX"),
506
+ (400, 409, 401, 403, 404, 429, "5XX"),
506
507
  utils.unpack_union(AnyError),
507
508
  ),
508
509
  ),
@@ -549,7 +550,7 @@ class AssignmentService(t.Generic[_ClientT]):
549
550
  resp,
550
551
  (
551
552
  (
552
- (400, 409, 401, 403, 404, "5XX"),
553
+ (400, 409, 401, 403, 404, 429, "5XX"),
553
554
  utils.unpack_union(AnyError),
554
555
  ),
555
556
  ),
@@ -592,7 +593,7 @@ class AssignmentService(t.Generic[_ClientT]):
592
593
  resp,
593
594
  (
594
595
  (
595
- (400, 409, 401, 403, 404, "5XX"),
596
+ (400, 409, 401, 403, 404, 429, "5XX"),
596
597
  utils.unpack_union(AnyError),
597
598
  ),
598
599
  ),
@@ -654,7 +655,7 @@ class AssignmentService(t.Generic[_ClientT]):
654
655
  resp,
655
656
  (
656
657
  (
657
- (400, 409, 401, 403, 404, "5XX"),
658
+ (400, 409, 401, 403, 404, 429, "5XX"),
658
659
  utils.unpack_union(AnyError),
659
660
  ),
660
661
  ),
@@ -700,7 +701,7 @@ class AssignmentService(t.Generic[_ClientT]):
700
701
  resp,
701
702
  (
702
703
  (
703
- (400, 409, 401, 403, 404, "5XX"),
704
+ (400, 409, 401, 403, 404, 429, "5XX"),
704
705
  utils.unpack_union(AnyError),
705
706
  ),
706
707
  ),
@@ -754,7 +755,7 @@ class AssignmentService(t.Generic[_ClientT]):
754
755
  resp,
755
756
  (
756
757
  (
757
- (400, 409, 401, 403, 404, "5XX"),
758
+ (400, 409, 401, 403, 404, 429, "5XX"),
758
759
  utils.unpack_union(AnyError),
759
760
  ),
760
761
  ),
@@ -804,7 +805,7 @@ class AssignmentService(t.Generic[_ClientT]):
804
805
  resp,
805
806
  (
806
807
  (
807
- (400, 409, 401, 403, 404, "5XX"),
808
+ (400, 409, 401, 403, 404, 429, "5XX"),
808
809
  utils.unpack_union(AnyError),
809
810
  ),
810
811
  ),
@@ -851,7 +852,7 @@ class AssignmentService(t.Generic[_ClientT]):
851
852
  resp,
852
853
  (
853
854
  (
854
- (400, 409, 401, 403, 404, "5XX"),
855
+ (400, 409, 401, 403, 404, 429, "5XX"),
855
856
  utils.unpack_union(AnyError),
856
857
  ),
857
858
  ),
@@ -903,7 +904,7 @@ class AssignmentService(t.Generic[_ClientT]):
903
904
  resp,
904
905
  (
905
906
  (
906
- (400, 409, 401, 403, 404, "5XX"),
907
+ (400, 409, 401, 403, 404, 429, "5XX"),
907
908
  utils.unpack_union(AnyError),
908
909
  ),
909
910
  ),
@@ -965,7 +966,110 @@ class AssignmentService(t.Generic[_ClientT]):
965
966
  resp,
966
967
  (
967
968
  (
968
- (400, 409, 401, 403, 404, "5XX"),
969
+ (400, 409, 401, 403, 404, 429, "5XX"),
970
+ utils.unpack_union(AnyError),
971
+ ),
972
+ ),
973
+ )
974
+
975
+ def get_timeframes(
976
+ self: "AssignmentService[codegrade.client.AuthenticatedClient]",
977
+ *,
978
+ assignment_id: "int",
979
+ extra_parameters: t.Mapping[
980
+ str, t.Union[str, bool, int, float]
981
+ ] = None,
982
+ ) -> "AssignmentTimeframes":
983
+ """Get the description for this assignment.
984
+
985
+ :param assignment_id: The id of the assignment;
986
+ :param extra_parameters: The extra query parameters you might want to
987
+ add. By default no extra query parameters are added.
988
+
989
+ :returns: A public link that allows users to download the file or the
990
+ file itself as a stream of octets
991
+ """
992
+
993
+ url = "/api/v1/assignments/{assignmentId}/timeframes/".format(
994
+ assignmentId=assignment_id
995
+ )
996
+ params = extra_parameters or {}
997
+
998
+ with self.__client as client:
999
+ resp = client.http.get(url=url, params=params)
1000
+ utils.log_warnings(resp)
1001
+
1002
+ if utils.response_code_matches(resp.status_code, 200):
1003
+ # fmt: off
1004
+ from ..models.assignment_timeframes import AssignmentTimeframes
1005
+
1006
+ # fmt: on
1007
+ return parsers.JsonResponseParser(
1008
+ parsers.ParserFor.make(AssignmentTimeframes)
1009
+ ).try_parse(resp)
1010
+
1011
+ from ..models.any_error import AnyError
1012
+
1013
+ raise utils.get_error(
1014
+ resp,
1015
+ (
1016
+ (
1017
+ (400, 409, 401, 403, 404, 429, "5XX"),
1018
+ utils.unpack_union(AnyError),
1019
+ ),
1020
+ ),
1021
+ )
1022
+
1023
+ def put_timeframes(
1024
+ self: "AssignmentService[codegrade.client.AuthenticatedClient]",
1025
+ json_body: t.Union[dict, list, "AssignmentTimeframes"],
1026
+ *,
1027
+ assignment_id: "int",
1028
+ extra_parameters: t.Mapping[
1029
+ str, t.Union[str, bool, int, float]
1030
+ ] = None,
1031
+ ) -> "AssignmentTimeframes":
1032
+ """Get the description for this assignment.
1033
+
1034
+ :param json_body: The body of the request. See
1035
+ :class:`.AssignmentTimeframes` for information about the possible
1036
+ fields. You can provide this data as a
1037
+ :class:`.AssignmentTimeframes` or as a dictionary.
1038
+ :param assignment_id: The id of the assignment;
1039
+ :param extra_parameters: The extra query parameters you might want to
1040
+ add. By default no extra query parameters are added.
1041
+
1042
+ :returns: A public link that allows users to download the file or the
1043
+ file itself as a stream of octets
1044
+ """
1045
+
1046
+ url = "/api/v1/assignments/{assignmentId}/timeframes/".format(
1047
+ assignmentId=assignment_id
1048
+ )
1049
+ params = extra_parameters or {}
1050
+
1051
+ with self.__client as client:
1052
+ resp = client.http.put(
1053
+ url=url, json=utils.to_dict(json_body), params=params
1054
+ )
1055
+ utils.log_warnings(resp)
1056
+
1057
+ if utils.response_code_matches(resp.status_code, 200):
1058
+ # fmt: off
1059
+ from ..models.assignment_timeframes import AssignmentTimeframes
1060
+
1061
+ # fmt: on
1062
+ return parsers.JsonResponseParser(
1063
+ parsers.ParserFor.make(AssignmentTimeframes)
1064
+ ).try_parse(resp)
1065
+
1066
+ from ..models.any_error import AnyError
1067
+
1068
+ raise utils.get_error(
1069
+ resp,
1070
+ (
1071
+ (
1072
+ (400, 409, 401, 403, 404, 429, "5XX"),
969
1073
  utils.unpack_union(AnyError),
970
1074
  ),
971
1075
  ),
@@ -1014,7 +1118,7 @@ class AssignmentService(t.Generic[_ClientT]):
1014
1118
  resp,
1015
1119
  (
1016
1120
  (
1017
- (400, 409, 401, 403, 404, "5XX"),
1121
+ (400, 409, 401, 403, 404, 429, "5XX"),
1018
1122
  utils.unpack_union(AnyError),
1019
1123
  ),
1020
1124
  ),
@@ -1063,7 +1167,7 @@ class AssignmentService(t.Generic[_ClientT]):
1063
1167
  resp,
1064
1168
  (
1065
1169
  (
1066
- (400, 409, 401, 403, 404, "5XX"),
1170
+ (400, 409, 401, 403, 404, 429, "5XX"),
1067
1171
  utils.unpack_union(AnyError),
1068
1172
  ),
1069
1173
  ),
@@ -1124,7 +1228,7 @@ class AssignmentService(t.Generic[_ClientT]):
1124
1228
  resp,
1125
1229
  (
1126
1230
  (
1127
- (400, 409, 401, 403, 404, "5XX"),
1231
+ (400, 409, 401, 403, 404, 429, "5XX"),
1128
1232
  utils.unpack_union(AnyError),
1129
1233
  ),
1130
1234
  ),
@@ -1172,7 +1276,7 @@ class AssignmentService(t.Generic[_ClientT]):
1172
1276
  resp,
1173
1277
  (
1174
1278
  (
1175
- (400, 409, 401, 403, 404, "5XX"),
1279
+ (400, 409, 401, 403, 404, 429, "5XX"),
1176
1280
  utils.unpack_union(AnyError),
1177
1281
  ),
1178
1282
  ),
@@ -1240,7 +1344,7 @@ class AssignmentService(t.Generic[_ClientT]):
1240
1344
  resp,
1241
1345
  (
1242
1346
  (
1243
- (400, 409, 401, 403, 404, "5XX"),
1347
+ (400, 409, 401, 403, 404, 429, "5XX"),
1244
1348
  utils.unpack_union(AnyError),
1245
1349
  ),
1246
1350
  ),
@@ -1292,7 +1396,7 @@ class AssignmentService(t.Generic[_ClientT]):
1292
1396
  resp,
1293
1397
  (
1294
1398
  (
1295
- (400, 409, 401, 403, 404, "5XX"),
1399
+ (400, 409, 401, 403, 404, 429, "5XX"),
1296
1400
  utils.unpack_union(AnyError),
1297
1401
  ),
1298
1402
  ),
@@ -1349,7 +1453,7 @@ class AssignmentService(t.Generic[_ClientT]):
1349
1453
  resp,
1350
1454
  (
1351
1455
  (
1352
- (400, 409, 401, 403, 404, "5XX"),
1456
+ (400, 409, 401, 403, 404, 429, "5XX"),
1353
1457
  utils.unpack_union(AnyError),
1354
1458
  ),
1355
1459
  ),
@@ -1397,7 +1501,7 @@ class AssignmentService(t.Generic[_ClientT]):
1397
1501
  resp,
1398
1502
  (
1399
1503
  (
1400
- (400, 409, 401, 403, 404, "5XX"),
1504
+ (400, 409, 401, 403, 404, 429, "5XX"),
1401
1505
  utils.unpack_union(AnyError),
1402
1506
  ),
1403
1507
  ),
@@ -1452,7 +1556,7 @@ class AssignmentService(t.Generic[_ClientT]):
1452
1556
  resp,
1453
1557
  (
1454
1558
  (
1455
- (400, 409, 401, 403, 404, "5XX"),
1559
+ (400, 409, 401, 403, 404, 429, "5XX"),
1456
1560
  utils.unpack_union(AnyError),
1457
1561
  ),
1458
1562
  ),
@@ -1509,7 +1613,7 @@ class AssignmentService(t.Generic[_ClientT]):
1509
1613
  resp,
1510
1614
  (
1511
1615
  (
1512
- (400, 409, 401, 403, 404, "5XX"),
1616
+ (400, 409, 401, 403, 404, 429, "5XX"),
1513
1617
  utils.unpack_union(AnyError),
1514
1618
  ),
1515
1619
  ),
@@ -1556,7 +1660,7 @@ class AssignmentService(t.Generic[_ClientT]):
1556
1660
  resp,
1557
1661
  (
1558
1662
  (
1559
- (400, 409, 401, 403, 404, "5XX"),
1663
+ (400, 409, 401, 403, 404, 429, "5XX"),
1560
1664
  utils.unpack_union(AnyError),
1561
1665
  ),
1562
1666
  ),
@@ -1604,7 +1708,7 @@ class AssignmentService(t.Generic[_ClientT]):
1604
1708
  resp,
1605
1709
  (
1606
1710
  (
1607
- (400, 409, 401, 403, 404, "5XX"),
1711
+ (400, 409, 401, 403, 404, 429, "5XX"),
1608
1712
  utils.unpack_union(AnyError),
1609
1713
  ),
1610
1714
  ),
@@ -1640,11 +1744,11 @@ class AssignmentService(t.Generic[_ClientT]):
1640
1744
  )
1641
1745
  params = extra_parameters or {}
1642
1746
 
1747
+ data, files = utils.to_multipart(utils.to_dict(multipart_data))
1748
+
1643
1749
  with self.__client as client:
1644
1750
  resp = client.http.patch(
1645
- url=url,
1646
- files=utils.to_multipart(utils.to_dict(multipart_data)),
1647
- params=params,
1751
+ url=url, files=files, data=data, params=params
1648
1752
  )
1649
1753
  utils.log_warnings(resp)
1650
1754
 
@@ -1663,7 +1767,7 @@ class AssignmentService(t.Generic[_ClientT]):
1663
1767
  resp,
1664
1768
  (
1665
1769
  (
1666
- (400, 409, 401, 403, 404, "5XX"),
1770
+ (400, 409, 401, 403, 404, 429, "5XX"),
1667
1771
  utils.unpack_union(AnyError),
1668
1772
  ),
1669
1773
  ),
@@ -1713,11 +1817,11 @@ class AssignmentService(t.Generic[_ClientT]):
1713
1817
  lambda val: params.__setitem__("author_id", val)
1714
1818
  )
1715
1819
 
1820
+ data, files = utils.to_multipart(utils.to_dict(multipart_data))
1821
+
1716
1822
  with self.__client as client:
1717
1823
  resp = client.http.post(
1718
- url=url,
1719
- files=utils.to_multipart(utils.to_dict(multipart_data)),
1720
- params=params,
1824
+ url=url, files=files, data=data, params=params
1721
1825
  )
1722
1826
  utils.log_warnings(resp)
1723
1827
 
@@ -1736,7 +1840,7 @@ class AssignmentService(t.Generic[_ClientT]):
1736
1840
  resp,
1737
1841
  (
1738
1842
  (
1739
- (400, 409, 401, 403, 404, "5XX"),
1843
+ (400, 409, 401, 403, 404, 429, "5XX"),
1740
1844
  utils.unpack_union(AnyError),
1741
1845
  ),
1742
1846
  ),