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.
- {codegrade-16.1.60 → codegrade-16.1.63}/PKG-INFO +1 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/__init__.py +2 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_convert.py +11 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_mapping.py +3 -3
- codegrade-16.1.63/cg_request_args/_set.py +34 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_swaggerize.py +68 -42
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/__init__.py +1 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/course.py +2 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/file.py +56 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/oauth_provider.py +72 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/permission.py +2 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/task_result.py +1 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/user.py +53 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/client.py +2 -2
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/__init__.py +7 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/all_site_settings.py +26 -16
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment.py +10 -10
- codegrade-16.1.63/codegrade/models/code_editor_start_on_assignment_description_setting.py +57 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/frontend_site_settings.py +52 -12
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_assignment_data.py +4 -4
- codegrade-16.1.63/codegrade/models/removed_permissions.py +56 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_login_link_login.py +3 -3
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_user_login.py +3 -3
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_user_register.py +3 -3
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/saml2_provider_json.py +1 -1
- codegrade-16.1.63/codegrade/models/session_restriction_context.py +53 -0
- codegrade-16.1.63/codegrade/models/session_restriction_data.py +76 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/site_setting_input.py +8 -0
- codegrade-16.1.63/codegrade/models/student_view_enabled_setting.py +56 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/submission_validator_input_data.py +2 -2
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_suite_auto_test_base_data.py +1 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_suite_auto_test_data.py +3 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_login_response.py +3 -3
- {codegrade-16.1.60 → codegrade-16.1.63}/pyproject.toml +1 -1
- {codegrade-16.1.60 → codegrade-16.1.63}/setup.py +1 -1
- codegrade-16.1.60/codegrade/models/session_restrictions.py +0 -58
- {codegrade-16.1.60 → codegrade-16.1.63}/README.md +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_dt_utils/__init__.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/__init__.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_just.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_maybe.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_nothing.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/_type_helpers.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/cg_maybe_plugin.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_maybe/utils.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_any_value.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_enum.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_form.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_lazy.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_list.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_literal.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_multipart.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_nullable.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_parse_utils.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_query.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_rich_value.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_swagger_utils.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/_utils.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/exceptions.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/cg_request_args/request_args_plugin.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/__init__.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/about.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/assignment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/auto_test.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/comment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/course_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/git_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/group.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/group_set.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/login_link.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/lti.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/notification.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/oauth_token.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/plagiarism.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/role.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/saml.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/section.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/site_settings.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/snippet.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/sso_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/submission.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/tenant.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/transaction.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/user_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/_api/webhook.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/errors.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_base_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_saml_ui_logo_info.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/about.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/abstract_role.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/add_users_section_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/all_auto_test_results.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/always_update_pii_with_lti_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/analytics_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_error.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/api_codes.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_anonymization_algo.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_description_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_done_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_export_column.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_feedback.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_grader.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_kind.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_login_link.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_point_decimals_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_points_grading_settings.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_section_timeframe.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_state_enum.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_submission_mode.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_template.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/assignment_timeframes.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_fixture.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_global_setup_output.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_global_setup_script.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_quality_comment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_run.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_runner.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_runner_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_set.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_log_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_result_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_step_validation_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_suite.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_about.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_auto_test_quality_comment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_comment_reply.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_course_coupon.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_directory.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_error.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_file.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lms_capabilities.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti1p1_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti1p3_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_lti_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_notification.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_release_info.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_rubric_item.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/base_tenant_coupon.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/bulk_enroll_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/cg_ignore_version.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/change_user_role_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/check_points_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/clone_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_editor_output_viewer_title_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_base_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/code_quality_penalties.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/column_range.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply_edit.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_reply_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/comment_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/community_library_publishing_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/community_library_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/connect_repository_git_provider_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/copy_auto_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/copy_rubric_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_data_parser.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_with_code.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/coupon_without_code.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_bulk_enroll_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_coupon.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_coupon_usage.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_of_course_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_perm_map.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_permission.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_register_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_registration_link.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_role.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division_connection.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_section_division_user.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_snippet.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/course_statistics_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_assignment_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_auto_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_comment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_comment_reply_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_division_section_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_group_group_set_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_group_set_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_lti_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_proxy_submission_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_repository_git_provider_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_role_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_section_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_snippet_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_snippet_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_sso_provider_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/create_tenant_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/csv_large_file_limit_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/currency.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/custom_output_log_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_course_ta_role_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_course_teacher_role_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/default_submission_page_tab_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/deleted_comment_reply.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/deletion_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/directory_with_children.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/disabled_setting_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/display_grades_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/editor_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_notification_types.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_students_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/email_users_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/exam_login_max_length_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_csv_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/export_assignment_files_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_auto_test_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_auto_test_run.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course_registration_link.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_course_section.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_group.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_job.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_tenant.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_transaction.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_user.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extended_work.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extract_file_tree_directory.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/extract_file_tree_file.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/failed_to_send_email_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_with_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/feedback_without_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_deletion.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_rule.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_rule_input_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_tree.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/file_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixed_availability.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixed_grade_availability.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fixture_like.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/fraction.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_comment_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/general_feedback_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_repositories_page.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_repository_like.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/git_user_info.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/global_perm_map.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/global_permission.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grade_history.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grade_origin.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/group_set.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/groups_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/has_unread_notifcation_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/health_information.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_code_editor_filetree_controls_with_only_quiz_steps_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_empty_rubric_row_description_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hide_no_deadline_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/hubspot_syncing_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/ignore_handling.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/ignored_files_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/import_into_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/import_into_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_comment_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_feedback_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_group_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_io_cases_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/invalid_options_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_base_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_input_case.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_option.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_step_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/io_test_step_log_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/job.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_create_auto_test.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_create_tenant.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_patch_auto_test.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_base_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/junit_test_log_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/legacy_features.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/line_range.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/linter_comment.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/linters_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lms_capabilities.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/login_token_before_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/login_user_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/logout_response.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/logout_user_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p1_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p1_provider_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_nonce_and_state_validation_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_prevent_nonce_reuse_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_provider_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_document_update_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_file_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_large_upload_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_lines_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_normal_upload_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_number_of_files_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/max_user_setting_amount_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/min_password_score_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/mirror_file_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/missing_cookie_error.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/missing_file.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/name_and_email_from_nrps_only_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/no_permissions.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/non_present_preference.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_poll_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_reasons.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notification_setting_option.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/notifications_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/oauth_provider.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/oauth_token.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/option.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/options_input_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/parse_api_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_all_notification_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_auto_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_comment_reply_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_grader_submission_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_notification_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_provider_lti_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_role_tenant_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_section_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_settings_tenant_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_site_settings_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_snippet_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_snippet_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_submission_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_tenant_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/patch_user_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/pearson_templates_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/permission_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_case.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/plagiarism_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/post_oauth_token_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/present_preference.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/proxy.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_description_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_enroll_link_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_price_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_price_tenant_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/put_rubric_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_comment_severity.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_test_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/quality_test_log_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_user_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/register_user_with_link_course_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/release_info.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/release_message_max_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rename_group_group_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/render_html_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/reset_token_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_get_auto_test_get.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/result_data_post_section_create_division.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/retry_group_submission_grade_passback_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/role_as_json_with_perms.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/root_file_trees_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_description_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_item.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_item_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_lock_reason.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rubrics_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/rule_type.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_extra.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_input_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/run_program_log.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/saml_ui_info.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/send_registration_email_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/server_time_sync_interval_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/setting_token_time_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/setup_oauth_result.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/simple_submission_navigate_to_latest_editor_session_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/site_email_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/snippet.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/started_transaction.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/student_payment_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/task_result_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tax_behavior.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_usage.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_with_code.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_coupon_without_code.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_course_statistics.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_of_tenant_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_permissions.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_price.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/tenant_statistics.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/timed_availability.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/timeframe_like.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/token_revoked_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/transaction.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/transaction_state.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/types.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/update_set_auto_test_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/upload_submission_assignment_data.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_course.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_info_with_role.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_input.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/user_without_group.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/weak_password_exception.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/weak_password_feedback.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_base.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_origin.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_item.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_result_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/parsers.py +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/py.typed +0 -0
- {codegrade-16.1.60 → codegrade-16.1.63}/codegrade/utils.py +0 -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
|
|
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
|
|
213
|
-
self,
|
|
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[[
|
|
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:
|
|
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.'
|
|
64
|
-
func.__name__
|
|
65
|
-
)
|
|
72
|
+
f'The function {func.__name__} was already registered.'
|
|
66
73
|
)
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
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[
|
|
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
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
144
|
+
query_parser = BaseFixedMapping.from_function_parameters_list(
|
|
145
|
+
query_params,
|
|
146
|
+
from_query=True,
|
|
147
|
+
)
|
|
122
148
|
|
|
123
|
-
|
|
124
|
-
_parser = query_parser
|
|
149
|
+
log_msg = f'{what} parameters processed'
|
|
125
150
|
|
|
126
151
|
@functools.wraps(func)
|
|
127
|
-
def __inner(*args:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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'
|
|
158
|
+
kwargs[f'{prefix}{key[len(prefix_to_add):]}'] = value
|
|
133
159
|
return func(*args, **kwargs)
|
|
134
160
|
|
|
135
|
-
return
|
|
161
|
+
return __inner, query_parser
|
|
@@ -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 \"
|
|
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
|
|
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.
|
|
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.
|
|
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 .
|
|
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,
|