codegrade 16.1.38__tar.gz → 16.1.40__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.38 → codegrade-16.1.40}/PKG-INFO +1 -1
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_base.py +9 -4
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/__init__.py +1 -1
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/client.py +2 -2
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/__init__.py +5 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/all_site_settings.py +26 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment.py +10 -0
- codegrade-16.1.40/codegrade/models/assignment_submission_mode.py +10 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/frontend_site_settings.py +30 -0
- codegrade-16.1.40/codegrade/models/lti_launch_data_logging_setting.py +56 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_assignment_data.py +16 -4
- codegrade-16.1.40/codegrade/models/simple_submission_mode_enabled_setting.py +57 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/site_setting_input.py +8 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/update_peer_feedback_settings_assignment_data.py +2 -2
- {codegrade-16.1.38 → codegrade-16.1.40}/pyproject.toml +1 -1
- {codegrade-16.1.38 → codegrade-16.1.40}/setup.py +1 -1
- {codegrade-16.1.38 → codegrade-16.1.40}/README.md +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_dt_utils/__init__.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_dt_utils/py.typed +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/__init__.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/_just.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/_maybe.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/_nothing.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/_type_helpers.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/cg_maybe_plugin.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/py.typed +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_maybe/utils.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/__init__.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_any_value.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_convert.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_enum.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_form.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_lazy.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_list.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_literal.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_mapping.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_multipart.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_nullable.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_parse_utils.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_query.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_rich_value.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_swagger_utils.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_swaggerize.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/_utils.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/exceptions.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/py.typed +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/cg_request_args/request_args_plugin.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/__init__.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/about.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/assignment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/auto_test.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/comment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/course.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/course_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/file.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/git_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/group.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/group_set.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/login_link.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/lti.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/notification.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/oauth_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/oauth_token.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/permission.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/plagiarism.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/role.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/section.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/site_settings.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/snippet.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/sso_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/submission.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/task_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/tenant.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/transaction.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/user.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/user_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/_api/webhook.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/errors.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/_base_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/_saml_ui_logo_info.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/about.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/abstract_role.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/add_users_section_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/all_auto_test_results.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/any_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/any_error.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/api_codes.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_anonymization_algo.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_description_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_done_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_export_column.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_feedback.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_grader.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_kind.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_login_link.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_point_decimals_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_points_grading_settings.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_section_timeframe.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_state_enum.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_template.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/assignment_timeframes.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_fixture.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_global_setup_output.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_global_setup_script.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_quality_comment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_result_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_run.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_runner.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_runner_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_set.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_base_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_log_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_result_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_step_validation_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_suite.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_about.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_auto_test_quality_comment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_comment_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_comment_reply.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_course_coupon.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_directory.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_error.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_file.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_lms_capabilities.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_lti1p1_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_lti1p3_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_lti_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_notification.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_release_info.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_rubric_item.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/base_tenant_coupon.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/bulk_enroll_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/cg_ignore_version.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/change_user_role_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/check_points_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/check_points_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/check_points_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/check_points_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/clone_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_base_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/code_quality_penalties.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/column_range.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/comment_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/comment_reply.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/comment_reply_edit.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/comment_reply_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/comment_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/community_library_publishing_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/community_library_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/connect_repository_git_provider_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/copy_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/copy_rubric_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/coupon_data_parser.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/coupon_with_code.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/coupon_without_code.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_bulk_enroll_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_coupon.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_coupon_usage.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_of_course_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_perm_map.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_permission.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_register_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_register_response.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_registration_link.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_role.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_section.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_section_division.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_section_division_connection.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_section_division_user.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_snippet.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/course_statistics_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_assignment_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_comment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_comment_reply_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_division_section_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_group_group_set_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_group_set_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_lti_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_proxy_submission_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_repository_git_provider_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_role_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_section_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_snippet_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_snippet_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_sso_provider_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/create_tenant_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/csv_large_file_limit_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/currency.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/custom_output_log_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/deleted_comment_reply.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/deletion_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/directory_with_children.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/disabled_setting_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/editor_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/email_notification_types.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/email_students_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/email_users_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/exam_login_max_length_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/export_assignment_csv_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/export_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/export_assignment_files_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_auto_test_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_auto_test_run.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_course.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_course_registration_link.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_course_section.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_group.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_job.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_tenant.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_transaction.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_user.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extended_work.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extract_file_tree_directory.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/extract_file_tree_file.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/failed_to_send_email_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/feedback_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/feedback_with_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/feedback_without_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/file_deletion.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/file_rule.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/file_rule_input_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/file_tree.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/file_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/fixed_availability.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/fixed_grade_availability.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/fixture_like.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/fraction.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/general_feedback_comment_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/general_feedback_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/git_repositories_page.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/git_repository_like.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/git_user_info.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/global_perm_map.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/global_permission.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/grade_history.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/grade_origin.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/group.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/group_set.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/groups_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/has_unread_notifcation_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/health_information.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/ignore_handling.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/ignored_files_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/import_into_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/import_into_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/inline_feedback_comment_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/inline_feedback_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/invalid_group_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/invalid_io_cases_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/invalid_options_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_base_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_input_case.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_option.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_step_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/io_test_step_log_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/job.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/json_create_auto_test.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/json_create_tenant.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/json_patch_auto_test.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_base_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/junit_test_log_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/legacy_features.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/line_range.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/linter_comment.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/linters_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lms_capabilities.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/login_token_before_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/login_user_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/logout_response.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/logout_user_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p1_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p1_provider_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p3_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p3_provider_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti_provider_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_document_update_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_file_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_large_upload_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_lines_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_mirror_file_age_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_normal_upload_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_number_of_files_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/max_user_setting_amount_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/min_password_score_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/mirror_file_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/missing_cookie_error.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/missing_file.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/no_permissions.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/non_present_preference.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_poll_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_reasons.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notification_setting_option.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/notifications_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/oauth_provider.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/oauth_token.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/option.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/options_input_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/parse_api_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_all_notification_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_comment_reply_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_grader_submission_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_notification_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_provider_lti_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_role_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_role_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_role_tenant_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_section_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_settings_tenant_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_site_settings_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_snippet_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_snippet_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_submission_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_tenant_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/patch_user_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/permission_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_case.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_run.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/plagiarism_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/post_oauth_token_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/present_preference.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/proxy.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/put_description_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/put_enroll_link_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/put_price_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/put_price_tenant_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/put_rubric_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/quality_comment_severity.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/quality_test_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/quality_test_log_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/register_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/register_user_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/register_user_with_link_course_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/release_info.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/release_message_max_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rename_group_group_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/render_html_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/reset_token_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_get_auto_test_get.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_post_login_link_login.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_post_section_create_division.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_post_user_login.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/result_data_post_user_register.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/role_as_json_with_perms.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/root_file_trees_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_description_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_item.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_item_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_lock_reason.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_row_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rubrics_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/rule_type.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/run_program_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/run_program_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/run_program_extra.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/run_program_input_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/run_program_log.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/saml2_provider_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/saml_ui_info.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/send_registration_email_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/server_time_sync_interval_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/setting_token_time_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/setup_oauth_result.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/site_email_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/snippet.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/start_payment_course_price_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/started_transaction.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/student_payment_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/submission_validator_input_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/submissions_page_v2_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/task_result_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tax_behavior.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_coupon.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_coupon_usage.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_coupon_with_code.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_coupon_without_code.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_course_statistics.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_of_tenant_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_permissions.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_price.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/tenant_statistics.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/timed_availability.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/timeframe_like.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/token_revoked_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/transaction.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/transaction_state.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/types.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/update_set_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/update_suite_auto_test_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/upload_submission_assignment_data.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/user.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/user_course.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/user_info_with_role.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/user_input.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/user_without_group.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/weak_password_exception.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/weak_password_feedback.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/webhook_base.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/work.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/work_origin.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/work_rubric_item.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/work_rubric_result_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/parsers.py +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/py.typed +0 -0
- {codegrade-16.1.38 → codegrade-16.1.40}/codegrade/utils.py +0 -0
|
@@ -210,10 +210,15 @@ class Parser(t.Generic[_T_COV]):
|
|
|
210
210
|
|
|
211
211
|
:returns: The parsed data.
|
|
212
212
|
"""
|
|
213
|
-
if
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
if isinstance(json, dict):
|
|
214
|
+
to_log: t.Dict[str, object] = {}
|
|
215
|
+
for key, value in json.items():
|
|
216
|
+
if isinstance(key, str) and 'pass' in key.lower():
|
|
217
|
+
to_log[key] = '<PASSWORD>'
|
|
218
|
+
elif log_replacer is None:
|
|
219
|
+
to_log[key] = value
|
|
220
|
+
else:
|
|
221
|
+
to_log[key] = log_replacer(key, value)
|
|
217
222
|
logger.info(msg, request_data=to_log)
|
|
218
223
|
else:
|
|
219
224
|
# The replacers are used for top level objects, in this case it is
|
|
@@ -526,7 +526,7 @@ class Client(_BaseClient):
|
|
|
526
526
|
return httpx.Client(
|
|
527
527
|
base_url=self.base_url,
|
|
528
528
|
headers={
|
|
529
|
-
"User-Agent": "CodeGradeAPI/16.1.
|
|
529
|
+
"User-Agent": "CodeGradeAPI/16.1.40",
|
|
530
530
|
},
|
|
531
531
|
)
|
|
532
532
|
|
|
@@ -545,7 +545,7 @@ class AuthenticatedClient(_BaseClient):
|
|
|
545
545
|
base_url=self.base_url,
|
|
546
546
|
headers={
|
|
547
547
|
"Authorization": f"Bearer {self.token}",
|
|
548
|
-
"User-Agent": "CodeGradeAPI/16.1.
|
|
548
|
+
"User-Agent": "CodeGradeAPI/16.1.40",
|
|
549
549
|
},
|
|
550
550
|
)
|
|
551
551
|
|
|
@@ -60,6 +60,7 @@ from .assignment_point_decimals_setting import AssignmentPointDecimalsSetting
|
|
|
60
60
|
from .assignment_points_grading_settings import AssignmentPointsGradingSettings
|
|
61
61
|
from .assignment_section_timeframe import AssignmentSectionTimeframe
|
|
62
62
|
from .assignment_state_enum import AssignmentStateEnum
|
|
63
|
+
from .assignment_submission_mode import AssignmentSubmissionMode
|
|
63
64
|
from .assignment_template import AssignmentTemplate
|
|
64
65
|
from .assignment_timeframes import AssignmentTimeframes
|
|
65
66
|
from .at_image_caching_enabled_setting import AtImageCachingEnabledSetting
|
|
@@ -396,6 +397,7 @@ from .lti_enabled_setting import LtiEnabledSetting
|
|
|
396
397
|
from .lti_first_launch_content_id_enabled_setting import (
|
|
397
398
|
LtiFirstLaunchContentIdEnabledSetting,
|
|
398
399
|
)
|
|
400
|
+
from .lti_launch_data_logging_setting import LtiLaunchDataLoggingSetting
|
|
399
401
|
from .lti_lock_date_copying_enabled_setting import (
|
|
400
402
|
LtiLockDateCopyingEnabledSetting,
|
|
401
403
|
)
|
|
@@ -607,6 +609,9 @@ from .server_time_diff_tolerance_setting import ServerTimeDiffToleranceSetting
|
|
|
607
609
|
from .server_time_sync_interval_setting import ServerTimeSyncIntervalSetting
|
|
608
610
|
from .setting_token_time_setting import SettingTokenTimeSetting
|
|
609
611
|
from .setup_oauth_result import SetupOAuthResult
|
|
612
|
+
from .simple_submission_mode_enabled_setting import (
|
|
613
|
+
SimpleSubmissionModeEnabledSetting,
|
|
614
|
+
)
|
|
610
615
|
from .site_email_setting import SiteEmailSetting
|
|
611
616
|
from .site_setting_input import SiteSettingInput
|
|
612
617
|
from .snippet import Snippet
|
|
@@ -125,6 +125,10 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
125
125
|
#: then use to import an item from the community library. This feature
|
|
126
126
|
#: enables that we check for this content id in the launch parameters.
|
|
127
127
|
lti_first_launch_content_id_enabled: Maybe["bool"] = Nothing
|
|
128
|
+
#: Enable logging of LTI launch data. NEVER ENABLE THIS SITE-WIDE, only for
|
|
129
|
+
#: a single tenant, and disable this feature after you've gotten the data
|
|
130
|
+
#: you need.
|
|
131
|
+
lti_launch_data_logging: Maybe["bool"] = Nothing
|
|
128
132
|
|
|
129
133
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
130
134
|
|
|
@@ -427,6 +431,15 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
427
431
|
" check for this content id in the launch parameters."
|
|
428
432
|
),
|
|
429
433
|
),
|
|
434
|
+
rqa.OptionalArgument(
|
|
435
|
+
"LTI_LAUNCH_DATA_LOGGING",
|
|
436
|
+
rqa.SimpleValue.bool,
|
|
437
|
+
doc=(
|
|
438
|
+
"Enable logging of LTI launch data. NEVER ENABLE THIS"
|
|
439
|
+
" SITE-WIDE, only for a single tenant, and disable"
|
|
440
|
+
" this feature after you've gotten the data you need."
|
|
441
|
+
),
|
|
442
|
+
),
|
|
430
443
|
)
|
|
431
444
|
).use_readable_describe(True)
|
|
432
445
|
)
|
|
@@ -526,6 +539,9 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
526
539
|
self.lti_first_launch_content_id_enabled = maybe_from_nullable(
|
|
527
540
|
self.lti_first_launch_content_id_enabled
|
|
528
541
|
)
|
|
542
|
+
self.lti_launch_data_logging = maybe_from_nullable(
|
|
543
|
+
self.lti_launch_data_logging
|
|
544
|
+
)
|
|
529
545
|
|
|
530
546
|
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
531
547
|
res: t.Dict[str, t.Any] = {}
|
|
@@ -829,6 +845,10 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
829
845
|
res["SUBMISSIONS_PAGE_V2_ENABLED"] = to_dict(
|
|
830
846
|
self.submissions_page_v2_enabled.value
|
|
831
847
|
)
|
|
848
|
+
if self.simple_submission_mode_enabled.is_just:
|
|
849
|
+
res["SIMPLE_SUBMISSION_MODE_ENABLED"] = to_dict(
|
|
850
|
+
self.simple_submission_mode_enabled.value
|
|
851
|
+
)
|
|
832
852
|
if self.auto_test_heartbeat_interval.is_just:
|
|
833
853
|
res["AUTO_TEST_HEARTBEAT_INTERVAL"] = to_dict(
|
|
834
854
|
self.auto_test_heartbeat_interval.value
|
|
@@ -955,6 +975,10 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
955
975
|
res["LTI_FIRST_LAUNCH_CONTENT_ID_ENABLED"] = to_dict(
|
|
956
976
|
self.lti_first_launch_content_id_enabled.value
|
|
957
977
|
)
|
|
978
|
+
if self.lti_launch_data_logging.is_just:
|
|
979
|
+
res["LTI_LAUNCH_DATA_LOGGING"] = to_dict(
|
|
980
|
+
self.lti_launch_data_logging.value
|
|
981
|
+
)
|
|
958
982
|
return res
|
|
959
983
|
|
|
960
984
|
@classmethod
|
|
@@ -1044,6 +1068,7 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
1044
1068
|
submissions_per_page_enabled=parsed.SUBMISSIONS_PER_PAGE_ENABLED,
|
|
1045
1069
|
inline_rubric_viewer_enabled=parsed.INLINE_RUBRIC_VIEWER_ENABLED,
|
|
1046
1070
|
submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
|
|
1071
|
+
simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
|
|
1047
1072
|
auto_test_heartbeat_interval=parsed.AUTO_TEST_HEARTBEAT_INTERVAL,
|
|
1048
1073
|
auto_test_heartbeat_max_missed=parsed.AUTO_TEST_HEARTBEAT_MAX_MISSED,
|
|
1049
1074
|
auto_test_max_jobs_per_runner=parsed.AUTO_TEST_MAX_JOBS_PER_RUNNER,
|
|
@@ -1077,6 +1102,7 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
1077
1102
|
lti_1p3_system_role_from_context_role=parsed.LTI_1P3_SYSTEM_ROLE_FROM_CONTEXT_ROLE,
|
|
1078
1103
|
lti_1p3_parse_most_privileged_role=parsed.LTI_1P3_PARSE_MOST_PRIVILEGED_ROLE,
|
|
1079
1104
|
lti_first_launch_content_id_enabled=parsed.LTI_FIRST_LAUNCH_CONTENT_ID_ENABLED,
|
|
1105
|
+
lti_launch_data_logging=parsed.LTI_LAUNCH_DATA_LOGGING,
|
|
1080
1106
|
)
|
|
1081
1107
|
res.raw_data = d
|
|
1082
1108
|
return res
|
|
@@ -18,6 +18,7 @@ from .assignment_percentage_grading_settings import (
|
|
|
18
18
|
AssignmentPercentageGradingSettings,
|
|
19
19
|
)
|
|
20
20
|
from .assignment_points_grading_settings import AssignmentPointsGradingSettings
|
|
21
|
+
from .assignment_submission_mode import AssignmentSubmissionMode
|
|
21
22
|
from .cg_ignore_version import CGIgnoreVersion
|
|
22
23
|
from .fixed_grade_availability import FixedGradeAvailability
|
|
23
24
|
from .group_set import GroupSet
|
|
@@ -141,6 +142,8 @@ class Assignment(TimeframeLike):
|
|
|
141
142
|
grade_availability: "FixedGradeAvailability"
|
|
142
143
|
#: Does this assignment have multiple timeframes.
|
|
143
144
|
has_multiple_timeframes: "bool"
|
|
145
|
+
#: Which submission mode is set for the assignment.
|
|
146
|
+
submission_mode: "AssignmentSubmissionMode"
|
|
144
147
|
|
|
145
148
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
146
149
|
|
|
@@ -440,6 +443,11 @@ class Assignment(TimeframeLike):
|
|
|
440
443
|
rqa.SimpleValue.bool,
|
|
441
444
|
doc="Does this assignment have multiple timeframes.",
|
|
442
445
|
),
|
|
446
|
+
rqa.RequiredArgument(
|
|
447
|
+
"submission_mode",
|
|
448
|
+
rqa.EnumValue(AssignmentSubmissionMode),
|
|
449
|
+
doc="Which submission mode is set for the assignment.",
|
|
450
|
+
),
|
|
443
451
|
)
|
|
444
452
|
).use_readable_describe(True)
|
|
445
453
|
)
|
|
@@ -484,6 +492,7 @@ class Assignment(TimeframeLike):
|
|
|
484
492
|
"file_to_load_first": to_dict(self.file_to_load_first),
|
|
485
493
|
"grade_availability": to_dict(self.grade_availability),
|
|
486
494
|
"has_multiple_timeframes": to_dict(self.has_multiple_timeframes),
|
|
495
|
+
"submission_mode": to_dict(self.submission_mode),
|
|
487
496
|
"availability": to_dict(self.availability),
|
|
488
497
|
"deadline": to_dict(self.deadline),
|
|
489
498
|
"lock_date": to_dict(self.lock_date),
|
|
@@ -533,6 +542,7 @@ class Assignment(TimeframeLike):
|
|
|
533
542
|
file_to_load_first=parsed.file_to_load_first,
|
|
534
543
|
grade_availability=parsed.grade_availability,
|
|
535
544
|
has_multiple_timeframes=parsed.has_multiple_timeframes,
|
|
545
|
+
submission_mode=parsed.submission_mode,
|
|
536
546
|
availability=parsed.availability,
|
|
537
547
|
deadline=parsed.deadline,
|
|
538
548
|
lock_date=parsed.lock_date,
|
|
@@ -269,6 +269,14 @@ class FrontendSiteSettings:
|
|
|
269
269
|
#: Whether the new component for the submissions page is loaded instead of
|
|
270
270
|
#: the old one.
|
|
271
271
|
submissions_page_v2_enabled: Maybe["bool"] = Nothing
|
|
272
|
+
#: An assignment with a simplified submission mode will allow only
|
|
273
|
+
#: submissions made with the code editor. This will launch students
|
|
274
|
+
#: directly in the code editor if they have not created a session yet, to
|
|
275
|
+
#: their latest session if there is no submission, or to their latest
|
|
276
|
+
#: submission if available. Submitting via file upload or via Git, Group
|
|
277
|
+
#: assignments, and hand in requirements are not available with the
|
|
278
|
+
#: simplified submission mode enabled.
|
|
279
|
+
simple_submission_mode_enabled: Maybe["bool"] = Nothing
|
|
272
280
|
|
|
273
281
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
274
282
|
|
|
@@ -914,6 +922,20 @@ class FrontendSiteSettings:
|
|
|
914
922
|
" loaded instead of the old one."
|
|
915
923
|
),
|
|
916
924
|
),
|
|
925
|
+
rqa.OptionalArgument(
|
|
926
|
+
"SIMPLE_SUBMISSION_MODE_ENABLED",
|
|
927
|
+
rqa.SimpleValue.bool,
|
|
928
|
+
doc=(
|
|
929
|
+
"An assignment with a simplified submission mode will"
|
|
930
|
+
" allow only submissions made with the code editor. This"
|
|
931
|
+
" will launch students directly in the code editor if they"
|
|
932
|
+
" have not created a session yet, to their latest session"
|
|
933
|
+
" if there is no submission, or to their latest submission"
|
|
934
|
+
" if available. Submitting via file upload or via Git,"
|
|
935
|
+
" Group assignments, and hand in requirements are not"
|
|
936
|
+
" available with the simplified submission mode enabled."
|
|
937
|
+
),
|
|
938
|
+
),
|
|
917
939
|
).use_readable_describe(True)
|
|
918
940
|
)
|
|
919
941
|
|
|
@@ -1143,6 +1165,9 @@ class FrontendSiteSettings:
|
|
|
1143
1165
|
self.submissions_page_v2_enabled = maybe_from_nullable(
|
|
1144
1166
|
self.submissions_page_v2_enabled
|
|
1145
1167
|
)
|
|
1168
|
+
self.simple_submission_mode_enabled = maybe_from_nullable(
|
|
1169
|
+
self.simple_submission_mode_enabled
|
|
1170
|
+
)
|
|
1146
1171
|
|
|
1147
1172
|
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
1148
1173
|
res: t.Dict[str, t.Any] = {}
|
|
@@ -1446,6 +1471,10 @@ class FrontendSiteSettings:
|
|
|
1446
1471
|
res["SUBMISSIONS_PAGE_V2_ENABLED"] = to_dict(
|
|
1447
1472
|
self.submissions_page_v2_enabled.value
|
|
1448
1473
|
)
|
|
1474
|
+
if self.simple_submission_mode_enabled.is_just:
|
|
1475
|
+
res["SIMPLE_SUBMISSION_MODE_ENABLED"] = to_dict(
|
|
1476
|
+
self.simple_submission_mode_enabled.value
|
|
1477
|
+
)
|
|
1449
1478
|
return res
|
|
1450
1479
|
|
|
1451
1480
|
@classmethod
|
|
@@ -1535,6 +1564,7 @@ class FrontendSiteSettings:
|
|
|
1535
1564
|
submissions_per_page_enabled=parsed.SUBMISSIONS_PER_PAGE_ENABLED,
|
|
1536
1565
|
inline_rubric_viewer_enabled=parsed.INLINE_RUBRIC_VIEWER_ENABLED,
|
|
1537
1566
|
submissions_page_v2_enabled=parsed.SUBMISSIONS_PAGE_V2_ENABLED,
|
|
1567
|
+
simple_submission_mode_enabled=parsed.SIMPLE_SUBMISSION_MODE_ENABLED,
|
|
1538
1568
|
)
|
|
1539
1569
|
res.raw_data = d
|
|
1540
1570
|
return res
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""The module that defines the ``LtiLaunchDataLoggingSetting`` model.
|
|
2
|
+
|
|
3
|
+
SPDX-License-Identifier: AGPL-3.0-only OR BSD-3-Clause-Clear
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import typing as t
|
|
7
|
+
from dataclasses import dataclass, field
|
|
8
|
+
|
|
9
|
+
import cg_request_args as rqa
|
|
10
|
+
|
|
11
|
+
from ..utils import to_dict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class LtiLaunchDataLoggingSetting:
|
|
16
|
+
""" """
|
|
17
|
+
|
|
18
|
+
name: "t.Literal['LTI_LAUNCH_DATA_LOGGING']"
|
|
19
|
+
value: "t.Optional[bool]"
|
|
20
|
+
|
|
21
|
+
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
22
|
+
|
|
23
|
+
data_parser: t.ClassVar = rqa.Lazy(
|
|
24
|
+
lambda: rqa.FixedMapping(
|
|
25
|
+
rqa.RequiredArgument(
|
|
26
|
+
"name",
|
|
27
|
+
rqa.StringEnum("LTI_LAUNCH_DATA_LOGGING"),
|
|
28
|
+
doc="",
|
|
29
|
+
),
|
|
30
|
+
rqa.RequiredArgument(
|
|
31
|
+
"value",
|
|
32
|
+
rqa.Nullable(rqa.SimpleValue.bool),
|
|
33
|
+
doc="",
|
|
34
|
+
),
|
|
35
|
+
).use_readable_describe(True)
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
39
|
+
res: t.Dict[str, t.Any] = {
|
|
40
|
+
"name": to_dict(self.name),
|
|
41
|
+
"value": to_dict(self.value),
|
|
42
|
+
}
|
|
43
|
+
return res
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_dict(
|
|
47
|
+
cls: t.Type["LtiLaunchDataLoggingSetting"], d: t.Dict[str, t.Any]
|
|
48
|
+
) -> "LtiLaunchDataLoggingSetting":
|
|
49
|
+
parsed = cls.data_parser.try_parse(d)
|
|
50
|
+
|
|
51
|
+
res = cls(
|
|
52
|
+
name=parsed.name,
|
|
53
|
+
value=parsed.value,
|
|
54
|
+
)
|
|
55
|
+
res.raw_data = d
|
|
56
|
+
return res
|
|
@@ -21,6 +21,7 @@ from .assignment_percentage_grading_settings import (
|
|
|
21
21
|
)
|
|
22
22
|
from .assignment_points_grading_settings import AssignmentPointsGradingSettings
|
|
23
23
|
from .assignment_state_enum import AssignmentStateEnum
|
|
24
|
+
from .assignment_submission_mode import AssignmentSubmissionMode
|
|
24
25
|
from .fixed_availability import FixedAvailability
|
|
25
26
|
from .fixed_grade_availability import FixedGradeAvailability
|
|
26
27
|
from .submission_validator_input_data import SubmissionValidatorInputData
|
|
@@ -77,7 +78,7 @@ class PatchAssignmentData:
|
|
|
77
78
|
#: used when `reminder_time` is `null`.
|
|
78
79
|
done_type: Maybe["t.Optional[AssignmentDoneType]"] = Nothing
|
|
79
80
|
#: At what time should we send the reminder emails to the graders. This
|
|
80
|
-
#: value is not used
|
|
81
|
+
#: value is not used when `done_type` is `null`.
|
|
81
82
|
reminder_time: Maybe["t.Optional[datetime.datetime]"] = Nothing
|
|
82
83
|
#: A list of emails that should receive an email when grading is done. This
|
|
83
84
|
#: value has no effect when `done_type` is set to `null`.
|
|
@@ -86,7 +87,7 @@ class PatchAssignmentData:
|
|
|
86
87
|
anonymized_grading: Maybe[
|
|
87
88
|
"t.Optional[AssignmentAnonymizationAlgo]"
|
|
88
89
|
] = Nothing
|
|
89
|
-
#: The file we should load first in an
|
|
90
|
+
#: The file we should load first in an assignment
|
|
90
91
|
file_to_load_first: Maybe["t.Optional[str]"] = Nothing
|
|
91
92
|
#: Grading settings of this assignment.
|
|
92
93
|
grading: Maybe[
|
|
@@ -99,6 +100,8 @@ class PatchAssignmentData:
|
|
|
99
100
|
] = Nothing
|
|
100
101
|
#: The grade availability of this assignment.
|
|
101
102
|
grade_availability: Maybe["FixedGradeAvailability"] = Nothing
|
|
103
|
+
#: The submission mode of this assignment
|
|
104
|
+
submission_mode: Maybe["AssignmentSubmissionMode"] = Nothing
|
|
102
105
|
|
|
103
106
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
104
107
|
|
|
@@ -238,7 +241,7 @@ class PatchAssignmentData:
|
|
|
238
241
|
rqa.Nullable(rqa.RichValue.DateTime),
|
|
239
242
|
doc=(
|
|
240
243
|
"At what time should we send the reminder emails to the"
|
|
241
|
-
" graders. This value is not used
|
|
244
|
+
" graders. This value is not used when `done_type` is"
|
|
242
245
|
" `null`."
|
|
243
246
|
),
|
|
244
247
|
),
|
|
@@ -261,7 +264,7 @@ class PatchAssignmentData:
|
|
|
261
264
|
rqa.OptionalArgument(
|
|
262
265
|
"file_to_load_first",
|
|
263
266
|
rqa.Nullable(rqa.SimpleValue.str),
|
|
264
|
-
doc="The file we should load first in an
|
|
267
|
+
doc="The file we should load first in an assignment",
|
|
265
268
|
),
|
|
266
269
|
rqa.OptionalArgument(
|
|
267
270
|
"grading",
|
|
@@ -286,6 +289,11 @@ class PatchAssignmentData:
|
|
|
286
289
|
parsers.ParserFor.make(FixedGradeAvailability),
|
|
287
290
|
doc="The grade availability of this assignment.",
|
|
288
291
|
),
|
|
292
|
+
rqa.OptionalArgument(
|
|
293
|
+
"submission_mode",
|
|
294
|
+
rqa.EnumValue(AssignmentSubmissionMode),
|
|
295
|
+
doc="The submission mode of this assignment",
|
|
296
|
+
),
|
|
289
297
|
).use_readable_describe(True)
|
|
290
298
|
)
|
|
291
299
|
|
|
@@ -321,6 +329,7 @@ class PatchAssignmentData:
|
|
|
321
329
|
self.grading = maybe_from_nullable(self.grading)
|
|
322
330
|
self.availability = maybe_from_nullable(self.availability)
|
|
323
331
|
self.grade_availability = maybe_from_nullable(self.grade_availability)
|
|
332
|
+
self.submission_mode = maybe_from_nullable(self.submission_mode)
|
|
324
333
|
|
|
325
334
|
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
326
335
|
res: t.Dict[str, t.Any] = {}
|
|
@@ -378,6 +387,8 @@ class PatchAssignmentData:
|
|
|
378
387
|
res["availability"] = to_dict(self.availability.value)
|
|
379
388
|
if self.grade_availability.is_just:
|
|
380
389
|
res["grade_availability"] = to_dict(self.grade_availability.value)
|
|
390
|
+
if self.submission_mode.is_just:
|
|
391
|
+
res["submission_mode"] = to_dict(self.submission_mode.value)
|
|
381
392
|
return res
|
|
382
393
|
|
|
383
394
|
@classmethod
|
|
@@ -411,6 +422,7 @@ class PatchAssignmentData:
|
|
|
411
422
|
grading=parsed.grading,
|
|
412
423
|
availability=parsed.availability,
|
|
413
424
|
grade_availability=parsed.grade_availability,
|
|
425
|
+
submission_mode=parsed.submission_mode,
|
|
414
426
|
)
|
|
415
427
|
res.raw_data = d
|
|
416
428
|
return res
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""The module that defines the ``SimpleSubmissionModeEnabledSetting`` model.
|
|
2
|
+
|
|
3
|
+
SPDX-License-Identifier: AGPL-3.0-only OR BSD-3-Clause-Clear
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import typing as t
|
|
7
|
+
from dataclasses import dataclass, field
|
|
8
|
+
|
|
9
|
+
import cg_request_args as rqa
|
|
10
|
+
|
|
11
|
+
from ..utils import to_dict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class SimpleSubmissionModeEnabledSetting:
|
|
16
|
+
""" """
|
|
17
|
+
|
|
18
|
+
name: "t.Literal['SIMPLE_SUBMISSION_MODE_ENABLED']"
|
|
19
|
+
value: "t.Optional[bool]"
|
|
20
|
+
|
|
21
|
+
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
22
|
+
|
|
23
|
+
data_parser: t.ClassVar = rqa.Lazy(
|
|
24
|
+
lambda: rqa.FixedMapping(
|
|
25
|
+
rqa.RequiredArgument(
|
|
26
|
+
"name",
|
|
27
|
+
rqa.StringEnum("SIMPLE_SUBMISSION_MODE_ENABLED"),
|
|
28
|
+
doc="",
|
|
29
|
+
),
|
|
30
|
+
rqa.RequiredArgument(
|
|
31
|
+
"value",
|
|
32
|
+
rqa.Nullable(rqa.SimpleValue.bool),
|
|
33
|
+
doc="",
|
|
34
|
+
),
|
|
35
|
+
).use_readable_describe(True)
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
39
|
+
res: t.Dict[str, t.Any] = {
|
|
40
|
+
"name": to_dict(self.name),
|
|
41
|
+
"value": to_dict(self.value),
|
|
42
|
+
}
|
|
43
|
+
return res
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_dict(
|
|
47
|
+
cls: t.Type["SimpleSubmissionModeEnabledSetting"],
|
|
48
|
+
d: t.Dict[str, t.Any],
|
|
49
|
+
) -> "SimpleSubmissionModeEnabledSetting":
|
|
50
|
+
parsed = cls.data_parser.try_parse(d)
|
|
51
|
+
|
|
52
|
+
res = cls(
|
|
53
|
+
name=parsed.name,
|
|
54
|
+
value=parsed.value,
|
|
55
|
+
)
|
|
56
|
+
res.raw_data = d
|
|
57
|
+
return res
|
|
@@ -138,6 +138,7 @@ from .lti_enabled_setting import LtiEnabledSetting
|
|
|
138
138
|
from .lti_first_launch_content_id_enabled_setting import (
|
|
139
139
|
LtiFirstLaunchContentIdEnabledSetting,
|
|
140
140
|
)
|
|
141
|
+
from .lti_launch_data_logging_setting import LtiLaunchDataLoggingSetting
|
|
141
142
|
from .lti_lock_date_copying_enabled_setting import (
|
|
142
143
|
LtiLockDateCopyingEnabledSetting,
|
|
143
144
|
)
|
|
@@ -235,6 +236,9 @@ from .server_time_correction_enabled_setting import (
|
|
|
235
236
|
from .server_time_diff_tolerance_setting import ServerTimeDiffToleranceSetting
|
|
236
237
|
from .server_time_sync_interval_setting import ServerTimeSyncIntervalSetting
|
|
237
238
|
from .setting_token_time_setting import SettingTokenTimeSetting
|
|
239
|
+
from .simple_submission_mode_enabled_setting import (
|
|
240
|
+
SimpleSubmissionModeEnabledSetting,
|
|
241
|
+
)
|
|
238
242
|
from .site_email_setting import SiteEmailSetting
|
|
239
243
|
from .sso_infer_global_staff_role_setting import SsoInferGlobalStaffRoleSetting
|
|
240
244
|
from .sso_username_decollision_enabled_setting import (
|
|
@@ -368,6 +372,8 @@ SiteSettingInput = t.Union[
|
|
|
368
372
|
InlineRubricViewerEnabledSetting,
|
|
369
373
|
LtiFirstLaunchContentIdEnabledSetting,
|
|
370
374
|
SubmissionsPageV2EnabledSetting,
|
|
375
|
+
SimpleSubmissionModeEnabledSetting,
|
|
376
|
+
LtiLaunchDataLoggingSetting,
|
|
371
377
|
]
|
|
372
378
|
SiteSettingInputParser = rqa.Lazy(
|
|
373
379
|
lambda: make_union(
|
|
@@ -484,5 +490,7 @@ SiteSettingInputParser = rqa.Lazy(
|
|
|
484
490
|
ParserFor.make(InlineRubricViewerEnabledSetting),
|
|
485
491
|
ParserFor.make(LtiFirstLaunchContentIdEnabledSetting),
|
|
486
492
|
ParserFor.make(SubmissionsPageV2EnabledSetting),
|
|
493
|
+
ParserFor.make(SimpleSubmissionModeEnabledSetting),
|
|
494
|
+
ParserFor.make(LtiLaunchDataLoggingSetting),
|
|
487
495
|
),
|
|
488
496
|
)
|
|
@@ -26,7 +26,7 @@ class UpdatePeerFeedbackSettingsAssignmentData:
|
|
|
26
26
|
#: Should peer feedback comments by default be approved.
|
|
27
27
|
auto_approved: "bool"
|
|
28
28
|
#: Should we redivide when a user submits its first submission or its last
|
|
29
|
-
#: submission is deleted after
|
|
29
|
+
#: submission is deleted after the deadline? If this is `False` it might
|
|
30
30
|
#: happen that some users are reviewed by less or more than `amount` of
|
|
31
31
|
#: students.
|
|
32
32
|
redivide_after_deadline: "bool" = True
|
|
@@ -61,7 +61,7 @@ class UpdatePeerFeedbackSettingsAssignmentData:
|
|
|
61
61
|
rqa.SimpleValue.bool,
|
|
62
62
|
doc=(
|
|
63
63
|
"Should we redivide when a user submits its first"
|
|
64
|
-
" submission or its last submission is deleted after
|
|
64
|
+
" submission or its last submission is deleted after the"
|
|
65
65
|
" deadline? If this is `False` it might happen that some"
|
|
66
66
|
" users are reviewed by less or more than `amount` of"
|
|
67
67
|
" students."
|
|
@@ -21,7 +21,7 @@ install_requires = \
|
|
|
21
21
|
|
|
22
22
|
setup_kwargs = {
|
|
23
23
|
'name': 'codegrade',
|
|
24
|
-
'version': '16.1.
|
|
24
|
+
'version': '16.1.40',
|
|
25
25
|
'description': 'A client library for accessing CodeGrade',
|
|
26
26
|
'long_description': '# CodeGrade API\n\nThis library makes it easier to use the CodeGrade API. Its API allows you to\nautomate your usage of CodeGrade. We are currently still busy documenting the\nentire API, but everything that is possible in the UI of CodeGrade is also\npossible through the API.\n## Installation\nYou can install the library through [pypi](https://pypi.org/), simply run\n`python3 -m pip install codegrade`. If you want to get a dev version with support\nfor the latest features, simply email [support@codegrade.com](mailto:support@codegrade.com)\nand we\'ll provide you with a dev version.\n## Usage\nFirst, create a client:\n\n```python\nimport codegrade\n\n# Don\'t store your password in your code!\nwith codegrade.login(\n username=\'my-username\',\n password=os.getenv(\'CG_PASSWORD\'),\n tenant=\'My University\',\n) as client:\n pass\n\n# Or supply information interactively.\nwith codegrade.login_from_cli() as client:\n pass\n```\n\nNow call your endpoint and use your models:\n\n```python\nfrom codegrade.models import PatchCourseData\n\ncourses = client.course.get_all()\nfor course in courses:\n client.course.patch(\n PatchCourseData(name=course.name + \' (NEW)\'),\n course_id=course.id,\n )\n\n# Or, simply use dictionaries.\nfor course in courses:\n client.course.patch(\n {"name": course.name + \' (NEW)\'},\n course_id=course.id,\n )\n```\n\nFor the complete documentation go to\nhttps://python.api.codegrade.com.\n## Backwards compatibility\nCodeGrade is constantly upgrading its API, but we try to minimize backwards\nincompatible changes. We\'ll announce every backwards incompatible change in the\n[changelog](http://codegrade.com/changelog). A new version of the API\nclient is released with every release of CodeGrade, which is approximately every\nmonth. To upgrade simply run `pip install --upgrade codegrade`.\n## Supported python versions\nWe support python 3.6 and above, `pypy` is currently not tested but should work\njust fine.\n## License\nThe library is licensed under AGPL-3.0-only or BSD-3-Clause-Clear.',
|
|
27
27
|
'author': 'None',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|